![使用透明 Web 资源缓存构建路由器](https://linux22.com/image/119442/%E4%BD%BF%E7%94%A8%E9%80%8F%E6%98%8E%20Web%20%E8%B5%84%E6%BA%90%E7%BC%93%E5%AD%98%E6%9E%84%E5%BB%BA%E8%B7%AF%E7%94%B1%E5%99%A8.png)
网络接口配置
192.168.0.0 Out 1(enp10s0f0) - Local 01(enp10s0f1) 192.168.10.0
- Local 02(enp10s0f2)
- Local 03(enp10s0f3)
59.27.1.128 Out 2(enp11s0f0) - Local 04(enp11s0f1) 192.168.11.0
- Local 05(enp11s0f2)
- Local 06(enp11s0f3)
出站有2条线路。每条线路与当地人共享其出站连接。输出 1 => 本地 01~02,输出 2 => 本地 03~04
所以我编写了一个脚本来配置 iptables,如下所示
iptables -t nat -A POSTROUTING -o enp10s0f0 -j MASQUERADE -s 192.168.10.0/24
iptables -t nat -A POSTROUTING -o enp11s0f0 -j MASQUERADE -s 192.168.11.0/24
iptables -A FORWARD -i enp10s0f0 -o enp10s0f1 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i enp10s0f0 -o enp10s0f2 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i enp10s0f0 -o enp10s0f3 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i enp10s0f1 -o enp10s0f0 -j ACCEPT
iptables -A FORWARD -i enp10s0f2 -o enp10s0f0 -j ACCEPT
iptables -A FORWARD -i enp10s0f3 -o enp10s0f0 -j ACCEPT
iptables -t mangle -A PREROUTING -i enp10s0f1 -p tcp -m tcp --dport 80 -j TPROXY --on-ip 0.0.0.0 --on-port 8080 --tproxy-mark 0x1/0x1
iptables -t mangle -A PREROUTING -i enp10s0f2 -p tcp -m tcp --dport 80 -j TPROXY --on-ip 0.0.0.0 --on-port 8080 --tproxy-mark 0x1/0x1
iptables -t mangle -A PREROUTING -i enp10s0f3 -p tcp -m tcp --dport 80 -j TPROXY --on-ip 0.0.0.0 --on-port 8080 --tproxy-mark 0x1/0x1
iptables -t mangle -A PREROUTING -i enp10s0f0 --source 192.168.10.0/24 -j ACCEPT
iptables -t mangle -A PREROUTING -i enp10s0f0 --destination 192.168.10.0/24 -j ACCEPT
iptables -t mangle -A PREROUTING -i enp10s0f0 -p tcp -m tcp --sport 80 -j MARK --set-mark 0x1/0x1
ip rule add fwmark 0x1/0x1 table 2
ip route add local 0.0.0.0/0 dev lo table 2
//Do this for enp11, too
但是后来插上的out-line之一却没有按预期工作。 (插入线路后,操作系统会重新配置路由表。因此,仅第一个插入的外线有效。第二个则无效。)连接到另一条外线的本地线路有效。
我猜这是由路由表引起的...但我无法找出问题所在。
这是'iproute'显示的。
default via 59.27.1.129 dev enp11s0f0 proto static metric 2
default via 192.168.0.1 dev enp10s0f0 proto static metric 100
59.27.1.128/26 dev enp11s0f0 proto kernel scope link src 59.27.1.176 metric 2
169.254.0.0/16 dev enp11s0f0 scope link metric 2
192.168.0.0/24 dev enp10s0f0 proto kernel scope link src 192.168.0.22 metric 100
192.168.10.0/24 dev enp10s0f1 proto kernel scope link src 192.168.10.251 metric 100
192.168.11.0/24 dev enp11s0f1 proto kernel scope link src 192.168.11.251 metric 2
222.118.178.36 via 59.27.1.129 dev enp11s0f0 proto dhcp metric 2
谢谢。