Инфраструктура : Microsoft Azure ОС : Ubuntu 18.04
Проблема: Мы назначили 2 карты NIC (та же подсеть). Мы можем использовать SSH с первичным IP-адресом (20.71.0.21), но не можем подключиться к вторичному адресу (20.71.0.22). Это работает на Ubuntu 16.04. Я хочу проложить маршрут.
> :~# ip r l
> default via 10.171.0.1 dev eth0 proto dhcp src 20.71.0.21
> metric 100
> 20.71.0.0/24 dev eth0 proto kernel scope link src 20.71.0.21
> 20.71.0.0/24 dev eth1 proto kernel scope link src 20.71.0.22
> 168.63.129.16 via 20.71.0.1 dev eth0 proto dhcp src 20.71.0.21 metric 100
> 169.254.169.254 via 20.71.0.1 dev eth0 proto dhcp src 20.71.0.21 metric 100
> :~# route -n
> Kernel IP routing table Destination Gateway
> Genmask Flags Metric Ref Use Iface
> 0.0.0.0 20.71.0.1 0.0.0.0 UG 100 0 0 eth0
> 20.71.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
> 20.71.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
> 168.63.129.16 20.71.0.1 255.255.255.255 UGH 100 0 0 eth0
> 169.254.169.254 20.71.0.1 255.255.255.255 UGH 100 0 0 eth0
: ~ # cat /etc/netplan/50-cloud-init.yaml
ethernets: eth0: dhcp4: правда dhcp4-overrides: маршрут-метрика: 100 dhcp6: ложь совпадение: macaddress: 00: 0d: 3a: ab: xx: xx имя-набора: eth0 eth1: dhcp4: правда dhcp4-overrides: маршрут-метрика: 200 dhcp6: ложь совпадение: macaddress: 00: 0d: 3a: xx: xx: xx имя-набора: eth1 версия: 2
> :~# cat /etc/netplan/60-static.yaml network:
> version: 2
> ethernets:
> eth0:
> addresses:
> - 20.71.0.21/24
> eth1:
> addresses:
> - 20.71.0.22/24
Как мы можем решить эту проблему?
Теперь у меня есть решение для 2-го сетевого адаптера, маршрутизируемого в Интернет, выполните следующие команды, чтобы настроить маршруты для 2-го сетевого адаптера.
#et_ip=`ip addr show eth1 | awk '/inet / {split($2, a, "/"); print a[1]}'`
#def_gw=`ip route show | awk '$1 ~ "default" {print $3}'`
#sudo ip route add default via $def_gw dev eth1 table 11
#sudo ip rule add from $et_ip table 11
Вышеупомянутые шаги настроят вторую сетевую карту, а также сделают IP-маршрутизацию через Интернет (если вторая сетевая карта настроена с любым общедоступным IP-адресом), указанные выше маршруты не сохраняются при перезагрузках. Вам либо нужно создать службу systemd для запуска этих маршрутов во время загрузки, либо вы можете добавить вышеупомянутые параметры маршрута, упомянутые в шаге 3, в свой файл профиля .bashrc (~ / .bashrc)
Параметр постоянных маршрутов через службу Systemd:
1) Создайте файл с приведенным ниже содержимым в любом каталоге. В качестве примера я создал в каталоге / sbin.
root @ ubuntu18-2: / sbin # cat route.sh
#!/bin/bash
et_ip=`ip addr show eth1 | awk '/inet / {split($2, a, "/"); print a[1]}'`
def_gw=`ip route show | awk '$1 ~ "default" {print $3}'`
ip route add default via $def_gw dev eth1 table 11
ip rule add from $et_ip table 11
2) После создания файла обязательно установите правильное разрешение
#chmod 777 **/sbin/route.sh**
3) Теперь создайте файл с именем route.service в / etc / systemd / system со следующим содержимым
root @ ubuntu18-2: / etc / systemd / system # cat route.service
[Unit]
Description=To configure routes for 2nd NIC
[Service]
ExecStart=/sbin/route.sh
Type=oneshot
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target
4) Один раз / etc / Создается файл systemd / system / route.service, выполните приведенную ниже команду, чтобы убедиться, что служба настроена на запуск во время загрузки.
#sudo systemctl enable route
#sudo systemctl start route
Спасибо :)