下载并安装 Office VOL 版本

自 Office 2019 开始,微软官方不再提供 VOL 版的 iso 镜像,如果要下载安装 VOL 版本的 Office 需要通过 Office Deployment Tool 软件进行下载安装。

  1. 下载 Office Deployment Tool,下载完成后将其解压,主要为了获取其中的 setup.exe。
  2. 创建并下载 xml 配置文件。在 office 的 Office 自定义工具页面,自定义需要的配置,在 Office 套件中选择 VOL 的版本 Office。在应用中去掉不需要的应用。在语言中选择主要语言为需要的语言。其他地方可以不用设置。然后导出,选择保留当前配置,确定后将文件名改为 configuration。下载到和 setup.exe 同一个文件夹。
  3. 下载 Office 的部署文件。打开 CMD,并切换到 setup.exe 的文件夹。执行下面的命令进行下载,下载过程没有任何的提示。
setup.exe /download configuration.xml
  1. 部署 Office。执行安装需要以管理员的权限运行 CMD,并切换到 setup.exe 文件夹的目录,执行下面的命令。
setup.exe /configure configuration.xml

软路由安装 OpenWrt

在 x86 软路由上面首次安装 OpenWrt 还是有点麻烦的,但是安装完成之后更新系统就比较简单了。

需要提前准备好 Ventoy, PEdd 工具OpenWrt 系统镜像

其他可用的可以代替 dd 的工具有 physdiskwriteRoadkil's Disk Image

在 PE 中执行 dd 命令有可能会报 wow32.dll 不存在,需要提前准备好。

通过 Ventoy 启动 PE 之后,执行如下的命令:

# 先删除安装磁盘的分区表,使磁盘没有任何的分区
# 列出系统中的磁盘
dd --list
# 查找到要安装的磁盘的路径,\\?\Device\Harddisk0\Partition0
# 其中 Partition0 表示整个磁盘
dd if=openwrt-24.10.1-x86-64-generic-squashfs-combined-efi.img bs=1M of=\\?\Device\Harddisk0\Partition0
# 然后重启即可

但是 OpenWrt 官方镜像的 x86 镜像的数据分区是 104M,安装完系统之后可用的空间是 86M,如果需要安装的插件占用的空间比较多,可能会面临空间不够的情况,一般使用 x86 的软路由磁盘空间都是比较足的,可以通过下面的命令对 overlay 分区进行扩容。

opkg update
opkg install cfdisk resize2fs
df -h
# sda 要替换成 openwrt 安装到的磁盘,可以通过 df -h 进行查看
cfdisk /dev/sda
# 然后选中大小是 104M 的 sda2 在下面选择 Resize 并输入扩容到的空间大小,我这里输入 8G
# 然后 Write 按照提示输入 yes
# 执行下面的命令将 overlay 扩容到在 cfdisk 中指定的大小,如果不成功,可以重启后再执行
resize2fs /dev/loop0

通过上面的方式对 overlay 进行扩容,并不会使恢复出厂设置失效。但是如果刷写了新的固件,那么就会将分区的大小恢复成 OpenWrt 默认的大小,只需要将上面的扩容命令再执行一遍即可。

root@OpenWrt:~# df -h
Filesystem                Size      Used Available Use% Mounted on
/dev/root                 5.8M      5.8M         0 100% /rom
tmpfs                     3.8G    256.0K      3.8G   0% /tmp
/dev/loop0                7.5G      1.4M      104M   0% /overlay
overlayfs:/overlay        7.5G      1.4M      104M   0% /
/dev/sda1                16.0M      6.2M      9.7M  39% /boot
/dev/sda1                16.0M      6.2M      9.7M  39% /boot
tmpfs                   512.0K         0    512.0K   0% /dev

OpenWrt 软路由搭配 MT7922A 无线网卡

需求是 OpenWrt 软路由能够通过无线网卡无线中继 WIFI 信号接入互联网,在对比了一些无线网卡之后选择了 MT7922A 无线网卡。

x86 的 OpenWrt 在插入 MT8922A 无线网卡之后,是无法识别的,需要安装如下的驱动,并重启之后就能正常使用了。

opkg update
# 安装无线网卡驱动
opkg install kmod-mt7921e kmod-mt7922-firmware
# 安装必要的加密协议支持包
opkg install wpad-openssl hostapd-common

如果是使用 ESXI 安装的 OpenWrt,想要使用 MT7922A 无线网卡,就需要将无线网卡进行直通。按要求重启之后,需要将 OpenWrt 虚拟机的编辑里的内存选项的预留所有客户机内存(全部锁定)勾选上。并添加 PCI 设备,选择直通的无线网卡。成功启动并按照驱动之后,就能看到无线网卡了。

如果直通无线网卡之后启动报错,无法启动。可以在主机的服务中启用安全 Shell(SSH)。然后通过 SSH 登录 ESXI,编辑 /etc/vmware/passthru.map 文件。

vi /etc/vmware/passthru.map

添加如下的内容:

14c3  0616  d3d0     false
pciPassthru0.msiEnabled=false

其中:
14c3 为供应商 ID: 0x14c3
0616 为设备 ID: 0x616
后面两个 d3d0 false 为固定值。

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"
  1. 如果代理软件使用 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
  1. 如果代理软件使用 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。


其他的一些有用的设置

  1. 安装 lrzsz,opkg install lrzsz。然后在 config - Client option 中添加 enableZmodem=true。这样就可以通过 rz 命令接收文件,使用 sz 命令下载文件。

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 作为旁路由根据网络情况可以分为如下四种情况。

  1. 旁路由网关不启用 IPv6,并且禁用 DHCP,使用主路由提供 DHCP 服务。
  2. 旁路由网关不启用 IPv6,并且作为 DHCP 服务器,此时主路由要禁用 DHCP。
  3. 旁路由网关启动 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
  1. 旁路由网关不启用 IPv6,并且禁用 DHCP,使用主路由提供 DHCP 服务。

需要执行上面 step one 和 step two 中命令。

  1. 旁路由网关不启用 IPv6,并且作为 DHCP 服务器,此时主路由要禁用 DHCP。

只需要执行上面 step one 中的命令。

  1. 旁路由网关启动 IPv6,并且作为 DHCP 服务器,此时主路由需要禁用 DHCPv4,DHCPv6 只需要开启 RA 服务。

需要执行上面 step one 和 step three 中的命令。


上面命令的快捷方式

https://openwrt-in-docker.pages.dev/?ip=192.168.10.123