ImmortalWRT - Proxy
安装
使用LXC提升性能,在官网下载Rootfs的tar.gz格式的镜像,官网为:ImmortalWrt Downloads
然后命令创建一个LXC容器:
pct create 100 local:vztmpl/immortalwrt-24.10.0-x86-64-rootfs.tar.gz --rootfs local-lvm:2 --ostype unmanaged --hostname immortalwrt-lxc --arch amd64 --cores 2 --memory 512 --swap 0 -net0 bridge=vmbr0,name=eth0解释一下这里的部分参数:
- 100 → PVE的容器或虚拟机ID
- local:vztmpl/xxx.tar.gz → rootfs的镜像,前面固定即可
- local-lvm:2 → 在local-lvm存储容器数据,容量为2G
创建完成进入选项,勾选所有功能选项:

如果需要TUN,那么需要打开TUN支持,修改配置文件/etc/pve/lxc/[CTID].conf:
arch: amd64
cores: 2
features: fuse=1,mount=nfs;cifs,nesting=1
hostname: immortalwrt-lxc
memory: 512
net0: name=eth0,bridge=vmbr0,hwaddr=BC:24:11:F3:EC:7B,type=veth
ostype: unmanaged
rootfs: local-lvm:vm-100-disk-0,size=2G
startup: order=1
swap: 0
lxc.cgroup2.devices.allow: c 10:200 rwm
lxc.mount.entry: /dev/net/tun dev/net/tun none bind,create=file添加的为下面的两行lxc.开头的配置。
然后开机,修改/etc/config/network的配置文件,使得可以被访问(只改ip地址即可);改后使用service network restart重启网络服务;最后再修改一下root的密码即可。

网卡配置
Network → Interfaces里编辑Lan口,填好网关等信息:

其他的设置,如关闭DHCP、禁用IPv6直接设置即可。
DNS
添加一个国内通用的DNS:

再添加一个也是可以的。
dnsmasq无法启动的问题
注意在完成上面的工作后应该能正常上网才对,如果无法上网,说明dnsmasq启动有问题;在LXC中容易出现,只需要:
opkg remove procd-ujail
service dnsmasq start再看服务是否起来了,起来了就说明正常。
主题配置
安装luci-theme-argon主题:

翻译和配置工具不用安装。
上网配置
在防火墙中设置所有的选项都为接受,取消防御措施,关闭IP伪装,如下图:

完成后,设置网关为ImmortalWRT,查看是否能上网:

能正常上网即配置完成。
PVE 9 下设置
注意在PVE9下,可以测试一下IP伪造的开关是否影响网络情况;这里不一定关了能上网,也不一定开了能上网,需要自行测试。
openwrt-mihomo
Github项目为:OpenWrt-mihomo
自动安装
安装提示,首先添加Feed:
curl -s -L https://github.com/morytyann/OpenWrt-mihomo/raw/refs/heads/main/feed.sh | ash有一定概率失败,手动安装比较好。
手动安装
直接到Release中下载,根据版本选择:mihomo_x86_64-openwrt-24.10.tar.gz
这里是24.10版本的,23的需要下载23版本的;下载完成后解压。

安装顺序为mihomo、luci-app-mihomo、luci-i18n-mihomo-zh-cn。
安装完成刷新页面即可看到mihomo在服务中出现了。
配置
关闭DNS劫持
配置Mihomo需要首先将DNS劫持关闭:

上传配置文件
在配置文件中,上传自己的合并后的配置文件。

插件配置

核心环境变量不勾选。
混入配置
记得启用混入配置
全局配置如下:

外部控制选择使用MetaCubeXD,UI名称同样填这个;其余不动。
入站配置不动。
TUN配置不动(未用到)。
DNS配置,选择Redir-Host模式,勾选遵循分流规则、使用Hosts、覆盖DNS服务器、覆盖DNS服务器查询策略;勾选后会自动填充DNS相关配置,默认即可。
新版中不会自动勾选全部的DNS相关配置,需要自己手动勾选;此外建议对所有的非
default-nameserver添加https://doh.pub/dns-query项,防止解析失败。
同时在新版中,自动填充的覆盖DNS查询策略,对于外网的域名需要翻墙才能查询,因此这里不要再勾选覆盖DNS查询策略了。
嗅探无需启用。
GEOX配置勾选定时更新即可。
代理配置
透明代理模式选择:

