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