欢迎光临
我们一直在努力

docker里运行openwrt,宿主机连接openwrt

源地址:https://github.com/lisaac/openwrt-in-docker

由于 docker 网络采用 macvlan 的 bridge 模式,即使宿主机与容器在同一网段,相互之间也是无法通信的。 为了解决这个问题,需利用多个 macvlan 接口之间是互通的原理,在 LAN 口新建一个 macvlan 虚拟接口:

# 使用 ip 命令
ip link add link enp3s0 mac30 type macvlan mode bridge # 在 enp3s0 接口下添加一个 macvlan 虚拟接口
ip addr add 10.1.1.2/24 brd + dev mac30 # 为 mac30 分配 ip 地址
ip link set mac30 up
ip route del default #删除默认路由
ip route add default via 10.1.1.254 dev mac30 # 设置静态路由
echo "nameserver 10.1.1.1" > /etc/resolv.conf # 设置静态 dns 服务器

# 或者使用 nmcli
nmcli connection add type macvlan dev enp3s0 mode bridge ifname mac30 autoconnect yes save yes

或者,若是在 debian 中可以编辑 /etc/network/interface 并加入:

auto mac30
iface mac30 inet manual
  pre-up ip link add link enp3s0 mac30 type macvlan mode bridge
  pre-up ip addr add 10.1.1.250/24 brd + dev mac30
  up ip link set mac30 up
  post-up ip route del default
  post-up ip route del 10.1.1.0/24 dev enp3s0
  post-up ip route add default via 10.1.1.1 dev mac30
  post-down ip link del dev mac30

下面这段是我的机子的设置

ip link add link enp2s0 macop type macvlan mode bridge
ip addr add 192.168.101.101/24 brd + dev macop
ip link set macop up
ip route del default 
ip route add default via 192.168.101.100 dev macop
#下面这条可以不用
echo "nameserver 192.168.101.100" > /etc/resolv.conf

#删除
ip link set macop down

还有一点需要注意的是,重启后自己创建的macvlan接口会消失,我的方法是把上述命令都写到了rc.local内。

 收藏 (0) 打赏

您可以选择一种方式赞助本站

支付宝扫一扫赞助

微信钱包扫描赞助

未经允许不得转载:家里蹲的狐狸 » docker里运行openwrt,宿主机连接openwrt

分享到: 生成海报
avatar

热门文章

  • 评论 抢沙发

    • QQ号
    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址

    登录

    忘记密码 ?

    切换登录

    注册

    我们将发送一封验证邮件至你的邮箱, 请正确填写以完成账号注册和激活