现在,事情不同了,你可以将这个唯一的IP地址配置在你的工作机上的同时,也可以让所有的其它设备使用。
步骤:
现在假设你的BOX有三个网口,分别是两个以太口:eth0,eth1以及一个WIFI口:wlan0,下面是一系列的操作:
你拥有的唯一IP及其配套配置:
地址:192.168.10.79/24
网关:192.168.10.1
1.桥接所有这些口
brctl addbf br0
brctl addif br0 eth0
brctl addif br0 eth1
brctl addif br0 wlan0
2.为br0配置一个IP地址供WIFI使用(省略DHCP POOL以及DNS的配置过程)
接入设备数量限制一下:
ifconfig br0 172.20.1.1/28
3.可选1:为br0增加一个Secondary IP以便成功增加默认路由
ifconfig br0:0 192.168.10.255/23
注意,以上的prefix 23值得说明一下,原始的子网的掩码是255.255.255.0,现将prefix减少1位,此时你就可以使用原始网络中的broadcast地址作为一个IP地址了,这个地址不会和任何地址冲突。
route add default gw 192.168.10.1
4.可选2:使用force-onlink路由直接强制增加路由
ip route add 0.0.0.0/0 via 192.168.10.1 dev br0 onlink
5.增加地址转换规则,凡是WIFI包的源地址都转换成你唯一的那个IP地址
iptables -t mangle -A PREROUTING -m physdev --physdev-in wlan0 -j MARK --set-mark 100
iptables -t nat -A POSTROUTING -m mark --mark 100 -j SNAT --to-source 192.168.10.79
6.可选2的情况下增加arp
由于使用了force-onlink路由,意味着你的BOX上没有和192.168.10.0/24处于同网段的IP地址,那么当往192.168.10.1这个默认网关发包的时候,ARP请求将可能得不到回复,这涉及到默认网关的arp_filter或者等价配置的配置情况,因为arp请求的源是唯一的172.20.1.1这个地址,请求的是地址和它不在一个网段!
因此需要一条arptables规则:
arptables -t mangle -A OUTPUT -d 192.168.10.1 -j mangle --mangle-ip-s 192.168.10.79
事实上在可选1的情况下,你配置了一个192.168.10.255这个地址,对于原始网段来讲,它是一个广播,但是对于BOX来讲,它是一个常规IP,因此ARP请求可以发出,封装的源就是192.168.10.255,也可以正常回来,因为请求中的源是192.168.10.255,到达默认网关192.168.10.1后,与其掩码255.255.255.0相与得到192.168.10.0/24,显然属于同一个网段,检查通过,REPLY返回!
效果:
整个BOX对于你的工作机就是一个HUB,它的工作毫不受到影响!另外BOX上的WIFI独自引出了一个子网,可以让多个设备接入,当这些设备发出的数据包外出时,BOX会将其源IP地址转换为你那唯一的IP地址,ip_conntrack机制可以保证所有的这些设备相关的流的五元组不会重复。
原文链接: https://blog.csdn.net/dog250/article/details/9842279
欢迎关注
微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍;
也有高质量的技术群,里面有嵌入式、搜广推等BAT大佬
原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/408851
非原创文章文中已经注明原地址,如有侵权,联系删除
关注公众号【高性能架构探索】,第一时间获取最新文章
转载文章受原作者版权保护。转载请注明原作者出处!