컨테이너를 실행하는 서버의 원격 IP인 VPN을 통해 라우팅되는 나가는 트래픽이 있는 Docker 컨테이너에 액세스하려고 합니다. 아래 첨부된 테스트 환경에서 오징어 서버에 접근하려면 역방향 프록시를 사용해야 합니다. 역방향 프록시 없이 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
원격 IP 연결을 통해 특정 포트로의 반환 경로를 제공하려면 VPN 컨테이너 내에 어떤 규칙이나 경로를 추가해야 합니까? 각 열린 포트를 지정하지 않고 서버 원격 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입니다.
기반으로이것답변.