Двойная сетевая карта, настроенная как маршрутизатор с NAT

У меня есть ПК с Ubuntu 18.04, и я пытаюсь настроить два интерфейса GbE в качестве шлюза / маршрутизатора. Я ответил на некоторые связанные вопросы и попытался следовать руководствам, например, этому: Как сделать простой маршрутизатор \ шлюз из Ubuntu Server 18.04 LTS .

Высокоуровневое намерение состоит в том, чтобы одна из сетевых карт была интерфейсом «WAN» (enp2s0), получающим свой адрес, серверы имен, шлюз и т. Д. Через DHCP от другого маршрутизатора, расположенного дальше по потоку (18.1.0.0/24), а другая сетевая карта служит «ЛОКАЛЬНЫМ» интерфейсом (enp0s31f6), подключенным к ряду устройств со статически назначенными адресами в альтернативной подсети (192.168.0.0/24). Желательно, чтобы устройства, подключенные к статической сети уровня 2 (192.168.0.0/24), могли подключиться к сети WAN уровня 3 (18.1.0.0/24), которая, в свою очередь, может обеспечивать выход в Интернет в зависимости от конфигурации. Для этого между двумя подсетями должен быть протокол SNAT.

Вот диаграмма топологии сети для справки: Шлюз / маршрутизатор с двумя сетевыми картами

Используя конфигурацию ниже, я вижу, что устройства в «ЛОКАЛЬНОЙ» сети (192.168.0.0/24) могут получать доступ к другим устройствам в той же подсети, могут получить доступ к самому интерфейсу WAN по адресу 18.1.0.0/24 (который фактически назначается DHCP), но не может успешно выйти за пределы интерфейса WAN на другие устройства 18.1.0.0/24 в этой сети (проверка связи с известными устройствами по адресам 18.1.0.0/24 не возвращает маршрут принимать гостей).

Я попытался настроить интерфейсы через netplan, как показано ниже:

network:
  ethernets:
      enp2s0:
        #WAN
        dhcp4: yes
        dhcp4-overrides:
          route-metric: 100
        gateway4: 18.1.0.1
        nameservers: [8.8.8.8, 8.8.4.4]
      enp0s31f6:
        #LOCAL
        addresses:
        - 192.168.0.1/24
        dhcp4: no
  version: 2

Затем я включил переадресацию IP через sudo nano /etc/sysctl.conf и раскомментирование net.ipv4.ip_forward = 1

Наконец (после перезагрузки) я настроил IP-таблицы для SNAT и основных правил брандмауэра через:

sudo iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o enp2s0 -j MASQUERADE
sudo iptables -A FORWARD -m state --state ESTABLISHED -j ACCEPT
sudo iptables -A FORWARD -m state --state RELATED -j ACCEPT
sudo iptables -A FORWARD -i enp2s0 -o enp0s31f6 -m state --state RELATED,ESTABLISHED -j ACCEPT
sudo apt-get install iptables-persistent

Для тестирования я подключил устройство к «ЛОКАЛЬНОЙ» сетевой карте (192.168.0.0/24) с резервированием статического адреса в этой подсети (192.168.0.99/24 для тестирования) и со шлюзом, настроенным на адрес сетевой карты шлюза (192.168.0.1). 0.1 в этом примере). Я могу «видеть» (пинговать) шлюз и другие устройства, статически назначенные на 192.168.0.0 / 24 и адрес самого сетевого адаптера WAN (назначенный DHCP, в настоящее время 18.1.0.94) без проблем, но не может связаться (проверить связь) с другими устройствами в подсети 18.1.0.0/24, которые, как я знаю, там есть.

Буду очень признателен за любые советы о том, чего мне может не хватать в конфигурации здесь!

Обновление с сохранением таблиц IP

По запросу в комментариях, вот файл правил, созданный вышеуказанными командами iptables (rules.v4):

# Generated by iptables-save v1.6.1 on Wed Sep  2 16:25:54 2020
*filter
:INPUT ACCEPT [117:21241]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [103:6753]
-A FORWARD -m state --state ESTABLISHED -j ACCEPT
-A FORWARD -m state --state RELATED -j ACCEPT
COMMIT
# Completed on Wed Sep  2 16:25:54 2020
# Generated by iptables-save v1.6.1 on Wed Sep  2 16:25:54 2020
*nat
:PREROUTING ACCEPT [18:1766]
:INPUT ACCEPT [18:1766]
:OUTPUT ACCEPT [70:5183]
:POSTROUTING ACCEPT [70:5183]
-A POSTROUTING -s 192.168.0.0/24 -o enp2s0 -j MASQUERADE
COMMIT
# Completed on Wed Sep  2 16:25:54 2020
0
задан 31 August 2020 в 21:35

1 ответ

Для тех, кто снова находит этот вопрос, я обнаружил причину, если не решение. Конфигурация Docker нашей системы добавляла правила в таблицы IP-адресов, которые каким-то образом мешали функциям маршрутизации NIC. После удаления этой установки Docker конфигурация, описанная в вопросе, работает должным образом!

0
ответ дан 27 October 2020 в 14:54

Другие вопросы по тегам:

Похожие вопросы: