우분투: netplan이 dhcp를 비활성화합니다

우분투: netplan이 dhcp를 비활성화합니다

시스템 IP 구성 b4 netplan 편집:

root@pro-rpi-02:/# ip a sh
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether dc:a6:32:b3:45:e0 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.2/26 brd 192.168.1.63 scope global eth0
       valid_lft forever preferred_lft forever
    inet 192.168.1.7/26 brd 192.168.1.63 scope global secondary eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::4569:7d7a:108d:c2ad/64 scope link
       valid_lft forever preferred_lft forever

Netplan에 VLAN을 추가했습니다.

root@pro-rpi-02:/# more /etc/netplan/01-netcfg.yaml
network:
  version: 2
  renderer: networkd
  ethernets:
    eth0:
      dhcp4: no
      addresses:
        - 192.168.1.2/26
      gateway4: 192.168.1.10
      nameservers:
          addresses: [192.168.1.24]
          search: [hello.home]
  vlans:
    vlan.8:
      id: 8
      link: eth0
      dhcp4: no
      addresses:
        - 192.168.8.2/24

이제 재미있는 부분은 다음과 같습니다.

root@pro-rpi-02:/cluster/Radius# ip addr sh
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether dc:a6:32:b3:45:e0 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.2/26 brd 192.168.1.63 scope global eth0
       valid_lft forever preferred_lft forever
    inet 192.168.1.5/26 brd 192.168.1.63 scope global secondary eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::4569:7d7a:108d:c2ad/64 scope link
       valid_lft forever preferred_lft forever
3: wlan0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc fq_codel state DOWN group default qlen 1000
    link/ether dc:a6:32:b3:45:e1 brd ff:ff:ff:ff:ff:ff
4: vlan.8@eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether dc:a6:32:b3:45:e0 brd ff:ff:ff:ff:ff:ff
    inet 192.168.8.2/24 brd 192.168.8.255 scope global vlan.8
       valid_lft forever preferred_lft forever
    inet 192.168.8.112/24 brd 192.168.8.255 scope global secondary noprefixroute vlan.8
       valid_lft forever preferred_lft forever

내가 왜 DHCP 주소가 192.168.8.112/24인지 설명할 수 있는 사람이 있나요? 아니면 적어도 어디서부터 볼 수 있는지 알려주세요.

root@pro-rpi-02:/# netplan --debug generate
DEBUG:command generate: running ['/lib/netplan/generate']
** (generate:750570): DEBUG: 12:17:28.037: Processing input file /etc/netplan/01-netcfg.yaml..
** (generate:750570): DEBUG: 12:17:28.038: starting new processing pass
** (generate:750570): DEBUG: 12:17:28.038: We have some netdefs, pass them through a final round of validation
** (generate:750570): DEBUG: 12:17:28.038: eth0: setting default backend to 1
** (generate:750570): DEBUG: 12:17:28.038: Configuration is valid
** (generate:750570): DEBUG: 12:17:28.038: vlan.8: setting default backend to 1
** (generate:750570): DEBUG: 12:17:28.039: Configuration is valid
** (generate:750570): DEBUG: 12:17:28.040: Generating output files..
** (generate:750570): DEBUG: 12:17:28.040: openvswitch: definition eth0 is not for us (backend 1)
** (generate:750570): DEBUG: 12:17:28.040: NetworkManager: definition eth0 is not for us (backend 1)
** (generate:750570): DEBUG: 12:17:28.040: openvswitch: definition vlan.8 is not for us (backend 1)
** (generate:750570): DEBUG: 12:17:28.040: NetworkManager: definition vlan.8 is not for us (backend 1)

업데이트 1, 요청한 대로 출력은 다음과 같습니다. 여기서는 여전히 도움이 될 만한 내용이 표시되지 않습니다. :)

root@pro-rpi-02:~# networkctl --full --all --no-pager status
● 1: lo
                     Link File: /usr/lib/systemd/network/99-default.link
                  Network File: n/a
                          Type: loopback
                         State: carrier (unmanaged)
                           MTU: 65536
                         QDisc: noqueue
  IPv6 Address Generation Mode: eui64
          Queue Length (Tx/Rx): 1/1
                       Address: 127.0.0.1

● 2: eth0
                     Link File: /usr/lib/systemd/network/99-default.link
                  Network File: /run/systemd/network/10-netplan-eth0.network
                          Type: ether
                         State: routable (failed)
                          Path: platform-fd580000.ethernet
                        Driver: bcmgenet
                    HW Address: dc:a6:32:b3:45:e0 (Raspberry Pi Trading Ltd)
                           MTU: 1500 (min: 68, max: 1500)
                         QDisc: mq
  IPv6 Address Generation Mode: eui64
          Queue Length (Tx/Rx): 5/5
              Auto negotiation: yes
                         Speed: 1Gbps
                        Duplex: full
                          Port: mii
                       Address: 192.168.1.2
                                192.168.1.5
                                192.168.1.7
                                fe80::4569:7d7a:108d:c2ad
                       Gateway: 192.168.1.10
                           DNS: 192.168.1.24
                Search Domains: hello.home
             DHCP6 Client DUID: DUID-EN/Vendor:0000ab112ca77a819cd16ac00000

Mar 10 22:03:14 pro-rpi-02 systemd-networkd[926]: eth0: IPv6 successfully enabled
Mar 10 22:03:14 pro-rpi-02 systemd-networkd[926]: eth0: Link UP
Apr 19 16:51:22 pro-rpi-02 systemd-networkd[926]: eth0: Gained carrier
Apr 19 16:51:24 pro-rpi-02 systemd-networkd[926]: eth0: Gained IPv6LL
Apr 20 16:32:48 pro-rpi-02 systemd-networkd[926]: eth0: DHCPv6 lease lost
Apr 20 16:32:48 pro-rpi-02 systemd-networkd[672911]: eth0: Gained IPv6LL
Apr 20 16:32:48 pro-rpi-02 systemd-networkd[672911]: eth0: IPv6 successfully enabled
Apr 20 16:32:48 pro-rpi-02 systemd-networkd[672911]: eth0: Could not set route: Nexthop has invalid gateway. Network is unreachable
Apr 20 16:32:48 pro-rpi-02 systemd-networkd[672911]: eth0: Failed

● 3: wlan0
                     Link File: /usr/lib/systemd/network/99-default.link
                  Network File: n/a
                          Type: wlan
                         State: no-carrier (unmanaged)
                          Path: platform-fe300000.mmcnr
                        Driver: brcmfmac
                    HW Address: dc:a6:32:b3:45:e1 (Raspberry Pi Trading Ltd)
                           MTU: 1500 (min: 68, max: 1500)
                         QDisc: fq_codel
  IPv6 Address Generation Mode: none
          Queue Length (Tx/Rx): 1/1

Apr 19 16:51:22 pro-rpi-02 systemd-networkd[926]: wlan0: Link UP

● 4: vlan8
                     Link File: /usr/lib/systemd/network/99-default.link
                  Network File: /run/systemd/network/10-netplan-vlan8.network
                          Type: vlan
                         State: routable (configuring)
                        Driver: 802.1Q VLAN Support
                    HW Address: dc:a6:32:b3:45:e0 (Raspberry Pi Trading Ltd)
                           MTU: 1500 (max: 65535)
                         QDisc: noqueue
  IPv6 Address Generation Mode: eui64
                       VLan Id: 8
          Queue Length (Tx/Rx): 1/1
              Auto negotiation: yes
                         Speed: 1Gbps
                        Duplex: full
                          Port: mii
                       Address: 192.168.8.2
                                192.168.8.112
                       Gateway: 192.168.8.10
             DHCP6 Client DUID: DUID-EN/Vendor:0000ab112ca77a819cd16ac00000

Apr 20 16:32:48 pro-rpi-02 systemd-networkd[672911]: vlan8: netdev ready
Apr 20 16:32:49 pro-rpi-02 systemd-networkd[672911]: vlan8: Link UP
Apr 20 16:32:49 pro-rpi-02 systemd-networkd[672911]: vlan8: Gained carrier
Apr 20 16:32:49 pro-rpi-02 systemd-networkd[672911]: vlan8: IPv6 successfully enabled

답변1

여기서 수정 사항을 찾는 데 X시간을 보낸 후, 저는 그냥 비활성화하기로 결정했습니다.dhcpcd서비스:

root@pro-rpi-02:~# systemctl status dhcpcd.service
● dhcpcd.service - DHCP Client Daemon
     Loaded: loaded (/lib/systemd/system/dhcpcd.service; disabled; vendor preset: enabled)
     Active: inactive (dead)
       Docs: man:dhcpcd(8)

