Настройка доступа к интернету и проброс портов в Linux c помощью iptables и командной строки

Начнем с небольшого описания нужных операций в iptables:

Синтаксис: iptables -t *таблица* *команда*

Ключи:
-L — список правил
-F — удалить все правила
-A — добавить правило
пример: iptables -t *таблица* -A *цепочка* *правило*
-D — удалить правило

пример: iptables -t *таблица* -D *цепочка* *номер правила*

  1. Настройка доступа в интернет

Рассмотрим пример настройки доступа в интернет:

Предположим, что eth0 подключен к провайдеру и имеет IP-адрес в его подсети, допустим 199.199.199.2.
eth1 подключен к компьютеру в локальной сети, которому нужно обеспечить доступ в Интернет через NAT.
eth1 имеет адрес 10.10.10.1.
IP-адрес компьютера, которому необходимо обеспечить доступ — 10.10.10.2

Даем доступ интерфейсу eth1 с IP-адреса 10.10.10.2:

iptables -t nat -A POSTROUTING -s 10.10.10.2 -o eth1 -j MASQUERADE

или всей подсети:

iptables -t nat -A POSTROUTING -s 10.10.10.0/24 -o eth1 -j MASQUERADE

2. Проброс порта

В зависимости от ситуации внешний порт можно пробросить на локальную машину.

Например, у нас имеется ftp сервер внутри сети — 10.10.10.2 порт 21,и нам нужно разрешить пользователям подключаться к нему из Интернета.
Внешний адрес — 199.199.199.2, адрес ftp — 10.10.10.2, порт — 21.

iptables -t nat -A PREROUTING --dst 199.199.199.2 -p tcp --dport 21 -j DNAT --to-destination 10.10.10.2
iptables -I FORWARD -i eth0 -o eth1 -d 10.10.10.2 -p tcp -m tcp --dport 21 -j ACCEPT

Первое правило добавляется в табицу трасляции (-t nat), оно перенапрявляет пакеты, посланные на порт 21, с адреса 199.199.199.2 на 10.10.10.2.
Второе правило разрешает пакетам проходить по данному маршруту.

Для проброса более одного порта используется двоеточие.
Например для проброса всех портов используйте комманды:

iptables -t nat -A PREROUTING --dst 199.199.199.2 -p tcp --dport 1024:65535 -j DNAT --to-destination 10.10.10.2
iptables -I FORWARD -i eth0 -o eth1 -d 10.10.10.2 -p tcp -m tcp --dport 1024:65535 -j ACCEPT

В случае переадресации внешний порт можно изменить, например, с 21 на 4321.
Например, нам надо замаскировать сервис так, чтобы при подключении к 199.199.199.2:4321 клиент попадал на 192.168.0.2:21.
Для этого добавляем правила:

iptables -t nat -A PREROUTING --dst 199.199.199.2 -p tcp -m tcp --dport 4321 -j DNAT --to-destination 10.10.10.2:21
iptables -I FORWARD -i eth0 -o eth1 -d 10.10.10.2 -p tcp -m tcp --dport 21 -j ACCEPT

Добавить комментарий

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.