NAT'ing в сети, не подключенной напрямую

Со следующей конфигурацией UFW, добавленной в начало before.rules (помимо всех соответствующих предварительных условий, таких как включение IP-маршрутизации на самой платформе, изменение политики пересылки по умолчанию с DROP на ACCEPT и включение IP пересылки в конфигурации UFW):

*nat :POSTROUTING ACCEPT [0:0] -A POSTROUTING -s 10.100.0.0/24 -o ens3 -j MASQUERADE
COMMIT

должна ли подсеть 10.100.0.0/24 напрямую подключаться к любому из интерфейсов виртуальной машины Ubuntu, на которой запущен этот UFW? Если да, то как мне настроить UFW на NAT? не подключенный напрямую к Интернету? Например:

UserA--10.100.0.x/24---10.100.0.1/24--(Router1)--1.1.1.1/24-----1.1.1.2/24--(UFW)--Internet

Заранее большое спасибо!

0
задан 8 December 2020 в 17:32

1 ответ

UFW — это интерфейс для netfilter, использующий для настройки iptables.
Это означает, что когда вы пытаетесь редактировать файл конфигурации, вы редактируете правила iptables. Поэтому вы можете найти помощь в руководстве по iptables.

Каждое правило iptables делает две вещи:

  1. соответствует IP-пакету
  2. выполняет действие над пакетом

В случае интересующего вас правила, оно будет соответствовать любому пакету, который уже был отправить из интерфейса ens3 и имеет исходный IP-адрес в сети 10.100.0.0/24. После сопоставления он будет транслирован по NAT на IP-адрес интерфейса ens3.

ПЕРЕДАЧА - нет UFW

Я подозреваю, что вы сделали предположение, когда задавали свой вопрос, и вы не сказали, какую реальную проблему вы пытаетесь решить. Похоже, вы не можете перенаправить сеть 10.100.0.0/24 в Интернет.Вопрос похож на XY Проблема
Если вы маршрутизируете трафик через Linux, вы должны включить переадресацию IP.
Чтобы проверить, включена ли переадресация, выполните:

echo /proc/sys/net/ipv4/ip_forward

Вы получите ответ 0 для отключено и 1 для включено.

Если не используется UFW, вы можете включить его навсегда, отредактировав /etc/sysctl.conf:

echo "net.ipv4.ip_forward = 1" | sudo tee -a /etc/sysctl.conf

Вышеупомянутая команда добавит текст в кавычки в указанный файл.
Чтобы применить новую настройку, запустите:

sudo sysctl -p

UFW

Хотя указанная выше настройка будет работать с UFW, было бы разумно придерживаться базовой конфигурации ufw.
Проверьте конфигурацию UFW:

sudo ufw status verbose

Вы можете увидеть, что политика routed по умолчанию отключена:

Default: deny (incoming), allow (outgoing), disabled (routed)

Теперь отредактируйте /etc/ufw/sysctl.conf . Настройки в этом файле перезапишут /etc/sysctl.conf
. В приведенном выше файле найдите строку #net/ipv4/ip_forward=1 и удалите #.
Сохраните файл и перезагрузите ufw:

sudo ufw reload

При отображении подробного статуса на этот раз вы должны увидеть изменение политики маршрутизации по умолчанию с отключено на запретить.

Чтобы разрешить выполнение маршрутизации:

sudo ufw default allow routed

Эта команда изменит строку /etc/default/ufw с

DEFAULT_FORWARD_POLICY="DROP"

на

DEFAULT_FORWARD_POLICY="ACCEPT"

MASQUERADE

С указанными выше настройками ваши правила в ]/etc/ufw/before.rules должны работать, но они должны быть до *filter.Также рекомендуется очистить правила -F перед добавлением новых -A. В противном случае каждый раз, когда служба ufw будет перезапущена, она добавит еще одну копию того же правила.

*nat 
:POSTROUTING ACCEPT [0:0]
-F
-A POSTROUTING -s 10.100.0.0/24 -o ens3 -j MASQUERADE
COMMIT

После применения этих настроек ufw необходимо перезагрузить:

sudo ufw reload

Статус ufw не будет отображать конфигурацию NAT, но его можно проверить, проверив iptables с помощью:

sudo iptables -t nat -L -v

и Цепочка POSTROUTING должна выглядеть следующим образом:

Chain POSTROUTING (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target     prot opt in     out     source               destination         
0     0 MASQUERADE  all  --  any    ens3    10.100.0.0/24        anywhere

Помните, что ваш брандмауэр также должен иметь обратный маршрут к вашей сети 10.100.0.0/24.

0
ответ дан 8 December 2020 в 03:11

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

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