uci set system.cfg01e48a.zonename='Asia/Taipei'
uci set system.cfg01e48a.timezone='CST-8'
uci commit system
/etc/init.d/system reload
OpenWrt 主路由 IPv6 设置
下面的命令为全新的 OpenWrt 所做的设置,如果不是全新的 OpenWrt 并不能直接用。
# Delete the dhcp.wan6 and dhcp.lan.ndp settings configured in 1.2
uci get dhcp.wan6 && uci del dhcp.wan6
uci get dhcp.lan.ndp && uci del dhcp.lan.ndp
# Delete the firewall.cfg03dc81.masq6 settings configured in 1.3
uci del firewall.cfg03dc81.masq6
# Generate a random ULA prefix
global_id=$(dd if=/dev/urandom bs=1 count=5 2>/dev/null | hexdump -ve '5/1 "%02x"')
ula_prefix="fd${global_id:0:2}:${global_id:2:4}:${global_id:6:4}::/48"
echo "ula_prefix: $ula_prefix"
- 如果代理软件使用 realip 模式(homeproxy)
1.1. wan6 有 IPv6 和长度 64 的 PD
# /etc/config/dhcp
uci del dhcp.lan.dhcpv6
uci set dhcp.lan.ra='server'
uci del dhcp.lan.ra_flags
uci add_list dhcp.lan.ra_flags='none'
uci set dhcp.lan.dns_service='0'
# /etc/config/network
uci set network.lan.ip6assign='64'
uci set network.lan.ip6ifaceid='eui64'
uci del network.globals.ula_prefix
# save & apply
uci commit dhcp
uci commit network
service network restart
1.2. wan6 有长度 64 的 IPv6 但无 PD 需要使用中继模式
# /etc/config/dhcp
uci set dhcp.wan6=dhcp
uci set dhcp.wan6.interface='wan6'
uci set dhcp.wan6.ignore='1'
uci set dhcp.wan6.master='1'
uci set dhcp.wan6.ra='relay'
uci set dhcp.wan6.ndp='relay'
uci del dhcp.lan.dhcpv6
uci del dhcp.lan.ra_flags
uci del dhcp.lan.dns_service
uci set dhcp.lan.ra='relay'
uci set dhcp.lan.ndp='relay'
# /etc/config/network
uci set network.lan.ip6assign='64'
uci set network.lan.ip6ifaceid='eui64'
uci del network.globals.ula_prefix
# save & apply
uci commit dhcp
uci commit network
service network restart
1.3. wan6 只有长度 128 的 IPv6 但无 PD 需要使用 NAT66 模式
# /etc/config/firewall
uci set firewall.cfg03dc81.masq6='1'
# /etc/config/dhcp
uci del dhcp.lan.dhcpv6
uci set dhcp.lan.ra='server'
uci del dhcp.lan.ra_flags
uci add_list dhcp.lan.ra_flags='none'
uci set dhcp.lan.dns_service='0'
# /etc/config/network
uci set network.lan.ip6assign='64'
uci set network.lan.ip6ifaceid='eui64'
uci set network.globals.ula_prefix='fd71:576d:52df::/48'
# save & apply
uci commit firewall
uci commit dhcp
uci commit network
service network restart
- 如果代理软件使用 fakeip 模式(nikki)
在使用 fakeip 模式的情况下,客户端获取的所有的域名解析都是 fakeip,所有的网络访问都需要通过路由器进行访问。
2.1. 禁用客户端的 IPv6 地址获取
# /etc/config/dhcp
uci del dhcp.lan.ra
uci del dhcp.lan.ra_slaac
uci del dhcp.lan.ra_flags
uci del dhcp.lan.dns_service
uci del dhcp.lan.dhcpv6
# /etc/config/network
uci del network.lan.ip6assign
# save & apply
uci commit dhcp
uci commit network
service network restart
2.2. 在不禁用客户端 IPv6 地址获取的情况下 fakeip 模式的设置(未验证)
# 如果不能看 IPv6 的直播
uci set network.wan6.sourcefilter='0'
在路由器上面运行代理软件只推荐使用 realip 的方式,这种方式遇到的问题更少。
使用插件 ipv6-configurator_1.1.0-r1_all.ipk
进行配置:
如果是 1.1 则输入 1,1.2 输入 2,1.3 输入 3,如果要作为 AP 或者旁路由则输入 4.
OpenWrt TTYD 终端自动登录
OpenWrt 安装 TTYD 终端可以通过如下的命令安装:
opkg update
opkg install ttyd
opkg install luci-app-ttyd
然后再 Services - Terminal 中即可访问终端,但是每次输入据需要输入用户名密码,可以在 Config - Command 的值由 /bin/login
改成 /bin/login -f root
,保存并应用之后即可不用输入用户名密码进入终端。这样设置之后会有一种风险,局域网中的设备访问路由器 ip:7681 也是不需要输入密码直接访问路由器后台的,推荐同时设置 Credential。
其他的一些有用的设置
- 安装 lrzsz,
opkg install lrzsz
。然后在 config - Client option 中添加enableZmodem=true
。这样就可以通过 rz 命令接收文件,使用 sz 命令下载文件。
Esxi 安装 OpenWrt 提示安装 VMware Tools
我的 esxi 版本是 6.7U3,安装了 opewnrt 24.10.0 直接可以使用下面的命令安装。
opkg update
opkg install open-vm-tools
绕过 Windows 11 创建联网账号
方法一:
- 在安装时的语言选择界面按 Shift+F10
- 然后在出现的命令提示符中输入: start ms-cxh:localonly
- 在出现的本地账户创建对话框中输入想要创建的本地账户信息
方法二:
在登录时用户名填写:no@thankyou.com,密码是任意字符。
docker 中安装 openwrt 并作为旁路由
在 docker 运行 openwrt 的方式如下:
网络接口最好使用网线接口,我测试的下来使用 wifi 的接口,macvlan 连不上网,ipvlan 一段时间后宿主机会获取不到 ip 地址,导致宿主机掉线。
如果时使用网线接口,macvlan 可能时更好的方法,这种方法,容器具有独立的 mac 地址和 ip 地址。
docker stop openwrt
docker rm openwrt
docker network rm opvlan-net
docker network create -d macvlan \
--subnet=192.168.1.0/24 \
--gateway=192.168.1.1 \
-o parent=enp3s0 \
opvlan-net
docker run \
--name openwrt \
--network opvlan-net \
--privileged \
--sysctl net.ipv6.conf.all.disable_ipv6=0 \
-d xinebf/openwrt:24.10.0-x86-64 /sbin/init
docker exec openwrt ip addr show eth0 | grep 'inet '
# You can access the router's backend using the following command.
docker exec -it openwrt sh
如果使用 macvlan 宿主机和容器要想通信需要创建 macvlan 子接口。此时宿主机和容器就能通过 容器 ip 和 hostvlan 中的 ip 进行互相通信了。
sudo ip link add hostvlan-net link enp3s0 type macvlan mode bridge
sudo ip addr add 192.168.1.15/24 dev hostvlan-net
sudo ip link set hostvlan-net up
# Clear hostvlan settings
sudo ip link set hostvlan-net down
sudo ip link delete hostvlan-net
如果想要使用 ipvlan 命令如下,ipvlan 的方式宿主机和容器可以直接通信。
docker network create -d ipvlan \
--subnet=192.168.1.0/24 \
--gateway=192.168.1.1 \
-o parent=wlp1s0 \
-o ipvlan_mode=l2 \
opvlan-net
在 docker 中使用 openwrt 作为旁路由根据网络情况可以分为如下四种情况。
- 旁路由网关不启用 IPv6,并且禁用 DHCP,使用主路由提供 DHCP 服务。
- 旁路由网关不启用 IPv6,并且作为 DHCP 服务器,此时主路由要禁用 DHCP。
- 旁路由网关启动 IPv6,并且作为 DHCP 服务器,此时主路由需要禁用 DHCPv4,DHCPv6 只需要开启 RA 服务。
下面按照上面四种情况分别进行解释说明,下面所有的命令都假设是在通过上面命令启动的全新的 openwrt 容器内执行。
# Step One: Configure the LAN Port's Network
uci del network.globals.ula_prefix
uci set network.lan.device='eth0'
uci set network.lan.ipaddr='192.168.1.6'
uci set network.lan.gateway='192.168.1.1'
uci add_list network.lan.dns='192.168.1.1'
uci commit network
service network restart
# Step Two: Disable DHCP Service
uci set dhcp.lan.ignore='1'
uci set dhcp.lan.dhcpv6=disabled
uci set dhcp.lan.ra=disabled
uci commit dhcp
service network restart
# Step Three: Create a New lan6 Interface
# Modify Firewall Configuration
uci del firewall.cfg02dc81.network
uci add_list firewall.cfg02dc81.network='lan'
uci add_list firewall.cfg02dc81.network='lan6'
# Modify Network Configuration
uci set network.lan6=interface
uci set network.lan6.proto='dhcpv6'
uci set network.lan6.device='@lan'
uci set network.globals.packet_steering='1'
uci set network.lan6.reqaddress='try'
uci set network.lan6.reqprefix='auto'
uci set network.lan6.norelease='1'
# Submit and Apply
uci commit firewall
uci commit network
service network restart
service firewall reload
# Configure devices with the tag 'direct' to use the main router as their gateway and DNS server.
uci add_list dhcp.lan.dhcp_option='tag:direct,3,192.168.1.1'
uci add_list dhcp.lan.dhcp_option='tag:direct,6,192.168.1.1'
# Configure devices whose tag is not 'proxy' to use the main router as their gateway and DNS server.
# uci add_list dhcp.lan.dhcp_option='tag:!proxy,3,192.168.1.1'
# uci add_list dhcp.lan.dhcp_option='tag:!proxy,6,192.168.1.1'
uci commit network
service network restart
- 旁路由网关不启用 IPv6,并且禁用 DHCP,使用主路由提供 DHCP 服务。
需要执行上面 step one 和 step two 中命令。
- 旁路由网关不启用 IPv6,并且作为 DHCP 服务器,此时主路由要禁用 DHCP。
只需要执行上面 step one 中的命令。
- 旁路由网关启动 IPv6,并且作为 DHCP 服务器,此时主路由需要禁用 DHCPv4,DHCPv6 只需要开启 RA 服务。
需要执行上面 step one 和 step three 中的命令。
上面命令的快捷方式
https://openwrt-in-docker.pages.dev/?ip=192.168.10.123