使用虚拟机Openwrt作为路由,Docker不能上网


Go to solution Solved by marc126,

Recommended Posts

我在虚拟机里面安装了openwrt,连接的br0,设置作为unraid的网关。

openwrt是作为二级旁路由,连接了的是同网段的上级路由

 

问题:Unraid自己可以正常上网,docker能ping通网关,但不能上网

请问有没有解决办法?

Edited by marc126
Link to comment

防火墙设置没有问题:

1、Unraid自己通过openwrt可以上网

2、局域网的其它机器可以通过openwrt上网

仅Unraid里面的docker不能上网

 

其它测试:

我把同样的openwrt部署在外面PVE中全部正常,就是在Unraid中虚拟机不行

 

21 minutes ago, 4dew said:

旁路由防火墙设置对吗?

 

Link to comment

docker用的Bridge,应该默认就是用的unraid的网关

docker的shell能ping通网关,但出不去,而且traceroute能看到在openwrt节点后就断了

unraid的shell中ping和traceroute都正常

22 minutes ago, lyqalex said:

检查unraid设置中网络设置和docker设置是否一个网段及网关,不存在这个情况在pve可以,unraid则行不通的问题。

 

Link to comment
  • Solution

解决了,在openwrt防火墙中加入:

iptables -t nat -I POSTROUTING -o eth0 -j MASQUERADE

猜测:应该是数据包回程的时候没有经过Openwrt网关,直接由一级网关回复给了请求者,然后unraid里面可能有没有把这种数据包转发给bridge中的docker。

不明白:为啥openwrt不部署在unriad虚拟机里面就没有这个问题。

Link to comment
  • 3 months later...
On 5/2/2022 at 10:53 AM, marc126 said:

解决了,在openwrt防火墙中加入:

iptables -t nat -I POSTROUTING -o eth0 -j MASQUERADE

猜测:应该是数据包回程的时候没有经过Openwrt网关,直接由一级网关回复给了请求者,然后unraid里面可能有没有把这种数据包转发给bridge中的docker。

不明白:为啥openwrt不部署在unriad虚拟机里面就没有这个问题。

这是解决办法,需要注意网口的实际名称

Link to comment
  • 3 weeks later...

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.