其余两个保持默认。
TPROXY无法上网解决办法
在容器中,很可能出现TPROXY模式无法上网,但是Redirect模式可以上网的情况,这是由于桥接网卡的防火墙过滤导致的,需要添加内核参数(/etc/sysctl.conf ):
net.bridge.bridge-nf-call-ip6tables=0
net.bridge.bridge-nf-call-iptables=0完成后重启或者使用sysctl -p加载即可。
开启后国内无法上解决办法
开启动态IP伪装,并将防火墙应用到桥接网卡上,如图:


KMS Server
用于内部激活Windows等相关可用KMS激活的服务;安装只需要在软件包过滤KMS,安装核心和luci即可。
选择启用和自动激活即可,配置不要修改,保持默认即可:

新版中DNS无法使用的解决办法
注意尚不明确导致此情况的原因,初步怀疑是DNS的问题,在将漏网之鱼被重定向到代理后就好了。
看了一下代理情况,发现1.1.1.1的443和8.8.8.8的443连接了,结果发现又能解析DNS了,因此怀疑是DNS的错误。
后排查发现确实为此问题,由于在Nikki的混入配置DNS配置中启用了覆盖DNS服务器查询策略,导致外网的域名只能通过1.1.1.1和8.8.8.8进行查询,从而导致了异常,禁用覆盖即可解决。
ImmortalWRT - Gateway
安装
安装时需要指定两块网卡,这里的vmbr0是桥接的物理网卡,vmbr1是PVE的NAT网卡,这里ImmortalWRT作为这个NAT内网的网关。
pct create 107 local:vztmpl/immortalwrt-24.10.2-x86-64-rootfs.tar.gz --rootfs local-lvm:2 --ostype unmanaged --hostname immortalwrt-gateway --arch amd64 --cores 2 --memory 512 --swap 0 -net0 bridge=vmbr1,name=eth0 -net1 bridge=vmbr0,name=eth1其他安装步骤和上面的安装一样即可。
网卡配置
注意这里请自行划分自己的NAT子网;eth1为WAN,eth0为LAN:
config device
option name 'br-lan'
option type 'bridge'
list ports 'eth0'
config interface 'lan'
option device 'br-lan'
option proto 'static'
option ipaddr '10.1.0.1'
option netmask '255.255.0.0'
option ip6assign '60'
config interface 'wan'
option device 'eth1'
option proto 'static'
option ipaddr '192.168.31.250'
option netmask '255.255.255.0'
option gateway '192.168.31.2'
list dns '192.168.31.2'
config interface 'wan6'
option device 'eth1'
option proto 'dhcpv6'
option disabled '1'
option auto '0'
option reqaddress 'try'
option reqprefix 'auto'
option norelease '1'注意配置后,我们不能从WAN区访问到核心内网区,如果需要Web配置,那么需要有一个虚拟机连入该内网区域。
参考上面的配置,WAN区域配置为静态地址,LAN区域配置为静态地址,并且关闭IPv6(由于后续需要调整防火墙允许WAN到LAN,请务必禁用IPv6,服务暴露可以通过下方的跨段访问来配置)。
如果不需要,也可以关闭LAN网口的DHCP服务。
配置完成后,将VM接入,注意也需要解决一下dnsmasq无法启动的问题才能上网。
跨段访问
路由配置
注意在ImmortalWRT - Proxy上配置,这是为了使得在192.168.31.0/24上的机器能够访问到10.1.0.0/16的机器所配置的。
配置静态路由如下:

防火墙配置
注意在Gateway上配置,将常规中的入站、出战、转发全部设置为接受即可;其他不用动。
此时,如果指定了192.168.31.2网关的机器应该就可以从192.168.31.0/24访问到10.1.0.0/16的机器了:
Service-Component:~# ping 10.1.30.10
PING 10.1.30.10 (10.1.30.10): 56 data bytes
64 bytes from 10.1.30.10: seq=0 ttl=126 time=0.767 ms
64 bytes from 10.1.30.10: seq=1 ttl=126 time=0.782 ms
64 bytes from 10.1.30.10: seq=2 ttl=126 time=0.666 ms
64 bytes from 10.1.30.10: seq=3 ttl=126 time=0.787 ms
64 bytes from 10.1.30.10: seq=4 ttl=126 time=0.654 ms
^C
--- 10.1.30.10 ping statistics ---
5 packets transmitted, 5 packets received, 0% packet loss如果使用的是Windows,ping不通注意查看一下Windows防火墙的配置。
如果需要10.1.0.0/16无法访问到192.168.31.0/24的话,可以在通信规则中添加:

注意,添加此项并不会导致出网异常。
如果希望一键核心区域断网,可以再添加一个,不设置目标地址,启用改为关闭即可;需要断网则启用该规则可实现核心区域断网。