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

Двойная сетевая карта, молча отклоняющая весь входящий трафик с одного интерфейса

На моем сервере есть две карты Ethernet:

В обеих сетях любой входящий трафик из двух общедоступных IP-адресов направлено на сервер. Итак, фактически любой SSH, HTTP и т.д. x.x.x.x должен быть отправлен 192.168.0.7 и любой трафик на y.y.y.y должен быть отправлен 172.16.0.7.

К сожалению, это работает только для один из них сразу. Иногда (после отключения и повторного подключения сервера к Интернету, например, после перезагрузки) это работает для enp0s17 а иногда для enp0s18 но никогда для обоих в то же время. (Итак, оба маршрутизатора маршрутизируют правильно, похоже, проблема сервера.)

Та же проблема касается исходящего трафика, протестированного с помощью curl --interface enp0s1X ....

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

Есть ли у кого-нибудь идеи, что может вызвать эту проблему или как ее решить?

Для тестирования я полностью отключил брандмауэр, так что это не должно быть проблемой.

(Оба интерфейса также используют делегирование префикса IPv6, но я просто не упомянул его, поскольку он работает правильно.)

Оба маршрутизатора - это Ubiquiti EdgeRouters. IP-адреса статически выдаются DHCP-серверами на маршрутизаторах. Конфигурация сети выполняется с помощью netplan. Использование Ubuntu 20.04.

Мой netplan config:

network:
    version: 2
    renderer: networkd
    ethernets:
       enp0s17:
          dhcp4: yes
          dhcp6: yes
       enp0s18:
          dhcp4: yes
          dhcp6: yes

маршрут по умолчанию:

default via 192.168.0.1 dev enp0s17 proto dhcp src 192.168.0.7 metric 100 
default via 172.16.0.1 dev enp0s18 proto dhcp src 172.16.0.7 metric 100 
172.16.0.0/16 dev enp0s18 proto kernel scope link src 172.16.0.7 
172.16.0.1 dev enp0s18 proto dhcp scope link src 172.16.0.7 metric 100 
172.17.0.0/16 dev docker0 proto kernel scope link src 172.17.0.1 
172.18.0.0/16 dev br-b20299b5e473 proto kernel scope link src 172.18.0.1 
172.19.0.0/16 dev br-ba582f6855c2 proto kernel scope link src 172.19.0.1 
192.168.0.0/24 dev enp0s17 proto kernel scope link src 192.168.0.7 
192.168.0.1 dev enp0s17 proto dhcp scope link src 192.168.0.7 metric 100
default via 192.168.0.1 dev enp0s17 proto dhcp src 192.168.0.7 metric 100 
default via 172.16.0.1 dev enp0s18 proto dhcp src 172.16.0.7 metric 100 

Ваша проблема в том, что у вас есть два маршрута по умолчанию - у вас может быть только один. Ваши входящие данные в порядке. Но когда ваш сервер отправляет ответ, поскольку у вас есть два маршрута по умолчанию, сервер чередует эти два маршрута. т.е., половина пакетов идет в неправильном направлении.

Вам нужно выбрать один интерфейс по умолчанию, и вам нужно будет добавить явные маршруты для других сетей.