WireGuard全局代理
知道WireGuard可以代理全局,需要在client.conf
中指明
1 | AllownIPs = 0.0.0.0/0 # 不考虑IPv6 |
在服务器端使用tcpdump -i tun1
可以看到来自client的请求包,但都没有回应。这个问题困扰了好久,后来发现可以和server的LAN IP通信,于是才有了通过WireGuard创建的局域网来访问服务器端的Shadowsocks服务,这样就规避了上面的问题。
昨天夜里睡了之后,想之前看WireGuard的论文,说服务端也会检查AllowIPs来决定是否要发送出去,以为把服务端Client Peer的AllownIPs也改成0.0.0.0/0
就能通,其实也有顾虑,因为从之前的经验来看,显然wg会根据这个地址来决定给谁发去,如果多于一个client,有人是4个0,那是不是全都发给4个0的,其他的没有?抑或其他的也发,一个包像局域网一样给每个匹配的复制一份发出去?
1 | [Peer] # Client |
事实证明还是不工作。在弄了一会儿iptables之后,觉得说得通的结果证明确实是有效的:
1 | iptables -A FORWARD -i tun1 -o eth0 -j ACCEPT |
再看wg的PostUp
和PostDown
就更清楚了
1 | PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -A FORWARD -o %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE |