На этот вопрос уже есть ответ здесь:
Когда я добавляю 2 интерфейса ( eth0 LAN, eth1 WAN) со статическими IP-адресами (или, возможно, также с DHCP), сервер Ubuntu 18.04 добавляет 2 шлюза по умолчанию. Это не цель.
Как я могу определить только 1 шлюз по умолчанию?
Файл: /etc/netplan/01-netcfg.yaml
network:
version: 2
renderer: networkd
ethernets:
eth0:
addresses:
- 172.16.1.22/16
gateway4: 172.16.0.1
nameservers:
search: [mydomain.internal]
addresses: [172.16.1.2, 172.16.1.1]
eth1:
addresses:
- 172.19.3.235/24
gateway4: 172.19.3.1
nameservers:
addresses: [195.50.xxx.xxx,195.50.xxx.xxx]
ip route
показывает:
user@server:~$ ip route default via 172.19.3.1 dev eth1 proto static default via 172.16.0.1 dev eth0 proto static 172.16.0.0/16 dev eth0 proto kernel scope link src 172.16.1.22 172.19.3.0/24 dev eth1 proto kernel scope link src 172.19.3.134
2 GW по умолчанию .... ..
В моем случае GW по умолчанию из eth1 - единственный, который мне нужен.
Просто удалите конфигурацию шлюза из eth0
интерфейс.
Опустите строку, которая говорит gateway4: 172.16.0.1
.
Вы все еще сможете достигнуть хостов в 172.16.x.y
подсеть через eth0
, так как это непосредственно соединено там.
Если необходимо получить доступ к другим хостам в той сети (например, интранет с частными адресами в диапазонах RFC1918), то просто добавляют статические маршруты для доступа к тем сетям с помощью 172.16.0.1 шлюзов. Посмотрите эту ссылку для маршрутизации в Netplan, который должен помочь Вам добавить статические маршруты.
Если Вы получаете своего дюйм/с через DHCP, это должно быть главным образом то же... Но затем Вам нужен сервер DHCP, который вручает Вам IP на eth0
не установить любые шлюзы... Кажется, нет хорошего пути в Netplan для отключения шлюза, который Вы получаете от DHCP. (Хотя networkd может сделать это, см. этот комментарий к другому ответу для попытки обратиться к этому.)