在多网口设备上基于docker部署openwrt软路由(主路由模式)

在多网口设备上基于docker部署openwrt软路由(主路由模式)


分类:玩转Internet       作者:Caq98i       发布时间:2023-07-27       更新时间:2023-08-19阅读量:618    

本文介绍在多网口设备上基于docker部署openwrt主路由,OpenWrt是一个基于Linux的嵌入式操作系统的开源项目,主要用于嵌入式设备上路由网络流量。使用docker相对于虚拟机方案性能损耗更低。使用docker也是all in one方案的一个不错的选择。


本方案在一个Linux多网络主机上使用docker部署openwrt主路由,教程中使用的系统为Debian12系统(因为debian11的系统无法识别我的I226-V网卡)

建议开启系统代理,方便拉取镜像,毕竟国内的网络环境拉取镜像,更新系统的速度感人。或者使用国内软件源和docker仓库。

① 安装docker:

curl -sSL https://get.docker.com/ | sh复制

② 开启网卡的混杂模式:

ip link set enp1s0 promisc on
ip link set enp2s0 promisc on复制

注:这里的 enp1s0 和 enp2s0 都是系统检测到的网络接口,对应了实际的网口。这里以双网口为例,一个用于openwrt的 wan 口,一个用于openwrt的 lan 口。可以使用 ifconfig 或 ip addr 命令查看本机的网络接口。

⚠ 如果使用docker部署openwrt,对于多网口设备建议也使用双网口来部署openwrt,因为使用多网卡,即使openwrt将多个网口桥接也只有一个网口能够正常通讯,原因未知。(如将两个网口桥接为lan口,并在lan口开启DHCP,wan口正常连接互联网,也只有一个lan口能正常访问互联网,另一个lan口甚至不能访问同局域网内的设备)

PS:混杂模式是指一台机器的网卡能够接收所有经过它的数据流,而不论其目的地址是否是它。 一般计算机网卡都工作在非混杂模式下,此时网卡只接受来自网络端口的目的地址指向自己的数据。 当网卡工作在混杂模式下时,网卡将来自接口的所有数据都捕获并交给相应的驱动程序。如果不开启混杂模式,docker容器就不能通过这个网口,正常收发数据。

③ docker创建macvlan网络:

docker network create -d macvlan -o parent=enp1s0 macnetwan
docker network create -d macvlan -o parent=enp2s0 macnetlan复制

使用 parent 参数指定要绑定的网口,最后是为网络命名。可以使用 docker network ls 查看所有的docker网络,使用 docker network rm 网络名 删除某个网络。

④ 启动容器:

docker run --name openwrt \
--restart always \
-d --network macnetlan \
--privileged sulinggg/openwrt:x86_64 /sbin/init复制

这里使用了 --network 参数将这个容器放到了网络 macnetlan 上,对于openwrt系统,第一个绑定的网口将命令为eth0,默认作为lan口。这里使用了x86_64架构的openwrt镜像,其他CPU架构的应拉取其他镜像。详见:sulinggg/openwrt – Docker Image | Docker Hub

⑤ 将wan口添加进openwrt容器:

docker network connect macnetwan openwrt复制

⑥ 进入容器修改配置:

docker exec -it openwrt bash复制

进入容器后修改配置文件:

vim /etc/config/network复制

这里使用了vim命令编辑配置文件,打开配置文件后编辑lan口的配置信息(找到config interface ‘lan’这一段),修改静态ip,网关等配置信息,如:

option ipaddr ‘192.168.2.1’
option netmask ‘255.255.255.0’
option gateway ‘192.168.2.1’

https://googleads.g.doubleclick.net/pagead/ads?client=ca-pub-1854412229771705&output=html&h=90&adk=2003685283&adf=1715028348&pi=t.aa~a.3370986538~i.57~rp.4&w=1110&fwrn=4&fwrnh=100&lmt=1711682805&num_ads=1&rafmt=1&armr=3&sem=mc&pwprc=4779243145&ad_type=text_image&format=1110×90&url=https%3A%2F%2Fcaq98i.top%2Farticle%2F%3Fpage%3D113&fwr=0&pra=3&rh=200&rw=1110&rpe=1&resp_fmts=3&wgl=1&fa=27&uach=WyJXaW5kb3dzIiwiMTAuMC4wIiwieDg2IiwiIiwiMTIyLjAuMjM2NS45MiIsbnVsbCwwLG51bGwsIjY0IixbWyJDaHJvbWl1bSIsIjEyMi4wLjYyNjEuMTI5Il0sWyJOb3QoQTpCcmFuZCIsIjI0LjAuMC4wIl0sWyJNaWNyb3NvZnQgRWRnZSIsIjEyMi4wLjIzNjUuOTIiXV0sMF0.&dt=1711682805959&bpp=2&bdt=4318&idt=2&shv=r20240326&mjsv=m202403200101&ptt=9&saldr=aa&abxe=1&cookie=ID%3D360621bd06707a01%3AT%3D1711682748%3ART%3D1711682748%3AS%3DALNI_MZfQEGJ-aNPWdIQZ6Tn5qS-AYSJlg&gpic=UID%3D00000d71d8a92da7%3AT%3D1711682748%3ART%3D1711682748%3AS%3DALNI_MbftTzCPo-imq30gP8TIthdFxtpFA&eo_id_str=ID%3Dbbddfeaf5eabcbe9%3AT%3D1711682748%3ART%3D1711682748%3AS%3DAA-AfjagYJEY57Q34pyCOtjgNeW6&prev_fmts=0x0%2C224x600&nras=2&correlator=6580384935397&frm=20&pv=1&ga_vid=3688117.1711682746&ga_sid=1711682803&ga_hid=225090328&ga_fc=1&u_tz=480&u_his=4&u_h=1080&u_w=1920&u_ah=1040&u_aw=1920&u_cd=24&u_sd=1&dmc=8&adx=42&ady=1888&biw=1432&bih=925&scr_x=0&scr_y=694&eid=44759875%2C44759926%2C44759837%2C31082031%2C31082197%2C44795922%2C95329024%2C95322195%2C95328825&oid=2&pvsid=4191701191954509&tmod=699712379&wsm=1&uas=0&nvt=3&fc=1408&brdim=-14%2C0%2C-14%2C0%2C1920%2C0%2C1511%2C1050%2C1447%2C925&vis=1&rsz=%7C%7Cs%7C&abl=NS&fu=128&bc=31&bz=1.04&psd=W251bGwsbnVsbCxudWxsLDNd&ifi=3&uci=a!3&btvi=1&fsb=1&dtd=14

基本只需要修改这三项即可,这里是给了lan口一个固定ip:192.168.2.1,这是openwrt lan的ip

修改完成后,保存配置文件,然后执行如下命令使配置文件生效:

/etc/init.d/network restart复制

⑦ 将另一个设备使用网线接入刚刚配置的lan口,给设备一个静态ip,比如:192.168.2.100,然后浏览器访问 192.168.2.1 即可打开openwrt的管理界面。一般地,默认的登录密码为:password

⑧ 主路由配置简介:openwrt基本配置入门01——主路由与旁路由基本配置

捐赠通道,感谢!🦀🦀

0 0 投票数
Article Rating
订阅评论
提醒
guest

0 评论
最旧
最新 最多投票
内联反馈
查看所有评论
0
希望看到您的想法,请您发表评论x