Проброс портов в firewalld и iptables в CentOS7
Проброс портов через firewalld
Просмотр статуса сервиса firewalld
# systemctl status firewalld
Просмотр созданных правил
# firewall-cmd --list-all
public (active)
target: default
icmp-block-inversion: no
interfaces: ens32
sources:
services: dhcpv6-client ssh
ports: 80/tcp
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
Пробросить порт 9006 на 80 порт сервера 10.200.16.216
# firewall-cmd --zone=public --add-masquerade --permanent
# firewall-cmd --zone=public --add-forward-port=port=9006:proto=tcp:toport=80:toaddr=10.200.16.216 --permanent
Перезагрузка службы и применение настроек
# firewall-cmd --reload
Проброс портов через iptables
Сервиса iptables не существует. Iptables – это набор команд для изменения пакетного фильтра netfilter, встроенного в ядро Linux. Для работы netfilter необходимы две таблицы: таблица filter и таблица nat
Просмотр действующих правил таблицы filter
# iptables --list
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Просмотр правил всех таблиц
# service iptables status
Таблица: filter
Chain INPUT (policy ACCEPT)
num target prot opt source destination
Chain FORWARD (policy ACCEPT)
num target prot opt source destination
Chain OUTPUT (policy ACCEPT)
num target prot opt source destination
Таблица: nat
Chain PREROUTING (policy ACCEPT)
num target prot opt source destination
Chain POSTROUTING (policy ACCEPT)
num target prot opt source destination
Chain OUTPUT (policy ACCEPT)
num target prot opt source destination
Файл настроек iptables - /etc/sysconfig/iptables
В файле два блока – для таблицы nat и таблицы filter
# Generated by iptables-save v1.4.7 on Tue Dec 31 10:19:33 2013
*nat
:PREROUTING ACCEPT [146:9375]
:POSTROUTING ACCEPT [457:36459]
:OUTPUT ACCEPT [457:36459]
COMMIT
# Completed on Tue Dec 31 10:19:33 2013
# Generated by iptables-save v1.4.7 on Tue Dec 31 10:19:33 2013
*filter
:INPUT ACCEPT [4027:397752]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [3661:1561691]
COMMIT
# Completed on Tue Dec 31 10:19:33 2013
Для возможности проброса портов необходимо включить переадресацию трафика на уровне ядра
# echo 1 | sudo tee /proc/sys/net/ipv4/ip_forward
Чтобы настройка сохранялась после перезагрузки используйте такую команду:
# sysctl -w net.ipv4.ip_forward=1
Пробросить порт 9006 на 80 порт сервера 10.200.16.216
# iptables -t nat -A PREROUTING -i eth2 -p tcp --dport 9006 -j DNAT --to-destination 10.200.16.216:80
# iptables -t nat -A POSTROUTING -o eth0 -p tcp --dport 80 -d 10.200.16.216 -j SNAT --to-source 10.200.16.227
Сохранение настроек
# service iptables save