enp1s0
레이블에 가상 네트워크 인터페이스를 설정했습니다 enp1s0:0
. 저는 enp1s0
가끔 VPN 연결을 사용하여 인터넷에 연결합니다. 내 라우터가 SSH 트래픽을 가상 인터페이스로 전달하기 때문에 VPN에 연결되어 있어도 컴퓨터에 SSH로 연결할 수 있도록 가상 네트워크 인터페이스 IP를 사용합니다. 이 설정은 작동합니다.하지만 재부팅하면 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
전에 작동하는 인터넷 연결을 얻기 위해 어떤 종속성이 누락되었는지 알고 싶습니다.