Tôi có một container LXC ( 10.0.3.2
) đang chạy trên một máy chủ. Một dịch vụ đang chạy bên trong container trên cảng 7000
.
Từ máy chủ ( 10.0.3.1
, lxcbr0
), tôi có thể tiếp cận dịch vụ:
$ telnet 10.0.3.2 7000
Trying 10.0.3.2...
Connected to 10.0.3.2.
Escape character is '^]'.
Tôi muốn làm cho dịch vụ chạy bên trong container có thể tiếp cận được với thế giới bên ngoài. Do đó, tôi muốn chuyển tiếp cổng 7002
trên máy chủ sang cổng 7000
trên container:
iptables -t nat -A PREROUTING -p tcp --dport 7002 -j DNAT --to 10.0.3.2:7000
Kết quả nào trong ( iptables -t nat -L
):
DNAT tcp -- anywhere anywhere tcp dpt:afs3-prserver to:10.0.3.2:7000
Tuy nhiên, tôi không thể truy cập dịch vụ từ máy chủ bằng cổng chuyển tiếp:
$ telnet 10.0.3.1 7002
Trying 10.0.3.1...
telnet: Unable to connect to remote host: Connection refused
Tôi cảm thấy như tôi đang thiếu một cái gì đó ngu ngốc ở đây. Những điều tôi nên kiểm tra? Một chiến lược tốt để gỡ lỗi những tình huống này là gì?
Để hoàn thiện, đây là cách iptables
thiết lập trên máy chủ:
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
chuỗi. Đồng thời kiểm tra xem chuyển tiếp IP có được kích hoạt không : cat /proc/sys/net/ipv4/ip_forward
.
ip_forward
được đặt thành1
FORWARD
chính sách cũng làACCEPT
INPUT
chuỗi? Có lẽ chính sách làREJECT
có.