Saya memiliki kontainer LXC ( 10.0.3.2) yang berjalan di host. Layanan berjalan di dalam wadah di pelabuhan 7000.
Dari host ( 10.0.3.1, lxcbr0), saya dapat mencapai layanan:
$ telnet 10.0.3.2 7000
Trying 10.0.3.2...
Connected to 10.0.3.2.
Escape character is '^]'.
Saya ingin membuat layanan berjalan di dalam wadah yang dapat diakses oleh dunia luar. Oleh karena itu, saya ingin meneruskan port 7002pada host ke port 7000pada wadah:
iptables -t nat -A PREROUTING -p tcp --dport 7002 -j DNAT --to 10.0.3.2:7000
Yang menghasilkan ( iptables -t nat -L):
DNAT tcp -- anywhere anywhere tcp dpt:afs3-prserver to:10.0.3.2:7000
Namun, saya tidak dapat mengakses layanan dari host menggunakan port yang diteruskan:
$ telnet 10.0.3.1 7002
Trying 10.0.3.1...
telnet: Unable to connect to remote host: Connection refused
Aku merasa kehilangan sesuatu yang bodoh di sini. Hal-hal apa yang harus saya periksa? Apa strategi yang baik untuk men-debug situasi ini?
Untuk kelengkapan, berikut adalah cara iptablesmengatur host:
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
FORWARDrantai itu. Juga memeriksa apakah IP forwarding diaktifkan: cat /proc/sys/net/ipv4/ip_forward.
ip_forwarddiatur ke1
FORWARDkebijakan jugaACCEPT
INPUTrantai? Mungkin kebijakannyaREJECTada di sana.