У меня свежая установка Ubuntu Server 17.10, однако проблема может повлиять на предыдущие версии, но я впервые столкнулся с такой ситуацией.
На сервере запущены 2 отдельные сетевые карты: одна для внутренней локальной сети (доверенная), а другая - публичное (ненадежное) подключение к Интернету через интернет-провайдера.
В прошлом я всегда настраивал внутреннее соединение как статическое и без шлюза по умолчанию, поскольку внешняя карта предоставлялась через DHCP от моего провайдера (статическая аренда).
/etc/netplan/00-netcfg.yaml
network:
version: 2
renderer: networkd
ethernets:
eth0:
dhcp4: no
dhcp6: no
addresses: [192.168.1.xx/24]
nameservers:
addresses: [8.8.8.8,8.8.4.4]
eth1:
dhcp4: yes
dhcp6: no
Теперь это работало нормально, так как я не предоставлял строку gateway4 в конфигурации eth0, поэтому он связывал шлюз по умолчанию от ISP и работал нормально.
С тех пор я решил, что хочу использовать статическую аренду для серверов в моей homelab, и настроил так на внутреннем маршрутизаторе. Но когда я настроил конфигурацию netplan как dhcp для обоих устройств, он добавляет шлюз по умолчанию для обоих интерфейсов (что имеет смысл, поскольку оба DHCP-сервера предоставляют шлюз).
> 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 100 0 0 eth0
0.0.0.0 173.xxx.xxx.1 0.0.0.0 UG 100 0 0 eth1
173.xxx.xxx.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
173.xxx.xxx.1 0.0.0.0 255.255.255.255 UH 100 0 0 eth1
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
192.168.1.1 0.0.0.0 255.255.255.255 UH 100 0 0 eth0
Как настроить netplan так, чтобы адаптер eth0 (внутренний) игнорировал шлюз по умолчанию, предоставляемый DHCP-сервером (без удаления шлюза на самом DHCP-сервере, поскольку другим машинам по-прежнему требуется шлюз по умолчанию).