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

Преобразование правила IPTables в правило Firewalld для перенаправления

Я не очень знаком с сетевыми вещами, и мне трудно понять, как работает hay firewalld.

Я разрабатываю службу REST, фактически прослушивая порт 8080, и я хочу иметь возможность отправлять запросы на порт 80, которые будут перенаправлены на 8080.

Для этого в CentOS 6 я использовал iptables и такое правило:

iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080

Я перешел на CentOS 7, и даже iptables все еще существует и все еще работает, тот факт, что firewalld является программным обеспечением брандмауэра по умолчанию, заставляет меня думать, что я должен начать использовать это программное обеспечение ... Дело в том, что я не могу понять, как оно работает, и как преобразовать мое единственное правило iptables в правило firewalld. Я знаю, что firewalld "понимает" правила iptables (на самом деле, я использую это правило с firewalld, чтобы продолжать работать), но я хочу знать, как это сделать, и я также хотел бы сделать это правило постоянным.

Спасибо

Использовать --add-forward-port для настройки переадресации портов.

Из firewall-cmd страница руководства:

       --add-forward-port=port=portid[-portid]:proto=protocol[:toport=portid[-portid]][:toaddr=address[/mask]]
       [--timeout=timeval]
           Add the IPv4 forward port for zone. If zone is omitted, default
           zone will be used. This option can be specified multiple times. If
           a timeout is supplied, the rule will be active for the specified
           amount of time and will be removed automatically afterwards.
           timeval is either a number (of seconds) or number followed by one
           of characters s (seconds), m (minutes), h (hours), for example 20m
           or 1h.

           The port can either be a single port number portid or a port range
           portid-portid. The protocol can either be tcp, udp, sctp or dccp.
           The destination address is a simple IP address.

Итак, вы бы сделали что-то вроде:

firewall-cmd --zone=whatever --add-forward-port=port=80:proto=tcp:toport=8080

И если он сделает то, что ты хочешь, сделать это постоянным.

iptables - это инструмент брандмауэра по умолчанию, и вы можете найти его установленным во всех версиях Linux. firewalld - удобный инструмент, поэтому пользователь может взаимодействовать с «правилами iptables», даже не подозревая об этом. Кажется, очень просто использовать команды firewall-cmd ..., поскольку вы можете на лету выбирать заранее определенные зоны и службы (которые автоматически переводятся на определенные порты). Вы можете перезагрузить firewalld.service без перезагрузки или каких-либо неудобств.

Вы все еще можете использовать iptables в CentOS7, но вам нужно отключить firewalld (и замаскировать его еще лучше):

systemctl stop firewalld
systemctl disable firewalld
systemctl mask firewalld

Установите iptables-services и iptables-utils:

yum install -y iptables-services iptables-utils

Теперь вы готовы использовать iptables на CentOS7.

Если вам нужно сохранить конфигурацию, чтобы пережить перезагрузку:

iptables-save >/etc/sysconfig/iptables

и если вы хотите изменить последовательность ваших правил iptables, вы можете отредактировать их файл (например, / your_file), а затем:

iptables-restore </your_file

и правила будут восстановлены.

надеюсь, что это поможет тебе