Начнем с небольшого описания нужных операций в iptables:
Синтаксис: iptables -t *таблица* *команда*
Ключи:
-L — список правил
-F — удалить все правила
-A — добавить правило
пример: iptables -t *таблица* -A *цепочка* *правило*
-D — удалить правило
пример: iptables -t *таблица* -D *цепочка* *номер правила*
-
Настройка доступа в интернет
Рассмотрим пример настройки доступа в интернет:
Предположим, что 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