Ich habe einen LXC-Container ( 10.0.3.2
), der auf einem Host ausgeführt wird. Im Container am Port wird ein Dienst ausgeführt 7000
.
Vom Host ( 10.0.3.1
, lxcbr0
) aus kann ich den Service erreichen:
$ telnet 10.0.3.2 7000
Trying 10.0.3.2...
Connected to 10.0.3.2.
Escape character is '^]'.
Ich würde gerne den Dienst, der im Container läuft, der Außenwelt zugänglich machen. Daher möchte ich den Port 7002
auf dem Host an den Port 7000
auf dem Container weiterleiten :
iptables -t nat -A PREROUTING -p tcp --dport 7002 -j DNAT --to 10.0.3.2:7000
Was zu ( iptables -t nat -L
) führt:
DNAT tcp -- anywhere anywhere tcp dpt:afs3-prserver to:10.0.3.2:7000
Trotzdem kann ich vom Host über den weitergeleiteten Port nicht auf den Dienst zugreifen:
$ telnet 10.0.3.1 7002
Trying 10.0.3.1...
telnet: Unable to connect to remote host: Connection refused
Ich habe das Gefühl, dass mir hier etwas Dummes fehlt. Welche Dinge soll ich überprüfen? Was ist eine gute Strategie, um diese Situationen zu debuggen?
Der Vollständigkeit halber iptables
werden die Hosts wie folgt eingestellt:
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
Kette. Überprüfen Sie auch, ob die IP-Weiterleitung aktiviert ist : cat /proc/sys/net/ipv4/ip_forward
.
ip_forward
ist eingestellt auf1
FORWARD
Politik ist auchACCEPT
INPUT
Kette überprüft ? Vielleicht ist die PolitikREJECT
da.