我已经设置了 Wireguard VPN,通过它我的所有设备都连接到在具有公共 IP 地址(主机)的计算机上运行的 Wireguard 对等体。
我的 Wireguard 设置为让客户端连接到 wg0 上的主机,该主机使用子网 10.10.0.1/24。客户端可以访问在 LAN 中运行的其他服务(例如在 192.168.1.100 上运行的 Web 服务器)以及在 Internet 上运行的其他服务(例如 Google.com)。
wg0.conf
[Interface]
Address = 10.10.0.1/24
ListenPort = 51823
PrivateKey = XXXXXX
客户端配置文件
[Interface]
PrivateKey = XXXXXX
Address = 10.10.0.2/32
DNS = 1.1.1.1
[Peer]
PublicKey = XXXXXX
PresharedKey = XXXXXX
Endpoint = 1.2.3.4:51823
AllowedIPs = 0.0.0.0/0
通过此设置,当我检查 IP 地址时,它会显示 Wireguard 服务器的公共 IP 地址。
我想在这中间添加一个外部 HTTP / HTTPS 代理,它位于 LAN 网络之外的端口 80 / 443 上的所有流量之间。
我想要实现的目标概述如下:
<---------- 10.10.0.1/24 ------------><------------- internet ---------------->
192.168.1.1
10.10.0.2 10.10.0.1 13.14.15.16
---------- -------- --------- -----------------
| client |---tunnel---| host |----http(s)----| proxy |--------| anydomain.com |
---------- -------- \ --------- /-----------------
| \ /
| \------ non-http(s) ------/
|
lan
192.168.1.0/24
|
|
|
---------------
| http server |
| 192.168.1.2 |
---------------
我尝试将iptables
端口 80 和 443 上的所有流量转发到代理服务器,但是代理服务器响应错误“无法检索请求的 URL”。
如何将端口 80 和 443 上的所有流量转发到此外部代理服务器?
--
我尝试过的规则iptables
是:
# enable ip forwarding
sysctl -w net.ipv4.ip_forward=1
# allow traffic on 51823
iptables -I INPUT -p udp --dport 51823 -j ACCEPT
# forward traffic on eth0 to wgo
iptables -I FORWARD -i eth0 -o wg0 -j ACCEPT
# allow traffic on wg0
iptables -I FORWARD -i wg0 -j ACCEPT
# route outgoing traffic on eth0
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
# route all http/https traffic to proxy
iptables -t nat -A PREROUTING -i eth0 -p tcp -m tcp –dport 80 -j DNAT –to-destination 13.14.15.16:8888