RouterOS Full Cone NAT配置与NAT穿透 – YuS |
您所在的位置:网站首页 › ros路由命令 › RouterOS Full Cone NAT配置与NAT穿透 – YuS |
大家对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 packetsChion82/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 NATRFC5780重新定义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.实际上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 |