fscarmen / warp-sh

WARP script is move to: https://gitlab.com/fscarmen/warp

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

debian12 的 systemd-resolved 好像和 openresolv 有冲突?

Se7enMuting opened this issue · comments

系统是 PVE8.1 下安装镜像: Debian12 Official Cloud Images,然后执行大佬脚本,装完后,重启机器,发现 DNS 解析失效了,CF 的 IP 地址一直无法获取,查了下发现重启后 /run/systemd/resolve/ 这个文件夹直接没了,导致文件 /etc/resolv.conf 的链接失效了(/etc/resolv.conf 是指向 /run/systemd/resolve/resolv.conf 的)
发现可能是 openresolv 导致的这问题(和 systemd-resolved 冲突?),于是修改脚本,不让脚本安装 openresolv ,然后执行脚本安装,于是 DNS 解析正常,warp 也可以正常拿到 CF 的 IP 地址。不知道这算是哪里的问题?

另一个使用情况是我配合 xray,只有在 warp-go 全局的情况下,xray 代理才能通过 CF 访问到网络。warp 全局不通,warp-go/warp 的非全局通过 interface 也不通(xray 的配置应该没有问题,别的服务器也是同样配置的,而且 log 里是能看到有去连 warp 的 interface),不知道这会不会和没装 openresolv 有关系?

之前我在 vultr 的 Debian12 上跑大佬的脚本也发现 openresolv 会有点问题,最后解决方法是:需要先手动安装 openresolv ,再 reboot 机器,再执行脚本就没有问题。直接跑脚本也是 DNS 直接失效。

我也没仔细研究为什么脚本里一定要装这个 openresolv ,搞不懂。。。

发现可能是 openresolv 导致的这问题(和 systemd-resolved 冲突?),于是修改脚本,不让脚本安装 openresolv ,然后执行脚本安装,于是 DNS 解析正常,warp 也可以正常拿到 CF 的 IP 地址。不知道这算是哪里的问题?

我不安装,是会报错的。

######## 系统是 Debian12
root@test:~# cat /etc/os-release 
PRETTY_NAME="Debian GNU/Linux 12 (bookworm)"
NAME="Debian GNU/Linux"
VERSION_ID="12"
VERSION="12 (bookworm)"
VERSION_CODENAME=bookworm
ID=debian
HOME_URL="https://www.debian.org/"
SUPPORT_URL="https://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/"

########  卸载 openresolv 后,运行 wg-quick 时报错

root@test:~# apt-get autoremove openresolv
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following packages will be REMOVED:
  openresolv
