우선 내 영어 실력이 아쉽다
매우 간단한 인프라가 실행되고 있습니다.도커:
container1
:iptables 방화벽;
container2
: https 저장소;
container3
: 앤서블 서버.
컨테이너 1WAN을 통해 나갈 수 있도록 두 개의 인터페이스가 있습니다.이더넷 0다음을 통해 컨테이너 2 및 3과 통신합니다.이더넷 1(근거리 통신망).
질문LAN을 통해 인터넷에 액세스할 수 있어야 합니다(ping -c3 google.com).
container1
- ipv4_forwarding을 설정하고 WAN의 GW를 기본 경로로 설정했습니다(다른 두 컨테이너와 통신하여 인터넷에 연결함).
container2
; container3
- LAN에서는 잘 통신하지만 FW의 IP 주소를 핑할 수 없으므로 WAN에 도달할 수 없습니다... FW의 WAN 서브넷을 전파하기 위해 고정 경로를 설정했는데 이제 핑을 할 수 있습니다.200.200.100.1(Docker의 브리지 인터페이스는 FW 서브넷 GW, FW IP로 사용됩니다.200.200.200.2).
iptables conf가 누락되었거나(아직 아무것도 수행하지 않음) docker 외부 라우팅(호스트의 docker0-docker1 인터페이스 간)을 구성해야 합니까?
필요한 경우 컨테이너 라우팅 테이블을 보낼 수 있습니다. 뭔가 누락되었을 수 있습니다.
친구들이 나를 도와주길 바랍니다.”)
감사합니다.
답변1
LAN 서브넷이 다음과 같다고 가정합니다.10.20.20.0/24(도커 IP 범위) 및 인터넷 인터페이스(WAN)는이더넷 0
dockerbridge가 위치한 호스트에서 다음 명령을 실행합니다. (이 경우 호스트가 방화벽 역할을 합니다.)
# apt install iptables-persistent -y
# iptables -t nat -A POSTROUTING ! -d 10.20.20.0/24 -o eth0 -j MASQUERADE
# iptables -I FORWARD -j ACCEPT
# netfilter-persistent save
# netfilter-persistent reload