Нам нужно настроить хост OpenBSD для использования шлюза по умолчанию, находящегося за пределами его подсети. Это все, что мне нужно сделать в Linux (а не фактические IP-адреса) для этого:
ifconfig eth0 33.33.33.33/31 up
route add 33.33.33.254 dev eth0
route add default gw 33.33.33.254
Проблема в том, что мы не знаем надлежащего эквивалента средней команды в OpenBSD. На странице руководства говорится:
Если пункт назначения напрямую доступен через интерфейс, для которого не требуется промежуточная система в качестве шлюза, следует указать модификатор -iface;
К сожалению, мы не можем понять, как заставить это работать. Это виртуальный хост на сервере OVH, у них есть документация для многих других операционных систем, показывающая, как это сделать здесь: http://help.ovh.co.uk/BridgeClient
Это старая ветка, но вот она.
Так случилось, что я запустил несколько виртуальных машин OpenBSD на ESXi 6.0, работающей в SoYouStart, дочерней компании OVH. Настройка сети такая же, как и в случае с OVH, и я думаю, что, хотя и странно, его основная цель - максимально устранить трафик ARP путем искусственного ограничения широковещательных доменов и, например, без необходимости использования VLAN.
В моем случае я запросил у OVH дополнительные IP-адреса, и они поступают из совершенно другого диапазона. Для обсуждения здесь предположим, что это мои настройки:
Чтобы настроить маршрутизацию на хосте OpenBSD, мне нужно сделать следующее:
ifconfig vmx0 inet 192.0.2.64 255.255.255.255
route add -inet 213.0.113.254 -llinfo -link -static -iface vmx0
route add -inet default 213.0.113.254
Чтобы все это было сделано в начале, я игнорирую /etc/mygate
файл и поместите следующее в /etc/hostname.vmx0
:
inet 192.0.2.64 255.255.255.255
!sleep 2
!route add -inet 213.0.113.254 -llinfo -link -static -iface vmx0
!route add -inet default 213.0.113.254
Вы заметите sleep
команда - по какой-то причине это требуется в OpenBSD 5.9, но не было раньше. Без sleep
, первый из route
Команды не будут выполняться, и поэтому ваша маршрутизация не будет настроена правильно.
Это работает с использованием следующего трюка:
route
командой переводим IP-адрес шлюза (213.0.113.254) в адрес ссылки (MAC-адрес); это делается -llinfo
вариант; route
команду, используя -link
вариант, мы устанавливаем адрес ссылки на таблицу маршрутизации и с помощью -iface vmx0
мы сообщаем ядру, через какой сетевой интерфейс доступен этот адрес ссылки; то -static
переключатель отмечает его как введенную вручную запись в таблицу маршрутизацииroute
команда теперь может быть успешной, так как маршрут к шлюзу по умолчанию теперь известенОдна вещь, с которой я столкнулся в приведенной выше настройке, для которой у меня пока нет решения, - это то, что один из четырех хостов OpenBSD, настроенных точно таким же образом, работает с той же версией ОС и точно такой же сборкой ядра, и даже запуск на том же хосте VMware каждые 24 часа или около того, кажется, "теряет" этот волшебный маршрут из своей таблицы маршрутизации ...
У меня была та же проблема, что и у Майка, и мне было трудно получить OpenBSD для правильной маршрутизации назначенного IP-адреса. Как и в случае с OVH, выделенные серверы на myLoc.de предоставляют IP-адреса с сетевой маской 255.255.255.255, которые необходимо маршрутизировать «точка-точка» внутри виртуальной машины. Я уже сталкивался с этим в других гостевых ОС. В Debian 10 я бы настроил внешний IP-адрес в гостевой системе следующим образом:
# nano /etc/network/interfaces
iface eth0 inet static
address 56.78.91.56/32 ## this is the additional external IP
pointopoint 99.78.91.101 ## this is the gateway for the additional IP (which in my case is also the main IP of the server)
gateway 99.78.91.101
... и в Ubuntu 18.04 с использованием netplan
соответствующая часть будет выглядеть так, которая работает с использованием on-link
:
network:
version: 2
renderer: networkd
ethernets:
eth0: #Interface-Name
addresses:
- 56.78.91.56/32 ## additional external IP
routes:
- to: 0.0.0.0/0
via: 99.78.91.101 ## gateway for the additional IP
on-link: true
Настраивая это с помощью ip
команда с помощью onlink
вариант я бы сделал следующее:
ip addr add 56.78.91.56/32 dev eth0
ip route add default via 99.78.91.101 dev eth0 onlink
Каким-то образом route
команда задокументирована в OpenBSD и FreeBSD не очень ясно давала понять, как я могу сделать то же самое в BSD, и почти не было примеров, которые можно было бы найти с помощью веб-поиска. Возможно, для тех, кто более знаком с сетями, ответ очевиден. Я наконец заставил его работать как раз перед тем, как я нашел более полный ответ Майка в отдельной статье, которую он опубликовал. Поэтому я дополню его ответ конфигурацией, которая действительно работает в OpenBSD 6.6 (eth0 - это просто заполнитель для фактического имени интерфейса):
ifconfig eth0 -inet 56.78.91.56/32
route -v add -inet 99.78.91.101/32 -link -iface eth0
route -v add -inet default 99.78.91.101
Эти команды создают таблицу маршрутизации с соответствующими строками, например:
route -n show -inet
Routing tables - Internet:
Destination Gateway Flags Refs Use Mtu Prio Iface
default 99.78.91.101 UGS 5 52 - 8 eth0
99.78.91.101 cc:aa:d2:4f:08:8f UHLSh 1 30 - 8 eth0 # MAC address on the server
56.78.91.56 7a:33:f7:42:44:7e UHLl 0 26 - 1 eth0 # MAC address of the VM
56.78.91.56/32 56.78.91.56 UCn 0 0 - 4 eth0
Чтобы навсегда сохранить конфигурацию OpenBSD 6.6 в папке /etc/hostname.eth0
файл используйте следующий. (Очевидно, для выполнения всех команд требуется 2-секундная задержка.)
inet 56.78.91.56/32
!sleep 2
!route -v add -inet 99.78.91.101/32 -link -iface eth0
!route -v add -inet default 99.78.91.101
В настоящее время это работает на сервере Proxmox 6 с OpenBSD в качестве гостя, работающего в KVM. Внешний IP-адрес привязан к виртуальному мосту на сервере. Я не знаю, есть ли у многих серверных компаний dedi такие настроенные сети, что затрудняет настройку, но я столкнулся с этим на Webtropia, Servdiscount (оба подключены к myLoc) и видел похожие вопросы на Hetzner.
Попробуйте вместо этого настроить псевдоним в интерфейсе:
ifconfig eth0 alias 33.33.33.254
OpenBSD, вероятно, будет иметь другое имя интерфейса, чем eth0, в зависимости от используемого драйвера.