首页 使用Docker部署OpenWRT旁路由
文章
取消

使用Docker部署OpenWRT旁路由

设置网卡

查看网络

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
$ ifconfig
docker0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 172.17.0.1  netmask 255.255.0.0  broadcast 172.17.255.255
        inet6 fe80::42:88ff:fe1a:1fbd  prefixlen 64  scopeid 0x20<link>
        ether 02:42:88:1a:1f:bd  txqueuelen 0  (以太网)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 62  bytes 9179 (9.1 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

eno2: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.1.105  netmask 255.255.255.0  broadcast 192.168.1.255
        inet6 fe80::27fb:f806:4a65:563a  prefixlen 64  scopeid 0x20<link>
        ether 00:e0:70:ef:34:01  txqueuelen 1000  (以太网)
        RX packets 80469  bytes 114226692 (114.2 MB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 22903  bytes 2493642 (2.4 MB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
        device interrupt 19  memory 0x80a00000-80a20000  

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (本地环回)
        RX packets 712  bytes 81234 (81.2 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 712  bytes 81234 (81.2 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

我的机器的网卡是eno2

开启网卡混杂模式

1
ip link set eno2 promisc on

但是重启后N1会失效,永久设置

1
2
vim /etc/rc.local
ip link set eno2 promisc on

重启查看是否生效,首行出现 PROMISC

1
2
3
4
5
6
7
8
9
eno2: flags=4419<UP,BROADCAST,RUNNING,PROMISC,MULTICAST>  mtu 1500
        inet 192.168.1.105  netmask 255.255.255.0  broadcast 192.168.1.255
        inet6 fe80::27fb:f806:4a65:563a  prefixlen 64  scopeid 0x20<link>
        ether 00:e0:70:ef:34:01  txqueuelen 1000  (以太网)
        RX packets 132735  bytes 188186144 (188.1 MB)
        RX errors 0  dropped 17  overruns 0  frame 0
        TX packets 34291  bytes 4998536 (4.9 MB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
        device interrupt 19  memory 0x80a00000-80a20000  

创建Docker虚拟网络

1
docker network create -d macvlan --subnet=192.168.1.0/24 --gateway=192.168.1.1 -o parent=eno2 macnet
  • eno2 为自己实际的网卡名,一般是eth0

  • macnet 为名称,macvlan 为模式,另外请将 192.168.1.0 修改为你自己主路由网段。

查看

1
docker network ls

docker部署

拉取镜像

1
2
docker pull unifreq/openwrt-aarch64 # ARM
docker pull sulinggg/openwrt:x86_64 # x86

启动

1
docker run --restart always -d --name=byls-openwrt --network macnet --privileged sulinggg/openwrt:x86_64 /sbin/init

配置容器网络

进入容器编辑网络配置

1
2
docker exec -it byls-openwrt bash
vi /etc/config/network

修改 lan 部分的配置:ipaddr gateway dns

1
2
3
4
5
6
7
8
9
config interface 'lan'
        option type 'bridge'
        option ifname 'eth0'
        option proto 'static'
        option netmask '255.255.255.0'
        option ip6assign '60'
        option ipaddr '192.168.1.11'
        option gateway '192.168.1.1'
        option dns '192.168.1.1'

配置宿主机和容器通讯

1
2
3
4
5
6
7
8
9
# 宿主机创建一个macvlan
sudo ip link add host2docker(一个网络名称) link eno2(你的物理网卡) type macvlan mode bridge

# 设置macvlan ip 并启用
sudo ip addr add 192.168.1.10 dev host2docker                         
ip link set host2docker up #启用新建网络

# 增加路由表
ip route add 目的ip(需要建立通讯的macvlan容器 ip) dev host2docker(上面宿主机建立的macvlan)

开启samba共享

需要ssh进入openwrt

1
ssh root@192.168.1.11

进入后给要共享的用户设计共享密码,比如要给root用户共享登陆权限

1
smbpasswd -a root

如果没有用户,需要先创建用户

1
2
3
4
5
6
# 没有自带useradd命令,也可以直接编辑 /etc/passwd 替代
opkg install shadow-common shadow-useradd
# 添加用户
useradd byls
# 设置共享密码
smbpasswd -a byls

开启webdav共享

只能共享一个文件夹

参考

  • https://www.kejiwanjia.com/jiaocheng/57242.html

  • https://blog.csdn.net/zhangjingzheng/article/details/120178257

  • https://blog.csdn.net/weixin_44907046/article/details/123144254

  • https://www.bilibili.com/video/av205462504/

本文由作者按照 CC BY 4.0 进行授权