docker部署openwr及其他容器修改网关

1.打开网卡的混杂模式

sudo ip link set eth0 promisc on

注意:这里的 eth0代表的是你的网卡的名称

2.创建网络

docker network create -d macvlan --subnet=192.168.1.0/24 --gateway=192.168.1.1 -o parent=eth0 macnet

这里需要查看你内网的网段进行修改,可以通过ifconfig或者ip addr show来查看你的设备所在的内网网段 这里建议设置静态IP。

假如说你的设备IP是 192.168.10.33 那么说明你处于192.168.10.x网段,
你需要将上面的subnet=192.168.1.0/24 --gateway=192.168.1.1改成subnet=192.168.10.0/24 --gateway=192.168.10.1

3.拉取镜像

我用的是黑豹这个设备是arm64架构的系统,所以我们选取的镜像也得符合arm64,可以去openwrt官网,也可以使用别人制作好的。

docker pull sulinggg/openwrt:armv8  #推荐用第一个,比较新。
docker pull buddyfly/openwrt-aarch64

4.启动容器

##使用sulinggg/openwrt:armv8
docker run --restart always --name openwrt -d --network macnet --privileged sulinggg/openwrt:armv8 /sbin/init

##使用buddyfly/openwrt-aarch64
docker run --restart always --name openwrt -d --network macnet --privileged buddyfly/openwrt-aarch64:latest

其中:
--restart always参数表示容器退出时始终重启
--name openwrt参数定义了容器名称为openwrt(这里可以自定义)
-d参数定义容器运行在Daemon模式
--networt macnet参数定义将容器加入macnet网络
--privileged参数定义容器运行在特权模式下
buddyfly/openwrt-aarch64:latest为docker镜像名
容器启动后可以 执行docker ps -a查看正在运行的容器

5.进入容器,修改参数。

//这里有些系统问题,有些可能不支持bash
docker exec -it openwrt bash

//bash不行就试试ash
docker exec -it openwrt ash
  1. 输入nano /etc/config/network打开文件
  2. 在里面输入/替换以下内容

    config interface 'lan'
         option type 'bridge'
         option ifname 'eth0'
         option proto 'static'
         option ipaddr '192.168.1.120'
         option netmask '255.255.255.0'
         option gateway '192.168.1.1'
         option dns '192.168.1.1'
  3. 所有的 192.168.1.x 需要根据树所处网段修改,option gateway和option dns填写路由器的 IP, 一般都是.1
  4. 配置完毕后 请 ctrl+x 然后 Y 然后回车 保存退出
  5. 保存之后重启网络/etc/init.d/network restart

6.大功告成,进入网页端

到这里基本的部署已经搞定了 接下来是网页端的配置,打开浏览器输入上一步option ipaddr中的IP地址,比较新的镜像用户名及密码均为root,老的密码为:password

推荐设置:

  1. 修改root密码
  2. 不提供 DHCP 服务(一定不要随意关闭接口桥接!取消桥接之后记得要勾上eth0)

7.其他容器如果想使用openwrt的容器作为网关

  1. 首先容器创建的时候,需要选择第2步创建的网络,并添加权限--cap-add=NET_ADMIN
  2. 搭建完成之后,进入容器内部,运行以下代码。

    # 删除现有默认网关
    ip route del default
    
    # 添加新的默认网关
    ip route add default via 192.168.1.120
    
    # 检验是否设置成功
    ip route show default
    

发表评论

电子邮件地址不会被公开。 必填项已用*标注