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

IPTables Multi-VLAN NAT для нескольких IP-адресов

У меня небольшая проблема с настройкой NAT.

Что я пытаюсь сделать:

У меня есть 2 VLAN (в этом примере 100 и 200), и я хочу, чтобы они могли получить доступ к сети через отдельные IP-адреса. Это должно быть выполнено iptables NAT. Я создал эту установку с помощью pf (FreeBSD), но, к сожалению, оборудование, которое я должен использовать, несовместимо. Я бы хотел, чтобы это было в нашем основном маршрутизаторе, но процессор не справляется с такими нагрузками. С IP-таблицами и т.д. Я просто новичок;) Схема:

Пользователь в VLAN 100 (10.100.0.0/24) -> 10.100.0.1 NAT xxx.yyy.zzz.6 -> Сеть

Пользователь в VLAN 200 (10.200.0.0/24) -> 10.200.0.1 NAT xxx.yyy.zzz.7 -> Сеть

Все это на одном физическом интерфейсе, с интерфейсами VLAN и т. Д.

Это моя текущая конфигурация: / etc / network / interfaces

    lo ....

    iface ens2f3 inet static
        address xxx.yyy.zzz.6
        netmask 255.255.252.0

auto ens2f3.100
iface ens2f3.100 inet static
        address 10.100.0.1
        netmask 255.255.255.0
        vlan-raw-device ens2f3

iface ens2f3 inet static
        address xxx.yyy.zzz.7
        netmask 255.255.252.0

auto ens2f3.200
iface ens2f3.200 inet static
        address 10.200.0.1
        netmask 255.255.255.0
        vlan-raw-device ens2f3

/etc/iptables/rules.v4 (загружается автоматически)

#NAT TABLE
*nat
:PREROUTING ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING -s 10.100.0.0/24 -o ens2f3 -j SNAT --to-source xxx.yyy.zzz.6
-A POSTROUTING -s 10.200.0.0/24 -o ens2f3 -j SNAT --to-source xxx.yyy.zzz.7

COMMIT

# General Table
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
COMMIT

# I know this setup is very insecure! I lockdown the server when I got NAT working

Проблема в том, что я могу получить с 10.100.0.100, я могу подключиться к xxx.yyy.zzy.1 именно с этим IP (10.100.0.100; что не должно быть возможным) вместо IP, который я должен был получить через NAT.

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

Не могли бы вы дать мне советы о том, как реализовать это с помощью ОС на базе Linux. При необходимости у меня есть другой интерфейс 10G

Я не все анализировал, но шаг первый - исправить это:

-o ens2f3

так как вы выполняете postROUTING, решение о маршрутизации было принято, и я ожидаю, что пакет идет прямо на шлюз xxx.yyy.zzz.1, поэтому через другой интерфейс:

-o enp3s0