четверг, 22 февраля 2018 г.

Проброс портов в firewalld и iptables в CentOS7

Проброс портов в 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