在PVE下通过linuxmint安装Karing,让它变成一台科学上网路由器的方法,附带DNS骚操作的设置,旁路由方式

以下操作只能用于 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 然后选这个

20260204021111.jpg

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

20260204021215.jpg

这里就能看到

20260204021239.jpg

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

20260204021310.jpg

直接把这个功能删除

# 将弹窗程序重命名(相当于禁用) 
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打开

20260204021356.jpg

网络共享也要打开

20260204021330.jpg

至此流量转发部分就设置完了,但是你不要以为你能上网了,你的客户端(比如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来处理.

20260204015146.jpg

下面是这个原理的详细解释.

1. 为什么“乱写”也能通?

假设你在 Windows 上随便编了一个 DNS:6.6.6.6(这根本不是一个真实的 DNS)。

  1. Windows 发起请求

    Windows 想访问 google.com,于是它老老实实地打包一个 UDP 数据包:

    • 收件人6.6.6.6

    • 端口53

    • 内容google.com 的 IP 是多少?

  2. 送往网关

    Windows 发现 6.6.6.6 不在局域网内,于是直接把包扔给 默认网关(也就是你的 Linux 服务器 192.168.10.5)。

  3. TUN 拦截(关门打狗)

    Linux 服务器收到这个包,准备往外发。

    但是! 因为 Karing 开了 TUN 模式,它早就修改了 Linux 的路由表,大喊一声:“所有要出国的流量,都得先过我这一关!

    于是,这个发往 6.6.6.6 的包被强行吸入了 Karing 的 TUN 网卡

  4. Karing 偷天换日

    Karing 拿到包一看:“哟,目标端口是 53?这肯定是个 DNS 请求。”

    根本不在乎收件人写的是 6.6.6.6 还是 8.8.8.8,它直接把信拆开,自己处理(通过代理去问谷歌),然后拿到结果(比如 1.2.3.4)。

  5. 伪造回信

    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的这里就能看到效果了

20260204021457.jpg

留下评论

您的电子邮箱地址不会被公开。 必填项已用 * 标注

20 + = 25