跳至正文
  • 19 views
  • 2 min read

docker openwrt ipv6/ipv4,自由DIY任意镜像

新浪微博 豆瓣 QQ 百度贴吧 QQ空间

一:宿主机篇:

1.创建macnet 我的路由是192.168.10.1,请根据自己的情况修改,IPv6默认是内网地址,不用动; 命令行创建macvlan

如果需要公网 ipv6,可以通过以下方式确认自己的公网 ipv6 网段:

ip -6 route show

私网 docker网络创建方式如下:

docker network create -d macvlan --subnet=192.168.10.0/24 --gateway=192.168.10.254 --subnet=fe80::/64 --gateway=fe80::1 -o parent=eth0 macnet

2. 修改/etc/network/interfaces,主要是添加标红部分,命令是:vi /etc/network/interfaces,按i,用键盘箭头移动光标进行修改,然后esc,输入:wq,保存和退出

# interface file auto-generated by buildroot
auto eth0
iface eth0 inet static
  address 192.168.10.250
  netmask 255.255.255.0
  gateway 192.168.10.1
  dns-nameservers 192.168.10.1
iface eth0 inet dhcp

3.编辑/etc/rc.local
命令行:vi /etc/rc.local
按i,用键盘箭头移动光标进行修改,然后esc,输入:wq,保存和退出
在exit 0 前面,加入下面的代码:

ip link set eth0 promisc on
ip link add macvlan_host link eth0 type macvlan mode bridge
ip addr add 192.168.10.250 dev macvlan_host
ip link set macvlan_host up
ip route add 192.168.10.254 dev macvlan_host

重启一下,宿主机修改完成。

二、openwrt篇

1.拉取镜像和创建container

(1)建议的镜像:guoshhsz/lede-aarch64。
命令行举例:

docker pull guoshhsz/lede-aarch64:latest

(3)创建container (可先用docker images,查看确认具体的image名称) 命令行:

docker run --name openwrt --restart always -d --network macnet --privileged guoshhsz/lede-aarch64 /sbin/init

2.修改docker里的openwrt这部分设置了回复可见,主要是op里面的一些设置。
(1)命令行进入到container里,

docker exec -it openwrt /bin/sh

(2)修改IP、dns、gateway等信息;
命令行: vi /etc/config/network  按i,用键盘箭头移动光标进行修改,然后esc,输入:wq,保存和退出

修改:

config interface 'lan'
        option type 'bridge'
        option ifname 'eth0'
        option proto 'static'
        option ipaddr '192.168.10.254'
        option gateway '192.168.10.1'
        option dns '192.168.10.1'
        option netmask '255.255.255.0'
        option ip6assign '60'

(3)修改/etc/sysctl.conf
命令行:vi /etc/sysctl.conf 按i,用键盘箭头移动光标进行修改,然后esc,输入:wq,保存和退出
添加下面的内容,这里是获取ipv6的关键

# Defaults are configured in /etc/sysctl.d/* and can be customized in this file
net.ipv6.conf.all.disable_ipv6=0
net.ipv6.conf.default.disable_ipv6=0
net.ipv6.conf.default.accept_ra=2
net.ipv6.conf.all.accept_ra=2

(4)修改/etc/rc.local
命令行:vi /etc/rc.local 按i,用键盘箭头移动光标进行修改,然后esc,输入:wq,保存和退出
添加以下内容到 exit 0前面

ip link set eth0 promisc on
ip link add link eth0 wan_mac0 type macvlan
ip link set wan_mac0 address 02:42:00:11:7C:01
ip link set wan_mac0 up

(5)openwrt重启reboot ,在浏览器输入 192.168.10.254,就可以进到管理界面了,也可以用winscp,直接IP用户密码登录了。如果是用来做旁路由,请去lan-关闭DHCP(忽略接口),IPv6的路由也全改为禁用,其他的,自己折腾吧,说不了那么多了

(6)修改IPtable(这部分,建议先不修改,因为我的并没有影响,如果出现不能上网,在去openwrt防火墙添加规则)

iptables -t nat -I POSTROUTING -o eth0 -j MASQUERADE
也可以尝试(有桥接存在的情况下)
iptables -t nat -I POSTROUTING -o  br-lan  -j MASQUERADE
如果是PPPoE拨号的
iptables -t nat -I POSTROUTING -o pppoe-wan -j MASQUERADE
如果使用usb网卡需要在防火墙里添加如果是自动获取ip的
iptables -t nat -I POSTROUTING -o eth1 -j MASQUERADE

三、主路由的修改

作为旁路由:
dhcp里的网关改为:192.168.10.254
dns服务器:改为:192.168.10.254(建议先在openwrt设置号adg或者dnsmasq之类的)。
电脑网卡禁用,然后重开获取dhcp。
至此,ipv6,ipv4都能获取到了,zerotier也可以有ipv6 了

发表回复

联系站长