环境准备:
1、主路由
2、配置为旁路由的 Linux 设备(推荐用 Debian、Ubuntu、CentOS,不推荐 OpenWrt)
3、主路由配置子网段
假定:
IP:192.168.0.1
MASK:255.255.255.0
GW:192.168.0.1
4、配置旁路由 Linux 设备的IP设定
假定:
IP:192.168.0.20
MASK:255.2555.255.0
GW:192.168.0.1(主路由)
5、打开IPV4报文转发
临时开启:
方法一:echo 1 > /proc/sys/net/ipv4/ip_forward
方法二:sysctl -w net.ipv4.ip_forward=1
生效配置:
sysctl -p
永久配置自己改改,本文只说临时路由配置。
6、配置路由规则
指示接收并处理来自 192.168.0.0/24 主路由子网内的报文转发。
iptables -A FORWARD -s 192.168.0.0/24 -d 0.0.0.0/0 -j ACCEPT
iptables -A FORWARD -s 0.0.0.0/0 -d 192.168.0.0/24 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -p icmp --icmp-type 30 -j ACCEPT
iptables -A OUTPUT -p icmp --icmp-type 30 -j ACCEPT
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j SNAT --to 192.168.0.20
7、使用主路由其它网络设备,修改网关服务器为:192.168.0.20,进行上网测试。
FAQ:
正确配置,但仍旧无法访问网络,那么您可以检查是否存在 Docker, 若存在,卸载 Docker,这是因为 Docker 会改变,Linux 内核 SNAT 路由配置,这或破坏,旁路由配置。
小提示:
Docker 配置正常的情况下,并不会导致破坏母鸡(宿主)Linux 设备旁路由配置出现故障。
若有可能的情况下,人们应该使用嵌入式的 Debian 操作系统,因为它可以占用更少的资源,挤出更多硬件资源为应用程序、及内核SNAT路由转发服务。