为什么我的虚拟网络接口在重新启动后无法访问互联网?

为什么我的虚拟网络接口在重新启动后无法访问互联网?

enp1s0我在标签上设置了一个虚拟网络接口enp1s0:0。我enp1s0偶尔使用 VPN 连接来连接互联网。我使用虚拟网络接口 IP,因此即使计算机连接到 VPN,我也可以通过 SSH 进入计算机,因为我的路由器将 SSH 流量定向到虚拟接口。这个设置有效,但是当我重新启动时,我没有互联网,直到我进入 Ubuntu GUI 网络设置并在虚拟界面上“删除连接配置文件”。当我恢复虚拟网络接口时,互联网仍然可以工作。我在 Raspberry Pi 上的 Debian 和 Ubuntu 22.04 上都遇到了这个问题,所以我倾向于认为我做错了什么。

这是我的虚拟网络接口服务..

[Unit]
Description=establish virtual interface to bypass vpn with ssh
After=network.target

[Service]
SyslogIdentifier=ssh.vpn.bypass
Type=oneshot
RemainAfterExit=yes
ExecStart=/scripts/ssh.vpn.bypass/ssh.vpn.bypass.sh "192.168.1.113" --up

ExecStop=/scripts/ssh.vpn.bypass/ssh.vpn.bypass.sh "192.168.1.113" --down

[Install]
WantedBy=default.target

这就是我设置虚拟网络接口的方式。

ip addr add "$ip" dev "$ethname" label "$ethname":0
ip rule add from "$ip" table 431
ip route add default via "$dgateway" dev "$ethname":0 table 431
iptables -A INPUT -i tun0 -p tcp -m tcp --dport 51000 -j DROP

我希望能够在虚拟网络接口启动的情况下启动,并且仍然让我的互联网正常工作。

编辑..

ip addr show当互联网正常工作并且虚拟接口启动时。

2: enp1s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether b0:41:6f:0c:2a:71 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.14/24 brd 192.168.1.255 scope global dynamic noprefixroute enp1s0
       valid_lft 83694sec preferred_lft 83694sec
    inet 192.168.1.113/32 scope global enp1s0:0
       valid_lft forever preferred_lft forever
    inet6 fe80::8ee7:418:adc1:499c/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever

ip route

default via 192.168.1.1 dev enp1s0 proto dhcp metric 100 
192.168.1.0/24 dev enp1s0 proto kernel scope link src 192.168.1.14 metric 100 

ip addr show重启后...

2: enp1s0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
    link/ether b0:41:6f:0c:2a:71 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.113/32 scope global enp1s0:0
       valid_lft forever preferred_lft forever

ip route重启后没有显示任何输出。

编辑:

重新启动后查看sudo systemctl status ssh.vpn.bypass,我的脚本没有获取它尝试获取的默认网关 IP 地址,dgateway="$(ip route | grep default | awk {'print $3'})"我收集的连接ip route在重新启动后也没有显示任何内容。

编辑:

nmcli connection show重启后显示..

NAME         UUID TYPE     DEVICE
enp1s0       xxxx ethernet enp1s0
router.wired xxxx ethernet --

如果我然后..nmcli connection up router.wired然后我恢复互联网并且..

NAME         UUID TYPE     DEVICE
router.wired xxxx ethernet enp1s0

不令人满意的解决方案..

问题是启动顺序,但到目前为止,这是一个猜谜游戏,我从来没有猜对过。我尝试了一种新方法并在启动时禁用了我的服务,而是使用了计时器单元,OnBootSec=40一切都按预期工作。我真的很想知道在我的服务启动并返回ip route show预期输出之前我缺少哪些依赖项而无法获得有效的互联网连接。

相关内容