docker将容器暴露在路由器局域网中
文章目录
在群晖的 docker 上启动了一个 Ubuntu 容器,希望将这个 Ubuntu 容器的网关设置到旁路由上,以实现透明代理。
这个事问了下 ChatGPT,给的答案不靠谱,这里也不再赘述。经过网上查找,发现还是有人有跟我一样的需求的。这里参考了几篇文章,再将方法整理备份下。
- 群晖创建桥接网络-使容器和路由器一个网段 | sleele的博客
- unRAID 直连软路由时 Docker 容器 分离国内外网 - Chinese / 简体中文 - Unraid
- docker使容器和宿主机使用同一网段 | hysyeah
- 旁路由及docker容器独立旁路由访问-老李不着调的记事本
这个功能依赖内核的 macvlan、ipvlan 功能。
其中 macvlan 在 3.10 版本以上的内核支持,而 ipvlan 则在 4.2 版本的内核之上才支持。我的群晖版本是 7.2,其内核为 3.10,因此只能使用 macvlan。
如果内核没有加载 macvlan 模块,那么首先使用命令加载。
|
|
之后打开当前群晖网卡的混杂模式,对群晖来说,使用的网卡名一般是 ovs_eth0
。
|
|
如果不确定自己使用的是哪个网卡,可以使用 ifconfig
命令确认 下。
|
|
之后使用 docker 命令创建一个自定义网络。
|
|
之后启动容器,并使用该自定义网络,同时可以使用 --ip
参数指定容器的 IP。
|
|
启动容器后进入容器,确定是否可以经旁路由上网。
注意事项
使用上述方式配置好容器后,容器可以和局域网下的其他设备进行通信,但是无法与容器的宿主机进行通信,基于网上的资料来看,说是安全方面的考虑。不过也是其他方法绕过的。
查了一些资料,后续有需要可以参考,目前我没有尝试。