Разбираюсь с iptables. Прошу совета. (Теория iptables. Проброс портов, натирование.)

Для новичков как вообще в Linux, так и в конкретной теме, к которой относится вопрос.

Модератор: Bizdelnick

Sendo
Сообщения: 31
ОС: Mandriva 2007, FreeBSD 6.2

Разбираюсь с iptables. Прошу совета.

Сообщение Sendo »

Здравствуйте.
Настраиваю шлюз на основе Linux.
Читаю iptables tutorial. Не могу догнать один момент:
мне нужно пронатить пакеты с компьютера из локалки - понимаю, что само натирование делается в цепочке POSTROUTING таблицы nat,
для этого добавляю

Код: Выделить всё

$IPTABLES -t nat -A POSTROUTING -o $INET_IFACE -j SNAT --to-source $INET_IP

в конфигурацию iptables нужно добавить запреты и разрешения, чтобы натилась не вся локальная сеть, а только определенные ip из нее.
Это фильтрация делается в цепочке FORWARD или POSTROUTING?
Приемлимо ли записать в форварде, допустим, вот так:

Код: Выделить всё

$IPTABLES -A FORWARD -s 192.168.0.75 -i $INET_IFACE -j ACCEPT

пакеты с адреса 192.168.0.75 пронатятся или пойдут напрямую? я так понимаю таблица nat и цепочка POSTROUTING должны читаться последними в любом случае? схема ниже подтверждает вроде бы это:

Изображение

И второй вопрос:
под пиринговые (p2p) сети требуется проброс портов, можно ли, к примеру написать вот так:

Код: Выделить всё

$IPTABLES -A FORWARD -s 192.168.0.75 -p tcp --sport 50005 -p tcp --dport 50005 -j ACCEPT
$IPTABLES -A FORWARD -s 192.168.0.75 -p udp --sport 50005 -p udp --dport 50005 -j ACCEPT
$IPTABLES -A FORWARD -d 192.168.0.75 -p tcp --dport 50005 -i $INET_IFACE -j ACCEPT
$IPTABLES -A FORWARD -d 192.168.0.75 -p udp --dport 50005 -i $INET_IFACE -j ACCEPT

в первом случае я хочу чтобы при запросе на определенный порт пакет шел именно на него, а не менялся натом.
во втором - пакеты ко мне на тот же порт при инициализации соединения со стороны трекера.
Или такое портирование нужно проводить в POSTROUTING?

Укажите, пожалуйста, на ошибки. Возможно все неправильно.
Спасибо сказали:
DarkDemon
Сообщения: 18
ОС: Slackware 11, LFS

Re: Разбираюсь с iptables. Прошу совета.

Сообщение DarkDemon »

у меня проброс портов для осла сделан так:

# EMule from vmware WinXP
# eDonkey network
# TCP eDonkey network
iptables -A INPUT -p tcp -i eth0 -s 0/0 -d $MAINHOST --dport 30001 -j ACCEPT
iptables -t nat -A PREROUTING -p tcp --dport 30001 -j DNAT --to-destination 192.168.1.100:30001
# UDP Kad network
iptables -A INPUT -p udp -i eth0 -s 0/0 -d $MAINHOST --dport 30011 -j ACCEPT
iptables -t nat -A PREROUTING -p udp --dport 30011 -j DNAT --to-destination 192.168.1.100:30011

естественно в осле прописаны порты 30001 и 30011 соответственно

$MAINHOST - в этой переменной хранится адрес шлюза
192.168.1.100 - адрес виндовой машины с ослом
Спасибо сказали:
Sendo
Сообщения: 31
ОС: Mandriva 2007, FreeBSD 6.2

Re: Разбираюсь с iptables. Прошу совета.

Сообщение Sendo »

DarkDemon писал(а):
27.06.2007 23:40
у меня проброс портов для осла сделан так:

# EMule from vmware WinXP
# eDonkey network
# TCP eDonkey network
iptables -A INPUT -p tcp -i eth0 -s 0/0 -d $MAINHOST --dport 30001 -j ACCEPT
iptables -t nat -A PREROUTING -p tcp --dport 30001 -j DNAT --to-destination 192.168.1.100:30001
# UDP Kad network
iptables -A INPUT -p udp -i eth0 -s 0/0 -d $MAINHOST --dport 30011 -j ACCEPT
iptables -t nat -A PREROUTING -p udp --dport 30011 -j DNAT --to-destination 192.168.1.100:30011

естественно в осле прописаны порты 30001 и 30011 соответственно

