有没有办法使用 Iptables 通过透明代理路由 VPN 图像?

有没有办法使用 Iptables 通过透明代理路由 VPN 图像?

我有一个包含 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,我就无法连接到任何外部网站。这让我相信该连接无法从互联网获得任何响应。

任何帮助是极大的赞赏。

相关内容