Поговорим о том как с помощью iptables в linux пробросить порт с белого на серый адрес, а также перенаправить с одного порта на другой.
Постановка задачи:
У нас имеется компьютер под управлением linux, выступающий в роли маршрутизатора с одним внешним интерфейсом для доступа в Интернет и внутренним интерфейсом локальной сети. Требуется пробросить tcp порт (50544) с белого ip-адреса на серый ip-адрес, используя для этого iptables.
Алгоритм проброса портов в iptables.
В принципе все довольно просто, необходимо добавить всего 2 правила.
1. Правило для подмены внешнего ip-адреса (11.11.11.11) на внутренний ip-адрес (192.168.1.100) для заданного порта (50544).
iptables -t nat -A PREROUTING -p tcp -m tcp -d 11.11.11.11 --dport 50544 -j DNAT --to-destination 192.168.1.10:50544
2. Правило для подмены внутреннего ip-адреса (192.168.1.100) на внешний ip-адрес (11.11.11.11) для заданного порта (50544).
iptables -t nat -A POSTROUTING -p tcp -m tcp -s 192.168.1.100 --sport 50544 -j SNAT --to-source 11.11.11.11:50544
Не забываем сохраняться.
service iptables save
Или
/etc/init.d/iptables save
Посмотреть текущие правила iptables можно с помощью команды:
iptables -L -t nat
Пример:
ADMIN-GURU:/# iptables -L -t nat Chain PREROUTING (policy ACCEPT) target prot opt source destination DNAT tcp -- anywhere 11.11.11.11 tcp dpt:50544 to:192.168.1.10:50544 Chain INPUT (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination Chain POSTROUTING (policy ACCEPT) target prot opt source destination SNAT tcp -- 192.168.1.100 anywhere tcp spt:50544 to:11.11.11.11:50544
Таким же образом можно организовать проброс траффика между разными портами, а именно трафик с 11.11.11.11:50544 на 192.168.1.100:50111
iptables -t nat -A PREROUTING -p tcp -m tcp -d 11.11.11.11 --dport 50544 -j DNAT --to-destination 192.168.1.100:50111 iptables -t nat -A POSTROUTING -p tcp -m tcp -s 192.168.1.100 --sport 50111 -j SNAT --to-source 11.11.11.11:50544
Вот и все, на этом рассмотрение проброса портов в операционных системах под управлением Linux с помощью iptables завершено.
Компонент комментариев CComment