$MAINHOST - в этой переменной хранится адрес шлюза
192.168.1.100 - адрес виндовой машины с ослом


А политика по умолчанию у вас так:
$IPTABLES -P FORWARD ACCEPT ?
что-то у меня не клеется анализ..
выходит такая схема:
1. пакет от вас:
стучиться на порт 30001, меняется адрес назначения на 192.168.1.100:30001 и по идее через цепочку FORWARD, а затем через POSTROUTING он должен вернуться назад к отправителю, т.е. на вашу машину. А в POSTROUTING у вас что-нибудь прописано?
2. пакет со стороны интернета:
сначала стучиться в на порт 30001 шлюза, затем в цепочке PREROUTING меняется адрес назначения на 192.168.1.100:30001 и по идее пакет должен пойти в цепочку FORWARD, поскольку адрес 192.168.1.100 не принадлежит ни одному интерфейсу шлюза и если правило IPTABLES -P FORWARD ACCEPT, то он благополучно достигнет виндовую машину с ослом. т.е. здесь при условии -P FORWARD ACCEPT все должно работать.

Если все не так и прекрасно работает, то развожу руками, чешу репу и иду читать другой мануал ) Судя по http://gazette.linux.ru.net/rus/articles/i...VERSINGOFTABLES все должно быть именно так..
Спасибо сказали:
DarkDemon
Сообщения: 18
ОС: Slackware 11, LFS

Re: Разбираюсь с iptables. Прошу совета.

Сообщение DarkDemon »

Sendo писал(а):
28.06.2007 00:48
DarkDemon писал(а):
27.06.2007 23:40
у меня проброс портов для осла сделан так:

# EMule from vmware WinXP
# eDonkey network
# TCP eDonkey network
iptables -A INPUT -p tcp -i eth0 -s 0/0 -d $MAINHOST --dport 30001 -j ACCEPT
iptables -t nat -A PREROUTING -p tcp --dport 30001 -j DNAT --to-destination 192.168.1.100:30001
# UDP Kad network
iptables -A INPUT -p udp -i eth0 -s 0/0 -d $MAINHOST --dport 30011 -j ACCEPT
iptables -t nat -A PREROUTING -p udp --dport 30011 -j DNAT --to-destination 192.168.1.100:30011

естественно в осле прописаны порты 30001 и 30011 соответственно

$MAINHOST - в этой переменной хранится адрес шлюза
192.168.1.100 - адрес виндовой машины с ослом


А политика по умолчанию у вас так:
$IPTABLES -P FORWARD ACCEPT ?
что-то у меня не клеется анализ..
выходит такая схема:
1. пакет от вас:
стучиться на порт 30001, меняется адрес назначения на 192.168.1.100:30001 и по идее через цепочку FORWARD, а затем через POSTROUTING он должен вернуться назад к отправителю, т.е. на вашу машину. А в POSTROUTING у вас что-нибудь прописано?
2. пакет со стороны интернета:
сначала стучиться в на порт 30001 шлюза, затем в цепочке PREROUTING меняется адрес назначения на 192.168.1.100:30001 и по идее пакет должен пойти в цепочку FORWARD, поскольку адрес 192.168.1.100 не принадлежит ни одному интерфейсу шлюза и если правило IPTABLES -P FORWARD ACCEPT, то он благополучно достигнет виндовую машину с ослом. т.е. здесь при условии -P FORWARD ACCEPT все должно работать.

Если все не так и прекрасно работает, то развожу руками, чешу репу и иду читать другой мануал ) Судя по http://gazette.linux.ru.net/rus/articles/i...VERSINGOFTABLES все должно быть именно так..


для FORWARD политика по умолчанию ACCEPT
для INPUT - DROP

прервой командой открываю порт на шлюзе, второй перенаправляю все входящие пакеты с этого порта на виндовый хост

чуть не забыл. для исходящих пакетов с виндового хоста у меня прописано
$IPTABLES -t nat -A POSTROUTING -s $TRZONE -j MASQUERADE
где $TRZONE - диапазон внутреней подсети
с пакетами ОТ меня я не заморачивался - тупо пропуситил через нат

ЗЫ
все работает. осел как раз сейчас качает. с хай ид
Спасибо сказали:
Sendo
Сообщения: 31
ОС: Mandriva 2007, FreeBSD 6.2

Re: Разбираюсь с iptables. Прошу совета.

Сообщение Sendo »

Спасибо за ответ!

Буду держать Ваш пример в запасе как вариант.
Спасибо сказали: