Локальный адрес ссылки 169.254.xx, назначенный при загрузке, несмотря на статический IP-адрес на 20.04 LTS

Я изо всех сил пытался настроить свою машину Ubuntu как простой маршрутизатор с двумя сетевыми адаптерами с NAT, пытаясь придерживаться самых последних рекомендуемых методов, а именно netplan для сетевых адаптеров и ufw для межсетевого экрана и для iptables. Мне, наконец, удалось получить его маршрутизацию, но я не могу понять, почему при загрузке система назначает локальный адрес канала (169.254.xx) моему сетевому адаптеру LAN в дополнение к статическому IP-адресу, как если бы он делал Запрос DHCP и не получил ответа. После применения sudo netplan адрес 169.254.x.x пропадает.

Я не уверен, что это вызывает какие-либо проблемы в моей сети, но я этого не понимаю и меня это беспокоит :-). Любые подсказки приветствуются!

Вот моя сетевая топология:

  ISP router            Ubuntu router          Win10 Client 
[           ]   [ wan1              lan1 ]   [             ]
[192.168.1.1]---[192.168.1.8  192.168.9.1]---[192.168.9.10 ]
[           ]   [           (169.254.x.x)]   [  (static)   ]
[           ]   [(dhcp)          (static)]   [             ]

В настоящее время я не настраивал ни DHCP-сервер, ни DNS-демон на машине Ubuntu (я собираюсь сделать это в ближайшее время).

Обратите внимание, что этот компьютер был установлен как рабочий стол Ubuntu (сейчас я сожалею) и что я включил systemd-networkd и отключил NetworkManager с помощью systemctl unmask / enable / start systemd-networkd и systemctl остановить / отключить / замаскировать NetworkManager .

После перезагрузки lan1 назначается 169.254.x.x адрес:

> ~ ip a
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
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: lan1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 50:3e:aa:12:aa:cb brd ff:ff:ff:ff:ff:ff
    inet 192.168.9.1/24 brd 192.168.9.255 scope global lan1
       valid_lft forever preferred_lft forever
    inet 169.254.232.216/16 brd 169.254.255.255 scope global noprefixroute lan1
       valid_lft forever preferred_lft forever
    inet6 fe80::523e:aaff:fe12:aacb/64 scope link
       valid_lft forever preferred_lft forever
3: wan1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether e0:69:95:e4:d5:e8 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.8/24 brd 192.168.1.255 scope global dynamic wan1
       valid_lft 86239sec preferred_lft 86239sec
    inet6 fe80::e269:95ff:fee4:d5e8/64 scope link
       valid_lft forever preferred_lft forever
> ~ route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.1.1     0.0.0.0         UG    203    0        0 wan1
169.254.0.0     0.0.0.0         255.255.0.0     U     202    0        0 lan1
192.168.1.0     0.0.0.0         255.255.255.0   U     203    0        0 wan1
192.168.1.1     0.0.0.0         255.255.255.255 UH    100    0        0 wan1
192.168.9.0     0.0.0.0         255.255.255.0   U     0      0        0 lan1

После повторного применения netplan вручную с помощью sudo netplan apply адрес 169.254.x.x пропал.

> ~ route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.1.1     0.0.0.0         UG    203    0        0 wan1
192.168.1.0     0.0.0.0         255.255.255.0   U     203    0        0 wan1
192.168.1.1     0.0.0.0         255.255.255.255 UH    100    0        0 wan1
192.168.9.0     0.0.0.0         255.255.255.0   U     0      0        0 lan1

Некоторые подробности о моей настройке:

/etc/netplan/01-router-all.yaml

network:
  version: 2
  renderer: networkd

  ethernets:
    wan1:
      match:
        macaddress: "e0:69:95:e4:d5:e8"
      set-name: wan1
      dhcp4: true
      accept-ra: false

    lan1:
      match:
        macaddress: "50:3e:aa:12:aa:cb"
      set-name: lan1
      dhcp4: false
      dhcp6: false
      addresses: [192.168.9.1/24]
      nameservers:
        addresses: [9.9.9.9, 1.1.1.1]
        search: []
     optional: true 
     accept-ra: false