이제 모든 것이 내가 원하는 대로 작동하고 있습니다.

root@pro-rpi-02:~# more /etc/netplan/01-netcfg.yaml
network:
  version: 2
  renderer: networkd
  ethernets:
    eth0:
      dhcp4: no
      dhcp6: no
      addresses:
        - 192.168.1.2/26
      gateway4: 192.168.1.10
      nameservers:
          addresses: [192.168.1.24]
          search: [hello.home]
  vlans:
    vlan8:
      id: 8
      link: eth0
      dhcp4: no
      dhcp6: no
      addresses:
        - 192.168.8.2/24
root@pro-rpi-02:~# ip a sh vlan8
4: vlan8@eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether dc:a6:32:b3:45:e0 brd ff:ff:ff:ff:ff:ff
    inet 192.168.8.2/24 brd 192.168.8.255 scope global vlan8
       valid_lft forever preferred_lft forever
    inet6 fe80::dea6:32ff:feb3:45e0/64 scope link
       valid_lft forever preferred_lft forever

답변2

기록에 따르면 Ubuntu 18.04에서 20.04로 업그레이드하고 netplan을 사용하면서 IPv6에서도 비슷한 문제가 발생했습니다. 이제 두 개의 IPv6 주소가 있다는 것을 알았습니다.

  1. 자동 DHCP? 하나2001:19f0:6801:1dc3:5400:3ff:feeb:abea
  2. 내가 정적으로 선택한 사용자 정의2001:19f0:6801:1dc3::1
> ip addr
[...]
2: enp1s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 56:00:03:eb:ab:ea brd ff:ff:ff:ff:ff:ff
    inet 217.69.14.107/23 brd 217.69.15.255 scope global enp1s0
       valid_lft forever preferred_lft forever
    inet6 2001:19f0:6801:1dc3:5400:3ff:feeb:abea/64 scope global dynamic mngtmpaddr noprefixroute 
       valid_lft 2591957sec preferred_lft 604757sec
    inet6 2001:19f0:6801:1dc3::1/64 scope global 
       valid_lft forever preferred_lft forever
    inet6 fe80::5400:3ff:feeb:abea/64 scope link 
       valid_lft forever preferred_lft forever
> curl ifconfig.io
2001:19f0:6801:1dc3:5400:3ff:feeb:abea

그리고 DHCP가 첫 번째이므로 기본적으로 사용되며 이는 내가 원하는 것이 아닙니다(더 짧은 사용자 정의 IPv6를 사용하고 싶습니다).

dhcp6을 비활성화하려고 시도했지만 dhcp6: noDHCP 주소는 항상 존재했습니다. 또한 사용자 지정 주소를 먼저 갖도록 순서를 변경하는 쉬운 방법도 찾지 못했습니다. 많은 시행착오 끝에 이것이 DHCP가 아닌 "라우터 광고"에 의해 발생했다는 사실을 발견했습니다. 따라서 이를 비활성화 accept-ra: no하고 기본 경로를 수동으로 설정해야 했습니다. 이 경로도 라우터 광고에 의해 구성되었기 때문입니다.

내 최종 구성 파일은 다음과 같습니다.

network:
  version: 2
  renderer: networkd
  ethernets:
    enp1s0:
      dhcp4: yes
      accept-ra: no # otherwise we get auto IPv6 too
      addresses: ['2001:19f0:6801:1dc3::1/64']
      gateway6: fe80::fc00:3ff:feeb:abea

(여기서는 로컬 확인자를 실행하고 있기 때문에 여기에는 네임서버를 지정하지 않았지만 사용자가 지정해야 할 수도 있습니다.)

그리고 마침내 사용자 정의 IPv6만 갖게 되었고 제대로 작동합니다.

> ip addr
[...]
2: enp1s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 56:00:03:eb:ab:ea brd ff:ff:ff:ff:ff:ff
    inet 217.69.14.107/23 brd 217.69.15.255 scope global dynamic enp1s0
       valid_lft 86397sec preferred_lft 86397sec
    inet6 2001:19f0:6801:1dc3::1/64 scope global 
       valid_lft forever preferred_lft forever
    inet6 fe80::5400:3ff:feeb:abea/64 scope link 
       valid_lft forever preferred_lft forever
> curl ifconfig.io
2001:19f0:6801:1dc3::1

관련 정보