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 7002
pada host ke port 7000
pada 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 iptables
mengatur 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
FORWARD
rantai itu. Juga memeriksa apakah IP forwarding diaktifkan: cat /proc/sys/net/ipv4/ip_forward
.
ip_forward
diatur ke1
FORWARD
kebijakan jugaACCEPT
INPUT
rantai? Mungkin kebijakannyaREJECT
ada di sana.