以下操作只能用于 Karing 作为旁路由方式,linuxmint系统的安装不在本文讨论范围.(特别注意:请关闭你主路由或者光猫上的IPV6,否则有可能部份设置获取到IPV6地址后,无法科学上网)
系统去这下载,记得选择Xfce Edition版本,系统资源占用低..
https://linuxmint.com/download.php
Karing下载地址,找到扩展名为 .deb的包, 比如 karing_1.2.14.1700_linux_amd64.deb
https://github.com/KaringX/karing
https://github.com/KaringX/karing/releases
Karing安装好后把它添加到自启动里. 查找里输入 session 然后选这个

点击add,填入启动命令,后面的Karing %U,你去开始菜单里找

这里就能看到

运行Karing时如果弹出讨厌的密码输入

直接把这个功能删除
# 将弹窗程序重命名(相当于禁用)
sudo mv /usr/libexec/gcr-prompter /usr/libexec/gcr-prompter.bak
开启流量转发
# 开启流量转发(当成路由器)
echo "net.ipv4.ip_forward=1" | sudo tee -a /etc/sysctl.conf && sudo sysctl -p
# 查看转发是否生效,返回1就是生效
cat /proc/sys/net/ipv4/ip_forward
最后去 Karing里把tun打开

网络共享也要打开

至此流量转发部分就设置完了,但是你不要以为你能上网了,你的客户端(比如windows)还需要在DNS上搞一个骚操作.我们以这台karing服务器的IP为 192.168.10.5 为例说明:
这是windows的设置,你注意网关一定不要设置成192.168.10.5,因为karing根本不监听 53端口,UDP DNS查询的请求,这里的8.8.8.8可以改成其它任何公司的IP,乱写就行,比如11.22.33.44,反正这些流量最终都会扔给karing中的tun来处理.

下面是这个原理的详细解释.
1. 为什么“乱写”也能通?
假设你在 Windows 上随便编了一个 DNS:6.6.6.6(这根本不是一个真实的 DNS)。
-
Windows 发起请求:
Windows 想访问
google.com,于是它老老实实地打包一个 UDP 数据包:-
收件人:
6.6.6.6 -
端口:
53 -
内容:
google.com 的 IP 是多少?
-
-
送往网关:
Windows 发现
6.6.6.6不在局域网内,于是直接把包扔给 默认网关(也就是你的 Linux 服务器192.168.10.5)。 -
TUN 拦截(关门打狗):
Linux 服务器收到这个包,准备往外发。
但是! 因为 Karing 开了 TUN 模式,它早就修改了 Linux 的路由表,大喊一声:“所有要出国的流量,都得先过我这一关!”
于是,这个发往
6.6.6.6的包被强行吸入了 Karing 的 TUN 网卡。 -
Karing 偷天换日:
Karing 拿到包一看:“哟,目标端口是 53?这肯定是个 DNS 请求。”
它根本不在乎收件人写的是
6.6.6.6还是8.8.8.8,它直接把信拆开,自己处理(通过代理去问谷歌),然后拿到结果(比如1.2.3.4)。 -
伪造回信:
Karing 拿着结果,伪造了一封回信:
-
寄件人:
6.6.6.6(伪装成那个乱写的 IP) -
内容:
google.com 的 IP 是 1.2.3.4
Windows 收到信后,以为真的是
6.6.6.6回复的,开开心心地就信了。 -
2. 只有一个“死穴”
虽然可以乱写,但不能写局域网不存在的 IP。
-
✅ 写
123.123.123.123(公网 IP 格式):能用。Windows 会把它扔给网关,网关能截获。
-
❌ 写
192.168.10.250(局域网 IP 格式):不能用。
因为 Windows 会认为这是邻居,它会先在局域网里大喊:“谁是 192.168.10.250?快回答!”
既然这个 IP 不存在,没人回答,Windows 就直接报错超时了,这个包根本不会发给 Linux 网关,Karing 自然也就截获不到。
3. 既然乱写也能用,为什么还要推荐填 8.8.8.8?
是为了容灾(Fail-safe)。
-
如果你填
8.8.8.8:万一哪天 Karing 挂了(软件崩溃了),但 Linux 还能上网,你的请求会真的发给谷歌 DNS,你至少还能正常打开国内网页(虽然翻墙会挂)。
-
如果你填
6.6.6.6:万一 Karing 挂了,这个请求就真的发到那个不存在的地址去了,你的电脑就彻底断网了。
结论:你可以去 Windows 上填一个 1.1.1.1 或者 8.8.8.8,这是最稳妥的“虚晃一枪”。
另外一个可有可无的设置,针对 PVE宿主机看客户端IP用的
如果系统安装时选择了安装 Guest Agent:进入系统后,务必在终端执行以下命令,否则刚才勾选的“Qemu 代理”不会生效:
sudo apt update && sudo apt install qemu-guest-agent -y。
然后在PVE的这里就能看到效果了

