У меня небольшая проблема с настройкой 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