大家好,又见面了,我是你们的朋友全栈君。
最近在玩旁路由,踩了一些坑,也学习了点相关知识,特整理记录下。
一、旁路由的配置
上图是旁路由的连接方式,一般作为旁路由的只有一个LAN口,可以把它想成一个普通的连接路由器的电脑。让他们ip在一个网段即可,比如主路由网关192.168.3.1,旁路由配置成192.168.3.2
1.主路由配置:DHCP配置中把网关和DNS改成旁路由ip地址,如192.168.3.2。
2.旁路由配置:关闭DHCP,把网关改成主路由地址,如192.168.3.1,关闭桥接模式,其他什么子网掩码,广播地址就不说了。
说明:还有的人是关闭主路由dhcp,开启旁路由dhcp,个人是不推荐这种做法的,虽然dhcp只是一个ip分配器,差别只是谁分配ip的问题,但是我们使用旁路由,就是想对主路由影响最小。如上配置后,撤掉旁路由后或者旁路由出现问题,只要改下主路由的dhcp网关,重启下就可以了,很方便。
这样配置后,网络流量如下图:
科学流量经过处理,会进行nat,这样上行和下行都会走旁路由进行加密和解密。
普通流量只是上行经过旁路由转发一下,ip不会改变;下行的时候主路由发现ip包是电脑,会直接发过去。
正常这样处理是比较完美的,旁路由只加解密科学流量,但是有些路由器这么配置,国内流量是无法上网的,只有国外的没问题,必须要配置一条防火墙规则才行。
代码语言:javascript复制iptables -t nat -I POSTROUTING -j MASQUERADE
这是为什么呢?
出现问题的一般都是华为,小米,360等主路由器(发现他们都有个共同特征-不能配置dhcp网关),究其本质原因是,这些路由器会校验数据包的ip和mac地址的对应关系。国内包的上行经过旁路由转发给主路由时,主路由发现旁路由发过来的数据包ip不是它自己的,校验失败,所以图中普通流量那条路就不通了。
然后加了防火墙规则为啥就可以了呢,上边那条规则的意思是执行SNAT功能,就是把数据包的源ip改成当前机器的,也就是旁路由的ip,而且还是动态改变(防止旁路由ip是动态?)。这样配置后,网络流量变成下图了:
这样旁路由其实就是一个没有路由功能的二级路由器了,你会发现在你迅雷等高速下载的时候旁路由的cpu会异常的高,都用来nat了,而不是最初旁路由的目的–只加解密科学流量。
还有的一种设置方法是不用加防火墙规则,旁路由加一个wan口,共用一个etho网口,这样我理解其实就是单臂路由吧?其实和上边差不多的。
查看有没有设置正确的方法很简单
1.迅雷等高速下载的时候看cpu占用是不是很高
2.比较靠谱的一种,看上下行的流量,正确配置的话,旁路由的上行是大于下行的,如果上下相同且数据流量很大(高速下载时候比较明显),则配置有问题。
这是下载速度:
正确配置的上下行速度和cpu占用:
错误配置的上下行速度和cpu占用:
3.最最靠谱的是去主路由看联网设备信息,会发现该设备的ip是电脑的,但是mac地址是软路由的
当然,如果用的主路由是华为、小米、360等,那没辙,只能用上述加防火墙规则或者加wan口,采用nat的方式避免它的检验(这样还不如弄成二级路由省时省心),或者换一个主路由器。
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/130484.html原文链接:https://javaforall.cn