我在端口8090的机器上运行Docker容器。假设该机器的IP地址是192.168.0.3 。 我想转发192.168.0.4:80到192.168.0.3:8090 。 机器是并且可能只能从本地networking内访问。
我试过了:
/ip firewall nat export add action=dst-nat chain=srcnat dst-address=192.168.0.4 dst-port=80 \ src-address=192.168.0.0/24 to-address=192.168.0.3 to-port=8090 \ protocol=tcp add action=masquerade chain=srcnat dst-address=192.168.0.4 dst-port=80 \ src-address=192.168.0.0/24 protocol=tcp
这不起作用。
我忘了什么吗? 我有这样的感觉,我忽略了一些简单的东西,但一直没有弄清楚什么。
IP地址192.168.0.4不能parsing到我的networking中的任何东西。 我只是想“分配”并转发到192.168.0.3:8090 。 原因是我想设置一个本地域名parsing到Docker容器,而不必指定一个端口。
您的本地networking中的计算机尝试直接在自己的子网内访问IP地址。 因此,IP地址为192.168.0.105的计算机(“工作站”)将在尝试到达192.168.0.4时忽略默认网关,并尝试直接发送tcp软件包。
如果没有其他计算机正在应答属于192.168.0.4的MAC地址的工作站呼叫(“ARP请求”),则这将失败,因为此IP地址在您的本地networking中未被使用,所以没有人会回答。
你有如何解决它有各种select:
192.168.0.4添加到防火墙的接口上,并使用防火墙重新路由这些包 192.168.0.4添加到您的docker-host上的接口,并在docker-host本身上redirectstream量 192.168.0.3而不是192.168.0.4 其他选项可能存在。