Назад | Перейти на главную страницу

Невозможно добавить статический IP-адрес с помощью Netplan в Ubuntu 18.04

так что у меня следующая проблема. Есть выделенный хост Ubuntu 18.04, которому должен быть назначен статический IP-адрес. Есть два интерфейса: eth0 и eth1.

eth0 не получает свой адрес через DHCP от хостера. От того же хостера мы получили еще один статический IP-адрес, который мы должны настроить на сервере. Итак, вот как выглядит конфигурация netplan:

network:
  version: 2
  renderer: networkd
  ethernets:
    eth0:
      dhcp4: yes
    eth1:
      dhcp4: no
      dhcp6: no
        addresses: [$STATIC_IP/32]
      nameservers:
        addresses: [8.8.4.4,8.8.8.8]

Когда я netplan apply, то ip a показывает

37: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP 
group default qlen 1000
link/ether ac:1f:6b:85:51:86 brd ff:ff:ff:ff:ff:ff
inet $DHCP_IP/32 scope global dynamic eth0
   valid_lft 85932sec preferred_lft 85932sec
inet6 fe80::ae1f:6bff:fe85:5186/64 scope link 
   valid_lft forever preferred_lft forever

65: eth1: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state 
DOWN group default qlen 1000
link/ether ac:1f:6b:85:51:87 brd ff:ff:ff:ff:ff:ff

Таким образом, кажется, что eth1 вообще не настроен.

Системный журнал говорит: systemd-networkd[27425]: eth1: IPv6 successfully enabled

networkd-dispatcher[10223]: WARNING:Unknown index 66 seen, reloading interface list

Я искал это предупреждение, но не нашел ничего, что могло бы мне помочь.

Это первая часть проблемы, так как я могу назначить адрес с помощью ip addr add $STATIC_IP dev eth1. Интерфейс по-прежнему отображается как ВНИЗ, но я могу пропинговать его извне:

65: eth1: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state 
DOWN group default qlen 1000
link/ether ac:1f:6b:85:51:87 brd ff:ff:ff:ff:ff:ff
inet $STATIC_IP/32 scope global eth1
   valid_lft forever preferred_lft forever

Все идет нормально.

Когда я пытаюсь настроить маршрутизацию, чтобы этот интерфейс использовался и впоследствии отображался как IP-адрес отправителя, я получаю следующее. Имейте в виду, что я точно не знаю адрес шлюза, но я могу его пропинговать:

$ ip addr add default via $STATIC_IP_GATEWAY table staticip

приводит к Error: Nexthop has invalid gateway.

Я пробовал всевозможные другие комбинации, и на данный момент я в тупике и не знаю, моя ли это неспособность или хостера.

Вкратце: мне дали статический IP-адрес и я хочу использовать его для интерфейса, чтобы этот статический IP-адрес отображался как исходный адрес, когда я связываюсь с чем-то с этого сервера.

Что мне не хватает? Как это обычно делается?

Заранее спасибо, и я с радостью предоставлю дополнительную информацию по мере необходимости.

В конце концов, я разобрался. Настройте один интерфейс на два IP-адреса:

network:
  version: 2
  renderer: networkd
  ethernets:
    eth0:
      dhcp4: yes
      addresses: [$STATIC_IP/32]

затем добавьте таблицу iproute:

echo "mytable >> /etc/iproute2/rt_tables

добавить правило:

ip rule add from all lookup mytable

добавить маршрут в таблицу:

ip route add default via $DHCP_GATEWAY src $STATIC_IP table mytable

Возможно, кому-то это пригодится.