Я пытаюсь сделать эквивалент этого правила iptables в firewalld
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
Как я могу сделать это?
Для настройки маскировки внешней зоны, введите:
# firewall-cmd --zone=external --add-masquerade
внешняя : Для использования на внешних сетях с включенной маскировкой специально для маршрутизаторов. Вы не доверяете другим компьютерам в сети, чтобы не навредить вашему компьютеру. Принимаются только выбранные входящие соединения.
internal: Для использования во внутренних сетях. В основном вы доверяете другим компьютерам в сети, чтобы не навредить вашему компьютеру. Принимаются только выбранные входящие соединения.
Для справки:
Или вы можете добавить правило к своему: /etc/firewalld/direct.xml файл, например:
firewall-cmd --reload
Вы не используете такие правила напрямую. Вы просто помещаете свой интерфейс (eth0) во внешнюю зону , которая уже предварительно настроена в RHEL7 / CentOS7 и для нее включен маскарад, или вы можете включить маскарад в зоне, в которой находится ваш интерфейс. По умолчанию она общедоступна . Итак, правильный ответ будет либо:
# firewall-cmd --zone=public --add-masquerade
, либо
# firewall-cmd --change-zone=eth0 --zone=external
Это действительно все, что вам нужно сделать. Чтобы включить NAT только для определенной подсети или диапазона, вам потребуется Rich Rule или Direct rule. Это немного сложнее. Вы также можете просто отказаться от пакетов для других, что тоже вариант.