10.0.3.2
호스트에서 LXC 컨테이너 ( )가 실행 중입니다. 포트의 컨테이너 내부에서 서비스가 실행 중 7000
입니다.
호스트 ( 10.0.3.1
, lxcbr0
)에서 서비스에 연결할 수 있습니다.
$ telnet 10.0.3.2 7000
Trying 10.0.3.2...
Connected to 10.0.3.2.
Escape character is '^]'.
컨테이너 내부에서 실행되는 서비스를 외부 세계에 액세스 할 수있게 만들고 싶습니다. 따라서 7002
호스트의 포트 7000
를 컨테이너의 포트 로 전달하고 싶습니다 .
iptables -t nat -A PREROUTING -p tcp --dport 7002 -j DNAT --to 10.0.3.2:7000
( iptables -t nat -L
)의 결과 :
DNAT tcp -- anywhere anywhere tcp dpt:afs3-prserver to:10.0.3.2:7000
여전히 전달 된 포트를 사용하여 호스트에서 서비스에 액세스 할 수 없습니다.
$ telnet 10.0.3.1 7002
Trying 10.0.3.1...
telnet: Unable to connect to remote host: Connection refused
나는 여기 바보 같은 것을 놓친 것 같은 느낌이 든다. 무엇을 확인해야합니까? 이러한 상황을 디버깅하는 좋은 전략은 무엇입니까?
완전성을 위해 다음 iptables
은 호스트에서 설정되는 방법입니다 .
iptables -F
iptables -F -t nat
iptables -F -t mangle
iptables -X
iptables -P INPUT DROP
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -t nat -A POSTROUTING -o lxcbr0 -j MASQUERADE
iptables -t nat -A PREROUTING -p tcp --dport 7002 -j DNAT --to 10.0.3.2:7000
ACCEPT
FORWARD
사슬을 의미했다 . IP 전달이 활성화되어 있는지 확인하십시오 : cat /proc/sys/net/ipv4/ip_forward
.
ip_forward
로 설정 됨1
FORWARD
정책도ACCEPT
INPUT
체인 을 확인 했습니까 ? 아마도 정책이REJECT
있을 수 있습니다.