群晖双网口DSM7指定容器网络设置

前提

  • 群晖DS920+双网口
  • 家里有旁路由openwrt:192.168.31.132
  • 群晖LAN1:常规网络,192.168.31.90 网关192.168.31.1
  • 群晖LAN2:走旁路由网关,192.168.31.91 网关192.168.31.132 带机场

创建走LAN2的docker容器网络

1.
查看网卡信息,进入ssh中端输入

1
ip addr

查找LAN2 192.168.31.91对应的网卡名称即ovs_eth1(记下)

2.
创建macvlan网络,还是在ssh,输入以下命令(提示无权限请加上sudo后执行或直接切换su执行)

仅ipv4

1
2
docker network create -d macvlan --subnet=网段 --gateway=网关 -o parent=网卡 网络名称

ipv4+ipv6

1
docker network create -d macvlan --subnet=v4网段 --gateway=v4网关 --ipv6 --subnet=v6网段 --gateway=v6网关  -o parent=网卡 网络名词
  • 网段:我的路由器内网网段是192.168.31.x,填192.168.31.0/24
  • 网关:因为要走旁路由,所有网关设置为旁路由的192.168.31.132
  • 网卡:第1部获取的LAN2网卡名称ovs_eth1
  • 网络名称:随便取,Proxynet(避免后续问题尽量用纯英文)

实例

1
docker network create -d macvlan --subnet=192.168.31.0/24 --gateway=192.168.31.132 -o parent=ovs_eth1 Proxynet

执行完毕在container(docker)中就能看到刚创建的Proxynet网络

创建容器并指定网络

1.
以jellyfin compose为例(docker run大致相同,参数不同)
指定网络

1
2
3
4
networks:
Proxynet:
external:
name: Proxynet

分配ip (注意,要分配一个还未被使用的ip)

1
2
3
networks:
Proxynet:
ipv4_address: 192.168.31.127

写好后重新构建并启动

2.
重新启动稍等片刻后,进入路由界面确认是否正确获得ip地址,并将ip和mac绑定保持后续不变

3.
内网:
内网直接使用地址+端口访问既可以:192.168.31.127:8096(jellyfin默认端口)

外网:
因为直接获得了路由器内网ip,路由器DMZ已经设置了NAS的ip(192.168.31.90),所以需要设置下反代不同的ip而不是之前的仅仅端口反代

相当于外网访问*:8197端口时,会反代到内网的192.168.31.127:8096地址,从而实现外部访问