tun 인터페이스를 생성하고 systemd-networkd의 .netdev 및 .network 파일을 통해 주소와 피어를 추가하려고 합니다. 저는 Ubuntu 22.04.3 LTS와 systemd 249를 사용하고 있습니다.
다음 두 가지 구성 파일이 있습니다.
/etc/systemd/network/991-tun1.netdev
[NetDev]
Name=tun1
Kind=tun
[Tun]
User=me
/etc/systemd/network/991-tun1.network
[Match]
Name=tun1
[Network]
Address=192.168.3.1/24
IPForward=yes
[Address]
Address=192.168.3.1/24
Peer=192.168.3.2/24
다시 시작하면 tun1 인터페이스가 정상적으로 생성되지만 주소가 없습니다.
me@host:~$ ip a
...
4: tun1: <NO-CARRIER,POINTOPOINT,MULTICAST,NOARP,UP> mtu 1500 qdisc fq_codel state DOWN group default qlen 500
link/none
그러나 ifconfig를 사용하면 예상대로 주소가 추가됩니다.
me@host:~$ sudo ifconfig tun1 192.168.3.1 pointopoint 192.168.3.2 netmask 255.255.255.0
me@host:~$ ip a
...
4: tun1: <NO-CARRIER,POINTOPOINT,MULTICAST,NOARP,UP> mtu 1500 qdisc fq_codel state DOWN group default qlen 500
link/none
inet 192.168.3.1 peer 192.168.3.2/24 scope global tun1
valid_lft forever preferred_lft forever
다시 시작한 후 로그에서 이를 볼 수 있습니다.
me@host:~$ sudo journalctl --unit systemd-networkd -fe|grep tun1
...
systemd-networkd[513]: tun1: loaded tun
systemd-networkd[513]: tun1: Created
systemd-networkd[513]: tun1: netdev has index 4
systemd-networkd[513]: tun1: Permanent MAC address not found for new device, continuing without: Operation not supported
systemd-networkd[513]: tun1: Link 4 added
systemd-networkd[513]: tun1: Saved original MTU 1500 (min: 68, max: 65535)
systemd-networkd[513]: tun1: Flags change: +MULTICAST +POINTOPOINT +NOARP
systemd-networkd[513]: tun1: link pending udev initialization...
systemd-networkd[513]: tun1: udev initialized link
systemd-networkd[513]: tun1: State changed: pending -> initialized
systemd-networkd[513]: tun1: Link state is up-to-date
systemd-networkd[513]: tun1: found matching network '/etc/systemd/network/991-tun1.network'.
systemd-networkd[513]: tun1: State changed: initialized -> configuring
systemd-networkd[513]: Setting '/proc/sys/net/ipv6/conf/tun1/disable_ipv6' to '0'
systemd-networkd[513]: Setting '/proc/sys/net/ipv6/conf/tun1/use_tempaddr' to '0'
systemd-networkd[513]: Setting '/proc/sys/net/ipv6/conf/tun1/accept_ra' to '0'
systemd-networkd[513]: Setting '/proc/sys/net/ipv6/conf/tun1/proxy_ndp' to '0'
systemd-networkd[513]: Setting '/proc/sys/net/ipv4/conf/tun1/promote_secondaries' to '1'
systemd-networkd[513]: tun1: Requested to set IPv6LL address generation mode
systemd-networkd[513]: tun1: Requested to set master interface
systemd-networkd[513]: tun1: Requested to activate link
systemd-networkd[513]: tun1: Requesting address: 192.168.3.1/24 (valid forever, preferred forever), flags: n/a
systemd-networkd[513]: tun1: Requesting address: 192.168.3.1 peer 192.168.3.2/24 (valid forever, preferred forever), flags: n/a
systemd-networkd[513]: tun1: Setting addresses
systemd-networkd[513]: tun1: link_check_ready(): link layer is configuring.
systemd-networkd[513]: tun1: link_check_ready(): link layer is configuring.
systemd-networkd[513]: tun1: link_check_ready(): link layer is configuring.
systemd-networkd[513]: tun1: link_check_ready(): link layer is configuring.
systemd-networkd[513]: tun1: link_check_ready(): link layer is configuring.
systemd-networkd[513]: tun1: link_check_ready(): link layer is configuring.
systemd-networkd[513]: tun1: link_check_ready(): link layer is configuring.
systemd-networkd[513]: tun1: link_check_ready(): link layer is configuring.
systemd-networkd[513]: tun1: Setting IPv6LL address generation mode
systemd-networkd[513]: tun1: Setting master interface
systemd-networkd[513]: tun1: IPv6LL address generation mode set.
systemd-networkd[513]: tun1: master interface set.
systemd-networkd[513]: tun1: link_check_ready(): link is not activated.
systemd-networkd[513]: tun1: Bringing link up
systemd-networkd[513]: tun1: Flags change: +UP
systemd-networkd[513]: tun1: Link UP
systemd-networkd[513]: tun1: link_check_ready(): static addresses are not configured.
systemd-networkd가 tun1 인터페이스에 주소를 추가하지 않는 이유와 주소를 추가하는 방법은 무엇입니까?
답변1
체계네트워킹(예: NetworkManager)는 인터페이스의 주소 구성에 영향을 미치는 캐리어 상태에 반응합니다.
NO-CARRIER
TUN/TAP 인터페이스의 경우 사용자 공간 프로세스(예: )가 인터페이스에 올바르게 연결될 때까지 상태가 유지됩니다 ssh -w ...
. 그러면 가상 베어러 상태가 감지됨으로 전환됩니다. 기본적으로 구성의 다음 부분(예: 주소 추가)만 적용됩니다.네트워킹.
캐리어 상태를 무시하도록 하려면 다음 매개변수를 장치에 추가해야 합니다.
[Network]
ConfigureWithoutCarrier=yes
IgnoreCarrierLoss=yes
특히설명하다ConfigureWithoutCarrier
말하다:
[...] 네트워크에 운영자가 없더라도 특정 링크를 구성할 수 있습니다. [...]
두 번째 매개변수(첫 번째 매개변수가 활성화되면 기본적으로 활성화될 수 있으므로 실제로는 필요하지 않을 수 있음)를 사용하면 ssh -w ...
설정을 변경하지 않고도 TUN 인터페이스에 연결된 사용자 공간 프로세스를 중지하고 다시 시작할 수 있습니다.