0 upgraded, 0 newly installed, 1 to remove and 17 not upgraded.
After this operation, 104 kB disk space will be freed.
Do you want to continue? [Y/n] y
(Reading database ... 110133 files and directories currently installed.)
Removing openresolv (3.12.0-3) ...
root@test:~# wg-quick up warp
Warning: `/etc/wireguard/warp.conf' is world accessible
[#] ip link add warp type wireguard
[#] wg setconf warp /dev/fd/63
[#] ip -4 address add 172.16.0.2/32 dev warp
[#] ip -6 address add 2606:4700:110:8d3c:b644:e555:62ce:6a9a/128 dev warp
[#] ip link set mtu 1380 up dev warp
[#] resolvconf -a warp -m 0 -x
/usr/bin/wg-quick: line 32: resolvconf: command not found
[#] ip link delete dev warp

########  重新安装 openresolv 后,运行 wg-quick 正常

root@test:~# apt-get install openresolv
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following NEW packages will be installed:
  openresolv
0 upgraded, 1 newly installed, 0 to remove and 17 not upgraded.
Need to get 24.7 kB of archives.
After this operation, 104 kB of additional disk space will be used.
Get:1 file:/etc/apt/mirrors/debian.list Mirrorlist [30 B]
Get:2 https://deb.debian.org/debian bookworm/main amd64 openresolv all 3.12.0-3 [24.7 kB]
Fetched 24.7 kB in 0s (104 kB/s)     
Selecting previously unselected package openresolv.
(Reading database ... 110115 files and directories currently installed.)
Preparing to unpack .../openresolv_3.12.0-3_all.deb ...
Unpacking openresolv (3.12.0-3) ...
Setting up openresolv (3.12.0-3) ...
root@test:~# wg-quick up warp
Warning: `/etc/wireguard/warp.conf' is world accessible
[#] ip link add warp type wireguard
[#] wg setconf warp /dev/fd/63
[#] ip -4 address add 172.16.0.2/32 dev warp
[#] ip -6 address add 2606:4700:110:8d3c:b644:e555:62ce:6a9a/128 dev warp
[#] ip link set mtu 1380 up dev warp
[#] resolvconf -a warp -m 0 -x
[#] wg set warp fwmark 51820
[#] ip -6 route add ::/0 dev warp table 51820
[#] ip -6 rule add not fwmark 51820 table 51820
[#] ip -6 rule add table main suppress_prefixlength 0
[#] nft -f /dev/fd/63
[#] ip -4 route add 0.0.0.0/0 dev warp table 51820
[#] ip -4 rule add not fwmark 51820 table 51820
[#] ip -4 rule add table main suppress_prefixlength 0
[#] sysctl -q net.ipv4.conf.all.src_valid_mark=1
[#] nft -f /dev/fd/63
[#] ip -4 rule add from 10.128.0.2 lookup main

########  正常时,我的也没有 /run/systemd/resolve/
root@test:~# ls /run/systemd/resolv
ls: cannot access '/run/systemd/resolv': No such file or directory

另一个使用情况是我配合 xray,只有在 warp-go 全局的情况下,xray 代理才能通过 CF 访问到网络。warp 全局不通,warp-go/warp 的非全局通过 interface 也不通(xray 的配置应该没有问题,别的服务器也是同样配置的,而且 log 里是能看到有去连 warp 的 interface),不知道这会不会和没装 openresolv 有关系?

我也不确定,我没有试过不使用 openresolv 的表现。现在 warp / warp-go 的全局/非全局环境是出来了,剩下与各个软件的协同需要用户自己摸索研究一下了。

直接卸载 openresolv 应该是是会把 resolv.conf 文件删除掉,导致 wg-quick 无法运行,我这里也会这样。
我的意思是一开始就直接不装 openresolv ,我把你脚本里在 debian 中安装 openresolv 给删除了,再跑脚本, wg-quick 也是正常可用的:

root@D12:~# wg-quick down warp
Warning: `/etc/wireguard/warp.conf' is world accessible
[#] ip -4 rule delete table 51820
[#] ip -4 rule delete table main suppress_prefixlength 0
[#] ip -6 rule delete table 51820
[#] ip -6 rule delete table main suppress_prefixlength 0
[#] ip link delete dev warp
[#] resolvconf -d warp -f
[#] nft -f /dev/fd/63
[#] ip -4 rule delete from 192.168.1.182 lookup main
[#] ip -6 rule delete from 240e:388:7899:4400::51f lookup main
root@D12:~# wg-quick up warp
Warning: `/etc/wireguard/warp.conf' is world accessible
[#] wg setconf warp /dev/fd/63
[#] ip -4 address add 172.16.0.2/32 dev warp
[#] ip -6 address add 2606:4700:110:8fa0:9c89:e0a3:7fa6:cf0c/128 dev warp
[#] ip link set mtu 1420 up dev warp
[#] resolvconf -a warp -m 0 -x
[#] wg set warp fwmark 51820
[#] ip -6 route add ::/0 dev warp table 51820
[#] ip -6 rule add not fwmark 51820 table 51820
[#] ip -6 rule add table main suppress_prefixlength 0
[#] nft -f /dev/fd/63
[#] ip -4 route add 0.0.0.0/0 dev warp table 51820
[#] ip -4 rule add not fwmark 51820 table 51820
[#] ip -4 rule add table main suppress_prefixlength 0
[#] sysctl -q net.ipv4.conf.all.src_valid_mark=1
[#] nft -f /dev/fd/63
[#] ip -4 rule add from 192.168.1.182 lookup main
[#] ip -6 rule add from 240e:388:7899:4400::51f lookup main

我想了解下这个 openresolv 在这个脚本的应用场景下,有没有什么不可替代的作用?是为了切换/etc/resolv.conf吗?我直接不安装,用 Debian 12 系统自带的 systemd-resolved 好像也可以,执行 wg-quick up warp 后,/etc/resolv.conf 也是会改变的。
只是目前只能用 warp-go 的全局而已。

我遇到有系统不安装这个,就是上面的报错,所以加上去了,不加的话,安装不成功的系统更多

正常时,我的也没有 /run/systemd/resolve/

那你测试时 /etc/resolv.conf 文件是链接到哪个路径文件下的,我的情况是直接跑脚本重启后,/etc/resolv.conf 的链接不会自动更新,原先的指向也失效了(/run/systemd/resolve/ 没了)

对了,会不会和这台虚拟机使用了 cloud-init 有关系:
image

很大可能了

/etc/resolv.conf 我这不是软链,就是这文件了吧,我一直操作他的

/etc/resolv.conf 我这不是软链

那就是 openresolv 的安装过程,或者你脚本的行为,需要把之前 /etc/resolv.conf 的软链删除,在这里重新生成一个 /etc/resolv.conf 文件,我的情况应该是有什么问题导致了 /etc/resolv.conf 文件没有自动生成吧。

我觉得你那边可能是虚拟化的网络设置导致的,就之前接触到的云商的 Debian 12 都没有遇到你说的问题,都是安装很顺利的。

@fscarmen
English please, I have same issue on ubuntu 24.04 LTS, openresolv dependencies has been removed in ubuntu 24.04 LTS officially https://askubuntu.com/questions/1513526/what-happened-to-openresolv-on-ubuntu-24-04-package-openresolv-has-no-instal