openvpn-client 后面暴露的 docker 端口的返回路由

openvpn-client 后面暴露的 docker 端口的返回路由

我正在尝试访问一个 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。
基于回答。

相关内容