|
本帖最后由 clion007 于 2023-5-31 01:40 编辑
1、背景情况:主机有两个单口网卡,一个网口直通给了软路由作为路由器的wan口,另一个是虚拟br0给了软路由的lan口,软路由是通过虚拟机安装部署的,unraid的管理口和软路由lan口共用br0,unraid网络管理里面eth0绑定了br0网桥(尝试过不绑定虚拟机用不了),然后尝试了添加其他虚拟机,是可以通过br0虚拟网卡分配更多的网卡地址,并能正常获取路由器分配的IP。
2、问题描述:最近在unraid 的docker下尝试部署Nginx等Web环境,由于unraid本身GUI已经占用了80端口,因此,有必要给Nginx指定另外一个与宿主机同网段的IP地址,因此考虑使用docker下macvlan虚拟br0网卡的方式,为Nginx指定分配IP,docker高级设置中进行了如下设置,并自动生成与宿主机同网段的br0自定义网络配置。创建好Nginx容器后能启动,检测docker的网络,网关和IP都没问题,docker容器与宿主机及路由器都能互ping通,但是奇怪的是路由器的路由表里面获取不到Nginx容器的网卡地址及IP信息,另外,路由器下面的其他主机(电脑、手机等都试过)无法ping通Nginx容器,也无法访问web服务器。
3、更多测试情况:经过测试,发现Nginx容器里面是可以ping通路由器下的其他电脑等主机的,并且在nginx容器下ping通外部主机后,外部主机就能正常访问web服务器了,也能ping通nginx容器,路由器手动ping通nginx容器或者容器ping通路由器后,路由器的ARP路由表里面就会显示nginx容器的虚拟网卡地址及IP地址信息,这些信息和连通的状态会在docker重启后消失。并且很奇怪的是,在有ping通任何一台外部主机后,在外部主机访问web服务器或者连续ping连接的状态下,其他未被容器ping通过的终端设备就能访问web服务器或者ping通nginx容器IP了。另外,还进行了很多尝试,包括手动创建macvlan虚拟网卡指定parent为eth0、eth0的子接口如eth0.1、br0或者虚拟子接口br0.1等(unraid默认生成的macvlan的父接口是br0),或者用ipvlan等方式都试过,情况都一样无法正确访问。
4、由于对docker虚拟网卡的了解有限,查了很多资料未能找到解决的方法,不知道是不是因为unraid的br0同时虚拟给了软路由的lan口,导致再虚拟给docker就会有问题(虚拟给其他虚拟机不会有问题,不知道什么原因)?请教各位大神,在不增加网卡硬件接口的情况下,是否有能让同一个br0再虚拟给docker直接分配路由器同网段IP的方法?感谢!
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
×
|