我正在尝试访问一个 docker 容器,其传出流量通过 VPN、运行容器的服务器的远程 IP 进行路由。如果我想从下面附加的测试环境访问鱿鱼服务器,我必须使用反向代理。当我在没有反向代理的情况下公开 VPN 容器上的端口时,由于 openvpn 的路由,我的请求被卡住而没有答案0.0.0.0/1 via 10.8.8.1 dev tun0
:
netstat #inside vpn
tcp 0 0 :::3128 :::* LISTEN
tcp 0 0 ::ffff:172.17.0.2:3128 ::ffff:{remote_ip}:49936 SYN_RECV
我必须在 VPN 容器内添加哪些规则或路由才能通过远程 IP 连接为特定端口提供返回路由?这可以通过对来自服务器远程 IP 的所有连接使用全局规则来实现,而不指定每个开放端口吗?这些规则不应干扰来自必须通过 VPN 路由的附加容器的流量。
提前非常感谢!
version: "3.4"
services:
vpn:
container_name: vpn
image: dperson/openvpn-client
cap_add:
- net_admin
volumes:
- /dev/net:/dev/net:z
- ./vpn.ovpn:/vpn/vpn.conf
dns:
- 1.1.1.1
#ports:
# - "3128:3128"
vpn_squid:
image: sameersbn/squid
volumes:
- ./squid.conf:/etc/squid/squid.conf
depends_on:
- vpn
network_mode: "service:vpn"
tcp_proxy:
container_name: tcp_proxy
image: tecnativa/tcp-proxy
environment:
LISTEN: ":3128"
TALK: "vpn:3128"
ports:
- "3128:3128"
networks:
default:
答案1
ip rule add from 172.22.0.3 lookup 10
ip route add default via 172.22.0.1 table 10
这样就成功了,其中 172.22.0.3 是 vpn 容器的 IP。
基于这回答。