192.168.72.0/28
내 컴퓨터에서 주소가 있고 모드에서 실행 중인 eth0
동일한 컴퓨터에서 실행되는 컨테이너 로 트래픽을 전달해야 합니다 .172.7.0.4
bridge
라우팅 규칙을 추가해 보았습니다.
ip route add 192.168.72.0/28 via 172.17.0.4
인터페이스에서는 트래픽을 볼 수 있지만 eth0
Docker 컨테이너의 인터페이스에서는 볼 수 없습니다.
DNAT도 시도했지만 운이 없었습니다.
iptables -t nat -I PREROUTING -i eth0 -s 192.168.72.0/28 -j DNAT --to-destination 172.17.0.4
내가 무엇을 놓치고 있나요?
문제는 컨테이너가 브리지에서 실행되고 있고 비표준 이름을 가진 네트워크 인터페이스가 있다는 것입니다. 이 상황에서는 일반적으로 어떤 접근 방식이 사용됩니까?
답변1
/etc/iproute2/rf_tables
추가 아래에 새 라우팅 테이블을 만듭니다.2 connect
그런 다음 다음 명령을 실행합니다.
ip rule add from 192.168.72.0/28 table connect
ip route add default via 172.17.0.4 table connect
172.17.0.4
Docker 컨테이너의 IP는 어디에 있습니까? 귀하의 경우에는 다를 수 있습니다.
iptables
그렇다면 이제 규칙을 따라야 할 때입니다
iptables -A INPUT -s 192.168.72.0/28 -j ACCEPT
iptables -A FORWARD -d 192.168.72.0/28 -j ACCEPT
iptables -A FORWARD -s 192.168.72.0/28 -j ACCEPT
iptables -A OUTPUT -d 192.168.72.0/28 -j ACCEPT
이 시점에서 모든 트래픽은 Docker 컨테이너를 통과하고 정상적으로 작동합니다.