我有一个包含 VPN 的 docker 镜像。我试图在 VPN 到达网络之前通过透明代理 (squid) 运行该 VPN。代理和 docker 镜像位于同一个 AWS 实例上。端口在 AWS 上正确打开,因为我可以单独确认 VPN 和代理是否正常工作。
- VPN:我通过客户端连接连接到 VPN 来检查这一点。
- 代理:我通过 Firefox 连接并查看 squid access.log 来检查这一点
当我尝试通过代理配置 VPN 的输出时,我无法再通过客户端连接连接到 VPN。如果我已经通过 VPN 连接到客户端并对 iptables 进行了一些更改,我可以看到输出出现在 access.log 文件中,它看起来像这样:*注意,这只是我复制和粘贴的输出文件的一部分。它们看起来大体相同。
1657135083.310 0 XX.XX.XX.XXX NONE_NONE/000 0 - error:transaction-end-before-headers - HIER_NONE/- -
1657135083.317 0 XX.XX.XX.XXX NONE_NONE/400 3739 - error:invalid-request - HIER_NONE/- text/html
1657135083.469 0 XX.XX.XX.XXX NONE_NONE/400 3739 e error:invalid-request - HIER_NONE/- text/html
1657135085.108 0 XX.XX.XX.XXX NONE_NONE/000 0 - error:transaction-end-before-headers - HIER_NONE/- -
1657135085.109 0 XX.XX.XX.XXX NONE_NONE/000 0 - error:transaction-end-before-headers - HIER_NONE/- -
1657135085.596 0 XX.XX.XX.XXX NONE_NONE/400 3739 s error:invalid-request - HIER_NONE/- text/html
1657135088.298 0 XX.XX.XX.XXX NONE_NONE/000 0 - error:transaction-end-before-headers - HIER_NONE/- -
1657135103.475 0 XX.XX.XX.XXX NONE_NONE/400 3739 - error:invalid-request - HIER_NONE/- text/html
1657135103.604 0 XX.XX.XX.XXX NONE_NONE/400 3739 - error:invalid-request - HIER_NONE/- text/html
1657135103.733 0 XX.XX.XX.XXX NONE_NONE/400 3739 - error:invalid-request - HIER_NONE/- text/html
1657135113.464 0 XX.XX.XX.XXX NONE_NONE/000 0 - error:transaction-end-before-headers - HIER_NONE/- -
1657135295.517 0 XX.XX.XX.XXX NONE_NONE/000 0 - error:transaction-end-before-headers - HIER_NONE/- -
1657135300.523 0 XX.XX.XX.XXX NONE_NONE/000 0 - error:transaction-end-before-headers - HIER_NONE/- -
1657135301.524 0 XX.XX.XX.XXX NONE_NONE/000 0 - error:transaction-end-before-headers - HIER_NONE/- -
1657135314.536 0 XX.XX.XX.XXX NONE_NONE/000 0 - error:transaction-end-before-headers - HIER_NONE/- -
1657135323.544 0 XX.XX.XX.XXX NONE_NONE/000 0 - error:transaction-end-before-headers - HIER_NONE/- -
1657135340.562 0 XX.XX.XX.XXX NONE_NONE/000 0 - error:transaction-end-before-headers - HIER_NONE/- -
1657135343.565 0 XX.XX.XX.XXX NONE_NONE/000 0 - error:transaction-end-before-headers - HIER_NONE/- -
1657135343.565 0 XX.XX.XX.XXX NONE_NONE/000 0 - error:transaction-end-before-headers - HIER_NONE/- -
以下是我运行时的 iptable 规则iptables -L
:
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
DOCKER-USER all -- anywhere anywhere
DOCKER-ISOLATION-STAGE-1 all -- anywhere anywhere
ACCEPT all -- anywhere anywhere ctstate RELATED,ESTABLISHED
DOCKER all -- anywhere anywhere
ACCEPT all -- anywhere anywhere
ACCEPT all -- anywhere anywhere
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Chain DOCKER (1 references)
target prot opt source destination
Chain DOCKER-ISOLATION-STAGE-1 (1 references)
target prot opt source destination
DOCKER-ISOLATION-STAGE-2 all -- anywhere anywhere
RETURN all -- anywhere anywhere
Chain DOCKER-ISOLATION-STAGE-2 (1 references)
target prot opt source destination
DROP all -- anywhere anywhere
RETURN all -- anywhere anywhere
Chain DOCKER-USER (1 references)
target prot opt source destination
RETURN all -- anywhere anywhere
的输出iptables -t nat -vnL
为:
Chain PREROUTING (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
3937 222K DOCKER all -- * * 0.0.0.0/0 0.0.0.0/0 ADDRTYPE match dst-type LOCAL
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
39 2340 DOCKER all -- * * 0.0.0.0/0 !127.0.0.0/8 ADDRTYPE match dst-type LOCAL
Chain POSTROUTING (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
12 664 MASQUERADE all -- * !docker0 172.17.0.0/16 0.0.0.0/0
Chain DOCKER (2 references)
pkts bytes target prot opt in out source destination
0 0 RETURN all -- docker0 * 0.0.0.0/0 0.0.0.0/0
我的代理在 3128 上运行(只是一个标准的 squid 代理)。
包括以下命令的组合:(并向每个命令添加端口接口)
sudo iptables -t nat -I PREROUTING -p tcp --dport YYY -j REDIRECT --to-ports 3128
sudo iptables -t nat -I OUTPUT -p tcp -o lo --dport YYY -j REDIRECT --to-ports 3128
sudo iptables -t nat -A POSTROUTING -o YYYY -j MASQUERADE
一旦我放开上述任何 iptable 命令,我就无法再连接到 VPN。如果我已经连接到 VPN,我就无法连接到任何外部网站。这让我相信该连接无法从互联网获得任何响应。
任何帮助是极大的赞赏。