RouterOS Full Cone NAT配置与NAT穿透 – YuS

您所在的位置:网站首页 ros路由命令 RouterOS Full Cone NAT配置与NAT穿透 – YuS

RouterOS Full Cone NAT配置与NAT穿透 – YuS

2024-06-27 02:59| 来源: 网络整理| 查看: 265

大家对full cone nat 很熟悉,因为需要使用nat穿透完成相应的网络映射,也就是大家说的NAT类型1,RouterOS从7.10开始支持full cone nat,仅限支持UDP协议,在RouterOS /ip firewall nat添加设置action选择endpoint-Independent-nat ,如果你要开启路由器的full cone nat仅限UDP协议,其他协议的nat转换还需要使用masquerade来补充,不能独立使用,如下实例:

首先你的RouterOS需要接入一个公网IP地址,例如pppoe拨号,这里配置接口是pppoe-out1,默认的masquerade规则保留,这里以官方默认nat规则为例

[admin@MikroTik] /ip/firewall/nat> print Flags: X - disabled, I - invalid; D - dynamic 0 ;;; defconf: masquerade chain=srcnat action=masquerade out-interface-list=WAN log=no log-prefix="" ipsec-policy=out,none

添加full cone nat规则

[admin@MikroTik] /ip/firewall/nat>add action=endpoint-independent-nat chain=srcnat out-interface=pppoe-out1 protocol=udp [admin@MikroTik] /ip/firewall/nat>add action=endpoint-independent-nat chain=dstnat in-interface=pppoe-out1 protocol=udp

查看配置

[admin@MikroTik] /ip/firewall/nat> print Flags: X - disabled, I - invalid; D - dynamic 0 ;;; defconf: masquerade chain=srcnat action=masquerade out-interface-list=WAN log=no log-prefix="" ipsec-policy=out,none 1 chain=srcnat action=endpoint-independent-nat randomise-ports=no protocol=udp out-interface=pppoe-out1 log=no log-prefix="" 2 chain=dstnat action=endpoint-independent-nat randomise-ports=no protocol=udp in-interface=pppoe-out1 log=no log-prefix=""

配置完成规则后使用move命令,需将full cone规则移动到所有nat规则最前,优先执行

[admin@MikroTik] /ip/firewall/nat>move 1 0 [admin@MikroTik] /ip/firewall/nat>move 2 0 [admin@MikroTik] /ip/firewall/nat> print Flags: X - disabled, I - invalid; D - dynamic 0 chain=dstnat action=endpoint-independent-nat randomise-ports=no protocol=udp in-interface=pppoe-out1 log=no log-prefix="" 1 chain=srcnat action=endpoint-independent-nat randomise-ports=no protocol=udp out-interface=pppoe-out1 log=no log-prefix="" 2 ;;; defconf: masquerade chain=srcnat action=masquerade out-interface-list=WAN log=no log-prefix="" ipsec-policy=out,none

配置full cone nat需要使用两条规则完成,一条srcnat链表和一条dstnat链表,srcnat完成映射行为,dstnat完成过滤行为,Endpoint-Independent NAT 是与端点无关的nat,在过滤行为与外部主机的IP和端口无关,

这样的配置和之前一个大神在github上发布为iptables开发的full cone nat功能很像,由于Linux的netfliter原生并不支持full cone nat需要通过重新编译iptables来加载模块,也有openwrt的版本需要自己编译(https://github.com/Chion82/netfilter-full-cone-nat)配置如下:

iptables -t nat -A POSTROUTING -o eth0 -j FULLCONENAT #same as MASQUERADE iptables -t nat -A PREROUTING -i eth0 -j FULLCONENAT  #automatically restore NAT for inbound packets

Chion82/netfilter-full-cone-nat发布时间很早,反而感觉RouterOS这个操作和他有点类似。

关于Full Cone NAT的原理简单举个例子,例如:

当内网主机192.168.88.8使用1024端口的UDP,向公网主机8.8.8.8请求53端口,在路由器上将内网192.168.88.8:1024通过NAT映射到WAN口IP,假设是19.19.19.19:1024请求8.8.8.8:53,此时,在路由器上开启了19.19.19.19:1024 NAT映射关系到内网192.168.88.8:1024,这个行为是NAT Mapping映射行为,8.8.8.8:53处理完成后回复消息给路由器的WAN口IP :19.19.19.19:1024,会判断是否是该映射表,这种是过滤行为(Filtering),Full Cone NAT允许从外网请求1024端口的IP和端口是任何IP和端口,不做限制。如果你没有看懂,后面会继续说明

关于STUN协议

RouterOS设置endpoint-independent-nat端点无关的NAT类型,在命名上好像和full cone nat无关,但这是第四种NAT类型的补充和修订,与端点无关的NAT类型,这些相关知识从网上整理了一部分:

首先四种NAT分类来至于2003年的rfc3489的STUN协议,STUN通过允许两个设备(P2P设备)发现它们之间NAT的存在和类型,并找出NAT转换的外部IP地址和端口,以便两个设备之间进行P2P通信,也就STUN是定义了如何进行NAT穿透。

STUN最初在2003年的RFC3489(标准)中定义,之后在2008年的RFC 5389(新标准)和2010年的RFC 5780中进行了两次修订。根据RFC 5389,“经典的STUN(RFC 3489)用于分类NAT类型的方法被发现有缺陷,因为许多NAT并不完全符合里面定义的(四种)类型。” 为了解决这个问题,在RFC5389中对经典STUN进行了修改。并且在RFC 5780中,重新定义了NAT类型,并修改了用于分类NAT类型的方法。 RFC 3489和RFC5389使用相同的缩写名称 “STUN”,但他们的具体含义又不同:

RFC 3489: STUN – Simple Traversal of User Datagram Protocol (UDP) Through Network Address Translators (NATs) RFC 5389: STUN – Session Traversal Utilities for NAT

 

RFC5780重新定义NAT类型

RFC5780明确了他们的行为,对于修正后的NAT行为定义,有两大类:

Mapping Behavior-NAT用于outbound行为,即出站,内网IP向外请求使用端口替换的方式,包括:Endpoint-Independent Mapping,Address Dependent Mapping和Address and Port-Dependent Mapping Filtering Behavior-NAT用于inbound行为,即入站,从外网返回或请求目标端口时的nat过滤方式,包括:Endpoint-Independent Filtering,Address-Dependent Filtering和Address and Port-Dependent Filtering Full Cone NAT 全锥NAT 【映射行为】:无论外部主机的目的IP和目的端口是什么,只要源IP和源端口相同,NAT都会将所有出方向的报文转换为相同的端口映射出去。 【过滤行为】:NAT检查入方向目的IP和目的端口时,不关心外部主机的源IP或源端口值。 full cone NAT(RFC 3489)= Endpoint-Independent Mapping (EIM) and Endpoint-Independent Filtering (EIF) RFC 5780.

Restricted Cone 限制锥NAT 【映射行为】:与全锥类型相同 【过滤行为】:外部主机(IP地址)只有在内部主机发起通信后,才能向内部主机发送数据包,不关心外部主机的源端口。 restricted cone NAT(RFC 3489)= Endpoint-Independent Mapping (EIM) and Address-Dependent Filtering (ADF) in RFC 5780.

Port Restricted Cone 端口限制锥NAT 【映射行为】:与全锥类型相同 【过滤行为】:该NAT检查外部主机源IP,源端口与映射是否相同,以决定报文是否通过。。 port restricted cone NAT (RFC 3489)= Endpoint-Independent Mapping (EIM) and Address and Port-Dependent Filtering (APDF) in RFC 5780.

Symmetric 对称NAT 映射行为:该NAT映射会为每个主机连接映射独立的IP和端口 过滤行为:与端口限制锥类型相同 symmetric NAT (RFC 3489)= Address and Port-Dependent Mapping (APDM) and Address and Port-Dependent Filtering (APDF) in RFC 5780.

实际上RFC5780通过对Mapping和Filtering的组合共有9种,远比RFC3489定义的更多:

以上内容可以参考此网站内容,上面还对更多nat相关的rfc内容用图形解释

可能在大部分人理解Linux(包括RouterOS)的masquerade和src-nat的NAT规则是symmetric 对称型NAT,通过测试发现,他们是port restricted cone NAT端口锥型NAT,即:  Endpoint-Independent Mapping (EIM) + Address and Port-Dependent Filtering (APDF) ,映射使用的是EIM方式,过滤使用的是APDF方式。

打赏

取消

感谢您的支持,我会继续努力的!

扫码支持 扫码打赏,你说多少就多少 支付宝 微信

打开支付宝扫一扫,即可进行扫码打赏哦

文章很值,打赏犒劳作者一下 分享 athlon 321RSS订阅 Email:[email protected] 新qq群:920289916 友情链接RosZ云路由管理

Bosheng 的个人日志

RouterOS元芳

RouterOS官网下载

EDC淘宝店

没有理想的人不伤心

双雨林科技

PHP砖家

内容分类 Bridge (17) Cacti (3) Container (5) CRS(Cloud Router Switch) (33) DNS (10) Firewall (19) GPS(卫星定位) (2) Interfaces (5) IP/IPv6 (22) LTE 4G (9) RouterBOARD/CCR (60) Switch (8) System (27) Wireless (30) 其他 (13) 基础 (99) 多线接入 (16) 投票 (3) 新闻中心 (83) 流量控制 Queue (9) 脚本编写 (12) 视频 (105) 路由 (15) 隧道协议 (16) 近期文章 MikorTik CRS320-8P-8B-4S+RM PoE++交换机 MikroTik CRS520-4XS-16XQ-RM 100G三层交换机 RouterOS配置IPv6 NAT66 Netinstall-cli Linux命令行网络安装 官方视频RouterOS脚本基本编写


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3