Rob*_*loi 9 iptables port-forwarding lxc
我有一个 LXC 容器 ( 10.0.3.2
) 在主机上运行。服务正在容器内的端口上运行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 '^]'.
Run Code Online (Sandbox Code Playgroud)
我想让外部世界可以访问在容器内运行的服务。因此,我想7002
将主机上的端口转发到7000
容器上的端口:
iptables -t nat -A PREROUTING -p tcp --dport 7002 -j DNAT --to 10.0.3.2:7000
Run Code Online (Sandbox Code Playgroud)
结果是 ( iptables -t nat -L
):
DNAT tcp -- anywhere anywhere tcp dpt:afs3-prserver to:10.0.3.2:7000
Run Code Online (Sandbox Code Playgroud)
尽管如此,我仍无法使用转发端口从主机访问该服务:
$ telnet 10.0.3.1 7002
Trying 10.0.3.1...
telnet: Unable to connect to remote host: Connection refused
Run Code Online (Sandbox Code Playgroud)
我觉得我在这里错过了一些愚蠢的东西。我应该检查哪些事项?调试这些情况的好策略是什么?
为了完整起见,这里是如何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
Run Code Online (Sandbox Code Playgroud)
小智 3
似乎您已阻止 10.0.3.1 上的 7002 端口,因为您的默认策略是 DROP
尝试将其添加到 INPUT 规则中:
iptables -A INPUT -p tcp --dport 7002 -j ACCEPT
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
28009 次 |
最近记录: |