Ubuntu версии 20.04.
Сначала мы создали второй частный IP-адрес на единственном (основном) сетевом интерфейсе. Оба частных IP-адреса могут быть опрошены. Теперь у экземпляра 2 частных IP-адреса, 1 общедоступный IP-адрес.
Затем мы подключили дополнительный сетевой интерфейс с двумя частными IP-адресами (без общедоступного IP-адреса) и подключили его к экземпляру, а затем добавили.yaml, следуя этой статье . Теперь у экземпляра 4 частных IP-адреса, 1 публичный IP-адрес. Не удалось проверить связь со всеми четырьмя частными IP-адресами.
First Private IP Second Private IP
Primary Network Interface 172.31.1.101 172.31.1.102
Secondary Netwk Interface 172.31.2.201 172.31.2.202
/etc/netplan/50-cloud-init.yaml:
network:
ethernets:
ens5:
addresses:
- 172.31.1.102/20
dhcp4: true
dhcp6: false
match:
macaddress: 0e:dc:a1:64:a6:88
set-name: ens5
version: 2
Дополнительный сетевой интерфейс /etc/netplan/51-ens6.yaml:
network:
version: 2
renderer: networkd
ethernets:
ens6:
addresses:
- 172.31.2.201/20
- 172.31.2.202/20
dhcp4: no
routes:
- to: 0.0.0.0/0
via: 172.31.0.1 # Default gateway
table: 1000
- to: 172.31.2.201
via: 0.0.0.0
scope: link
table: 1000
- to: 172.31.2.202
via: 0.0.0.0
scope: link
table: 1000
routing-policy:
- from: 172.31.2.201
table: 1000
- from: 172.31.2.202
table: 1000
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: ens5: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9001 qdisc mq state UP group default qlen 1000
link/ether 0e:54:c0:50:88:04 brd ff:ff:ff:ff:ff:ff
inet 172.31.1.102/20 brd 172.31.15.255 scope global ens5
valid_lft forever preferred_lft forever
inet 172.31.1.101/20 brd 172.31.15.255 scope global secondary dynamic ens5
valid_lft 3574sec preferred_lft 3574sec
inet6 fe80::c54:c0ff:fe50:8804/64 scope link
valid_lft forever preferred_lft forever
3: ens6: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 0e:ff:4a:aa:cb:66 brd ff:ff:ff:ff:ff:ff
inet 172.31.2.201/20 brd 172.31.15.255 scope global ens6
valid_lft forever preferred_lft forever
inet 172.31.2.202/20 brd 172.31.15.255 scope global secondary ens6
valid_lft forever preferred_lft forever
inet6 fe80::cff:4aff:feaa:cb66/64 scope link
valid_lft forever preferred_lft forever
ip r показать таблицу 1000
вывод:
default via 172.31.0.1 dev ens5 proto dhcp src 172.31.1.101 metric 100
172.31.0.0/20 dev ens6 proto kernel scope link src 172.31.2.201
172.31.0.0/20 dev ens5 proto kernel scope link src 172.31.1.102
172.31.0.1 dev ens5 proto dhcp scope link src 172.31.1.101 metric 100
ip rule
вывод:
0: from all lookup local
0: from 172.31.2.201 lookup 1000
0: from 172.31.2.202 lookup 1000
32766: from all lookup main
32767: from all lookup default
netplan --debug generate
вывод:
DEBUG:command generate: running ['/lib/netplan/generate']
** (generate:2245): DEBUG: 00:33:01.254: Processing input file /etc/netplan/50-cloud-init.yaml..
** (generate:2245): DEBUG: 00:33:01.254: starting new processing pass
** (generate:2245): DEBUG: 00:33:01.255: Processing input file /etc/netplan/51-ens6.yaml..
** (generate:2245): DEBUG: 00:33:01.255: starting new processing pass
** (generate:2245): DEBUG: 00:33:01.255: We have some netdefs, pass them through a final round of validation
** (generate:2245): DEBUG: 00:33:01.255: ens5: setting default backend to 1
** (generate:2245): DEBUG: 00:33:01.255: Configuration is valid
** (generate:2245): DEBUG: 00:33:01.255: ens6: setting default backend to 1
** (generate:2245): DEBUG: 00:33:01.255: Configuration is valid
** (generate:2245): DEBUG: 00:33:01.255: Generating output files..
** (generate:2245): DEBUG: 00:33:01.255: NetworkManager: definition ens5 is not for us (backend 1)
** (generate:2245): DEBUG: 00:33:01.255: NetworkManager: definition ens6 is not for us (backend 1)
(generate:2245): GLib-DEBUG: 00:33:01.255: posix_spawn avoided (fd close requested)
Полный объединенный конфиг netplan выглядит так:
network:
renderer: networkd
version: 2
ethernets:
ens5:
addresses:
- 172.31.1.102/20
dhcp4: true
dhcp6: false
match:
macaddress: 0e:dc:a1:64:a6:88
set-name: ens5
ens6:
addresses:
- 172.31.2.201/20
- 172.31.2.202/20
dhcp4: no
routes:
- to: 0.0.0.0/0
via: 172.31.0.1 # Default gateway
table: 1000
- to: 172.31.2.201
via: 0.0.0.0
scope: link
table: 1000
- to: 172.31.2.202
via: 0.0.0.0
scope: link
table: 1000
routing-policy:
- from: 172.31.2.201
table: 1000
- from: 172.31.2.202
table: 1000
Здесь стоит отметить, что вы явно определяете маршруты к 172.31.2.201 и 172.31.2.202 в вашей политике маршрутизации. В этом нет необходимости, так как это локальные адреса.
Ваша итоговая таблица маршрутизации показывает:
172.31.0.0/20 dev ens5 proto kernel scope link src 172.31.1.102
172.31.0.1 dev ens5 proto dhcp scope link src 172.31.1.101 metric 100
Конечно, вы не настроили эти маршруты как часть вашей политики маршрутизации. Я не уверен, что это ожидаемое поведение в результате того, что эти маршруты являются локальными маршрутами устройства. Тем не менее, эти маршруты являются основной причиной того, что вы не можете пропинговать адреса 172.31.2.x, потому что есть два конфликтующих маршрута для 172.31.0.0/20 с одинаковой метрикой маршрута (приоритетом), и есть маршрут хоста, объявляющий, что ваш шлюз должен быть направлен через ens5, что означает, что остальная часть вашей политики маршрутизации не имеет эффекта, потому что весь нелокальный трафик отправляется через ens5.
Вам нужно выяснить источник этих маршрутов - поскольку они не исходят из конфигурации netplan, которую вы показали - и удалить их, чтобы решить проблему с пингом.