/etc/ufw/before.rules

# rules.before
#
# Rules that should be run before the ufw command line added rules. Custom
# rules should be added to one of these chains:
#   ufw-before-input
#   ufw-before-output
#   ufw-before-forward
#

# NAT table rules
*nat
:POSTROUTING ACCEPT [0:0]

# Forward traffic from lan1 to wan1
-A POSTROUTING -s 192.168.9.0/24 -o wan1 -j MASQUERADE

# don't delete the 'COMMIT' line or these nat table rules won't
# be processed
COMMIT

# Don't delete these required lines, otherwise there will be errors
*filter
:ufw-before-input - [0:0]
:ufw-before-output - [0:0]
:ufw-before-forward - [0:0]
:ufw-not-local - [0:0]
# End required lines

-A ufw-before-forward -i lan1 -o wan1 -j ACCEPT
-A ufw-before-forward -i wan1 -o lan1 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT

[rest of file unchanged]
0
задан 19 July 2020 в 16:59

1 ответ

Оказывается, проблема была в /etc/dhcpcd.conf .

При переходе от NetworkManager к systemd-networkd , я прокомментировал конец этого файла, содержащего название интерфейсов (насколько я помню, он был автоматически заполнен изменениями NetWork Manager, которые я сделал через nmtui , когда попробовал два статических IPs).

Я подозреваю, что DHCP-клиент (необходимый для сетевой карты wan eno1 ) пытался назначить адрес сетевой карте, а также не знал, что он статический (так как я не Так сказать в dhcpcd.conf ), и без ответа ему был назначен адрес 169.254.xx . Теперь он работает, и у меня есть статический адрес только после добавления 2 строк в конце /etc/dhcpcd.conf :

interface enp1s0
   static ip_address=192.168.9.1/24

Я думаю, что сэкономил бы часы установки, если бы я установил сервер Ubuntu против рабочего стола и не должен был переключаться на systemd-networkd . Но я многому научился на этом пути.

Примечание : с тех пор, как я опубликовал свой вопрос, я настроил DHCP-сервер ( isc-dhcp-server ), и чтобы заставить его работать, меня заставили чтобы удалить псевдоним lan1 , поэтому я вернулся к использованию enp1s0 (вместо lan1 , использованного в приведенном выше вопросе).

Working / etc / dhcpcd.conf :

# A sample configuration for dhcpcd.
# See dhcpcd.conf(5) for details.

# Allow users of this group to interact with dhcpcd via the control socket.
#controlgroup wheel

# Inform the DHCP server of our hostname for DDNS.
hostname

# Use the hardware address of the interface for the Client ID.
#clientid
# or
# Use the same DUID + IAID as set in DHCPv6 for DHCPv4 ClientID as per RFC4361.
# Some non-RFC compliant DHCP servers do not reply with this set.
# In this case, comment out duid and enable clientid above.
duid

# Persist interface configuration when dhcpcd exits.
persistent

# Rapid commit support.
# Safe to enable by default because it requires the equivalent option set
# on the server to actually work.
option rapid_commit

# A list of options to request from the DHCP server.
option domain_name_servers, domain_name, domain_search, host_name
option classless_static_routes
# Respect the network MTU. This is applied to DHCP routes.
option interface_mtu

# Most distributions have NTP support.
option ntp_servers

# A ServerID is required by RFC2131.
require dhcp_server_identifier

noipv6rs
noipv6

# Generate SLAAC address using the Hardware Address of the interface
#slaac hwaddr
# OR generate Stable Private IPv6 Addresses based from the DUID

# mc 2020-07-18 commented below
#slaac private
interface enp1s0
        static ip_address=192.168.9.1/24
        #static routers=192.168.1.1
        #static domain_name_servers=9.9.9.9
#interface eno1
#        static ip_address=192.168.1.111/24
#        static routers=192.168.1.1
#        static domain_name_servers=9.9.9.9 149.112.112.112
0
ответ дан 30 July 2020 в 22:05

Другие вопросы по тегам:

Похожие вопросы: