так что у меня следующая проблема. Есть выделенный хост 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
Возможно, кому-то это пригодится.