|      1iseki      2023-01-19 22:07:26 +08:00 为什么要用 wireguard 呢,仅供参考,自己测试好再上,默认不做 masquerade 就不会动源 IP: iptables -L PREROUTING -t nat -p tcp --dport -j DNAT --to-destination 10.0.0.1:1234 echo 1 > /proc/sys/net/ipv4/ip_forward | 
|      2iseki      2023-01-19 22:07:48 +08:00 -L -> -I (手滑了 | 
|      3edis0n0 OP 试过在反代服务器配 iptables -t nat -A PREROUTING -p tcp -d 10.0.0.20 --dport 80 -j DNAT --to-destination 10.0.0.1:80 然后反代服务器直接失联了,重启才恢复 | 
|      5iseki      2023-01-19 22:10:23 +08:00 不对啊,你这样改完,你不动源 IP ,数据回不去了嘛 | 
|      8SAGAN      2023-01-19 22:12:51 +08:00  2 理论上应该可以做到吧。需要用到 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 | 
|      9edis0n0 OP @iseki #5 可能是别的规则导致的失联,下午瞎折腾加了十几条 iptables 规则,又试了下#1 这个规则,tcpdump 没抓到任何的包,不知道为什么没转发过去 | 
|      10iseki      2023-01-19 22:13:58 +08:00 唔,原来是为了这个才上 wireguard 啊 | 
|      11taikobo      2023-01-19 22:14:53 +08:00 DNAT 和 SNAT 要配套使用吧 瞄了一眼 openwrt LUCI 里加的规则,SNAT+DNAT | 
|      12bugfan      2023-01-19 22:33:46 +08:00 | 
|  |      13defunct9      2023-01-20 14:27:42 +08:00 开 ssh ,让我上去看看 | 
|  |      14pagxir      2023-01-20 16:08:00 +08:00 via Android 建议使用 ipsec 传输模式,这样 app 层就可以正常看到 IP 头,并且不影响路由 |