旁路由NAT规则

旁路由NAT规则_ip地址

旁路由NAT规则_旁路_02

 

它既是旁路,也是路由。

旁路指数据不直接走主干,而是从它这里绕了一圈。

路由当然不必多说,数据经过了它的三层转发。

其作用是在不改变网络拓扑的情况下给数据链路增加一个“中间件”进行一些处理。

 

路由FQ就是基于网关层的透明代理,因为不是所有应用 /设备都能设置 socks/http/https 代理。

然后某些场景下,不希望在主路由上部署网关代理,就只好搞个旁路由。一般有以下原因:

1. 希望在一个局域网中,一部分设备走透明代理,一部分设备走直连

2. 提供透明代理的设备性能不如主路由,或者缺少某些功能

3. 提供透明代理的设备只有一个网口

 



对于这个问题,之前我也不明白为什么都说要加规则,但经过自己实践和查找资料,理解如下:
openwrt作为旁路由,其实可以不添加防火墙规则 iptables -t nat -I POSTROUTING -j MASQUERADE 这个规则的,有的-o eth0选项,只是指定出接口为eth0,视情况而定
解释一下个人理解,如有大神有正确解释,请指正:
1、局域网内数据传输,实际上是二层地址通讯的,即MAC地址
2、openwrt支持ICMP重定向功能3、openwrt作为旁路由,其某些功能是具有正向代理功能的,例如出国,解锁某云音乐
举例: 仅限于单网口旁路由
主路由地址:192.168.1.1 MAC:AA:AA:AA:AA:AA:AA 旁路openwrt:192.168.1.2 MAC BB:BB:BB:BB:BB:BB 网关指向192.168.1.1 PC:192.168.1.100, MAC CC:CC:CC:CC:CC:CC 网关指向旁路 192.168.1.2

情景1:不出国,如只访问网页 80端口
PC将数据包从CC:CC:CC:CC:CC:CC发到192.168.1.2 BB:BB:BB:BB:BB:BB,旁路发现在防火墙规则里并没有需要代理80端口的规则,则按默认路由转发数据,将数据包转发到主路由 AA:AA:AA:AA:AA:AA,并且旁路由发现192.168.1.1与192.168.1.2符合icmp重定向原则,发送icmp重定向包给pc,通知PC有更好的路由,以后PC则直接CC:CC:CC:CC:CC:CC 发送数据包到 AA:AA:AA:AA:AA:AA
数据通信过程如下:
第一次:CC:CC:CC:CC:CC:CC -> BB:BB:BB:BB:BB:BB -> AA:AA:AA:AA:AA:AA 即:PC->旁路由->主路由
以后: CC:CC:CC:CC:CC:CC -> AA:AA:AA:AA:AA:AA 即:PC->主路由

情景2:出国
CC:CC:CC:CC:CC:CC 发送包给 BB:BB:BB:BB:BB:BB ,旁路在规则里发现有代理规则,则通过代理转发数据
数据通信过程如下:
每次:CC:CC:CC:CC:CC:CC -> BB:BB:BB:BB:BB:BB -> AA:AA:AA:AA:AA:AA ,
出国数据实际出口IP地址是192.168.1.2旁路IP地址,即代理过后的地址,也就是iptables -t nat -I POSTROUTING -j MASQUERADE的作用

所以,个人总结如下:
旁路由可以不加iptables -t nat -I POSTROUTING -j MASQUERADE规则,加也可以,但加完之后,无论数据需要不需要出国代理,都会经过旁路由代理,失去了旁路由最初的作用,也不利于不出国数据的最佳路由

而对于二楼贴中,谁开dhcp之类的,我觉得主路由开DHCP还是旁路由开DHCP,都一样,DHCP作用只是用于分配IP地址和网关地址,只要IP地址不分配冲突,分配的网关是指向旁路由,谁开都一样。

ICMP重定向的条件如下
● 数据包进入路由器的接口与数据包被路由出的接口是同一个接口。
● 源 IP 地址的子网或网络与被路由的数据包的下一跳 IP 地址处于同一个子网或网络上。
● 数据报不是源路由的。
● 内核被配置为发送重定向。


 

=========== End