SAGAN
2023-01-19 22:12:51 +08:00
理论上应该可以做到吧。需要用到 wireguard 隧道,否则回程的流量源服务器会直接发送给客户端,然后被客户端丢弃。
假设反代(eth0: 1.2.3.4, wg0: 10.0.0.1/24) <--> 源(eth0: 2.3.4.5, wg0: 10.0.0.2/24)。服务运行在 tcp/80 端口。
首先两台服务器都需要打开 ipv4 forward (net.ipv4.ip_forward=1)
反代:
iptables -t mangle -A PREROUTING -p tcp --dport 80 -m mark --set-mark 0x1/0x1 -j ACCEPT
iptables -t nat -A PREROUTING -m mark --mark 0x1/0x1 -j DNAT --to 2.3.4.5
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
ip rule add fwmark 0x1/0x1 table 10
ip route add default via 10.0.0.1 table 10
源:
iptables -t mangle -A PREROUTING -j CONNMARK --restore-mark
iptables -t mangle -A PREROUTING -p tcp --dport 80 -m mark --set-mark 0x1/0x1 -j ACCEPT
iptables -t mangle -A POSTROUTING -j CONNMARK --save-mark
ip rule add fwmark 0x1/0x1 table 10
ip route add default via 10.0.0.2 table 10