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
预期输出之前我缺少哪些依赖项而无法获得有效的互联网连接。