首先,让我解释一下我的设置:我在 macOS 上的虚拟机中安装了 Ubuntu 14.04。在 VirtualBox 设置中,我创建了一个 NAT 网络,并为 Ubuntu 提供了以下 IP 地址:192.168.56.101
。在 Ubuntu 内部,我安装了 Docker。我创建了一个 Docker 容器,它运行一个监听的 python 服务器127.0.0.1:5001
。Docker 文件公开了端口5001
,以便可以从外部访问它。我还添加了以下 iptable 规则:
IPT=/bin/iptables
$IPT -P OUTPUT ACCEPT
$IPT -P INPUT ACCEPT
$IPT -P FORWARD ACCEPT
$IPT -t nat -P OUTPUT ACCEPT
$IPT -t nat -P PREROUTING ACCEPT
$IPT -t nat -P POSTROUTING ACCEPT
$IPT -t nat -A PREROUTING -p tcp -i eth1 --dport 5001 -d 192.168.56.101 -j DNAT --to 127.0.0.1:5001
现在,当我尝试从主机或 Ubuntu 连接它时,它显示连接被拒绝。有人能告诉我这里的问题是什么吗?
答案1
我通过添加此规则解决了我的问题:
$IPT -t nat -A OUTPUT -p tcp --dport 5001 -j DNAT --to-destination 127.0.0.1:5001