Со следующей конфигурацией 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
Заранее большое спасибо!
UFW — это интерфейс для netfilter, использующий для настройки iptables.
Это означает, что когда вы пытаетесь редактировать файл конфигурации, вы редактируете правила iptables. Поэтому вы можете найти помощь в руководстве по iptables.
Каждое правило iptables делает две вещи:
В случае интересующего вас правила, оно будет соответствовать любому пакету, который уже был отправить из интерфейса ens3
и имеет исходный IP-адрес в сети 10.100.0.0/24. После сопоставления он будет транслирован по NAT на IP-адрес интерфейса ens3
.
Я подозреваю, что вы сделали предположение, когда задавали свой вопрос, и вы не сказали, какую реальную проблему вы пытаетесь решить. Похоже, вы не можете перенаправить сеть 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:
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"
С указанными выше настройками ваши правила в ]/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.