• Автор теми Автор теми ASDev
  • Дата створення Дата створення
Статус: Офлайн
Реєстрація: 09.02.2007
Повідом.: 26996
Вопрос по iptables

Есть 2 внешних интерфейса, допустим wan0, wan1. 1 внутренний lan0. Задача - на обоих внешних настроить НАТ с порт форвардингом в подсеть lan0 и для одной группы внутрених ip задать выход в инет через wan0, для другой - через wan1. Такое вообще с помощью данного пути возможно? А то у меня уже чан пухнет, НАТ работать на обоих интерфейсах вместе не хочет и пускает всех через один из интерфейсов, забив йух на второй
 
и для одной группы внутрених ip задать выход в инет через wan0, для другой - через wan1. Такое вообще с помощью данного пути возможно?

Почитай про iproute2 - с помощью этого пакета можно роутить разные тачки/диапазоны/подсетки... на разные интерфейсы роут-таблицами (там все легко)

А то у меня уже чан пухнет, НАТ работать на обоих интерфейсах вместе не хочет и пускает всех через один из интерфейсов, забив йух на второй

Нат может и работает на двух интерфейсах, НО все роутится на один по дафолтовому маршруту.
 
Такс, начал раздуплять iproute2, возникла проблемка. Есть интерфейс eth0 - смотрит в локалу, ип 192,168,1,1, интерфейс eth2 смотрит в инет, на нём настроен НАТ с помощью ип-таблеса, интерфейс eth3 смотрит в инет на кабельного провайдера, ип интерфейса 192.168.1.200. Мне надо по дефолту всех пускать через eth2, но некоторых - через eth3. Настройки ип-таблес

-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -i eth0 -j ACCEPT
-A INPUT -m state -i eth2 --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -m state -i eth3 --state ESTABLISHED,RELATED -j ACCEPT

-A FORWARD -i eth0 -o eth2 -j ACCEPT
-A FORWARD -m state -i eth2 --state ESTABLISHED,RELATED -j ACCEPT
-A FORWARD -i eth0 -o eth3 -j ACCEPT
-A FORWARD -m state -i eth3 --state ESTABLISHED,RELATED -j ACCEPT

-A POSTROUTING -o eth2 -j MASQUERADE

Нагуглил статейку по настройке ипроут2, делаю по ней. Надо внутренний ип 192.168.1.3 пустить через eth3
добавляю таблицу
# echo 200 inet_route >> /etc/iproute2/rt_tables

добавляю правило для айпишника
root@router:/home/asd# ip rule list
0: from all lookup local
32765: from 192.168.1.3 lookup inet_route
32766: from all lookup main
32767: from all lookup default

добавляю правило для записи inet_route

ip route add default via 192.168.88.200 dev eth3 table inet_route

и инет сука с айпишника 192,168,1,3 не идёт. В последней строке ставил айпишник не eth3 а шлюза провайдера, болт. При удалении последней строки - инет идёт через eth2. В чём может быть проблема?



Я так думаю, проблема вот тут

-A POSTROUTING -o eth2 -j MASQUERADE

т.е. в том, что маскарад только для eth2 интерфейса. Если я добавлю

-A POSTROUTING -o eth3 -j MASQUERADE

то думаю толку всё равно не будет )))



Всё, сделал, если интересно - надо было запретить в иптаблесе айпишнику 1,3 ходить через етн2, разрешить через етн3, и в конфиге ипроута шлюзом указать не айпишник интерфейса етн3, а айпишник шлюза провайдера на который смотрит етн3
 
Останнє редагування:
Ещё вопрос: насколько инерционны изменения в конфиге ip-tables? Задолбало просто, сначала в конфиге были запрещены все соединения. Пишу конфиг для разрешения только 1 айпишнику, активирую, болт. Проходит минуты 3, и всё применяется. Из-за чего такое? И вдогонку, пробрасываю порт наружу, всё ок. В каком месте мне лучше резать подключения к нему по айпишнику? В инпуте, форварде, прероуте? Резал в инпуте, почему-то перестало пускать. Убираю обрезание - пускает. Протокол TCP. Может есть какие-то необходимые условия для форвардинга пакетов с обрезанием по какому-то правилу?
 
насколько инерционны изменения в конфиге ip-tables?

Ты вбиваешь правила иптаблеса в терминате/консоле/шеле (кому как удобнее) или правишь файл иптаблеса ?

1) если вбиваешь командами (в терминате/консоле/шеле) - применяются сразу.
2) если правишь файл, то тебе нужно рестартануть демона - service iptables restart или /etc/init.d/iptables restart или /etc/rc.d/iptables restart (кому как..) и тогда изменения вступят в силу.

сначала в конфиге были запрещены все соединения.

Для просмотра правил (действующих правил в текущий момент) вводим - iptables -nL (к примеру), а лучше iptables --help, а еще более правильней man iptables.
 
Ага, понял. Я делаю изменения в конфиге. А по обрезанию по айпишнику подключений к порту, который форвардится на внутрисетевой сервак? Где его лучше резать?
 
У меня настроен НАТ на роутере. Есть внутренние серваки, на которые форвардятся определённые потры. Так вот, мне надо чтобы весь роутер и эти серваки из интернета видели только разрешённые айпишники. Правильно ли будет разрешать эти айпишники в Forward, или Preroute? Или надо их разрешать в Input? Т.к. у меня возникла небольшая проблема - когда я открываю в Input доступ всем на сетевой интерфейс на котором висит стат. инет - то всё форвардится отлично, извне подключения на сервак который за НАТом идут. А как только я в Инпуте режу всё, кроме опр. айпишника - то со всего, включая разрешённый айпишник, форвард не идёт

Так, про инпут я конечно протупил для резания транзитного траффика, но тем не менее мне надо резать любые подключения, и транзитные, и непосредственно к роутеру, кроме определённых айпишников
 
Останнє редагування:
Чтобы лучше тебе понять порядок следования пакетов - просмотри
⚠ Тільки зареєстровані користувачі бачать весь контент та не бачать рекламу.
, а более внимательно *Глава 3. Порядок прохождения таблиц и цепочек* (там несложно) + есть блок-схема (обрати на неё внимание)

⚠ Тільки зареєстровані користувачі бачать весь контент та не бачать рекламу.


Вот тут красивее :) -
⚠ Тільки зареєстровані користувачі бачать весь контент та не бачать рекламу.
 
Ещё такой вопрос. Если я сканирую порты по внешнему айпишнику роутера, и эти порты проброшены во внутреннюю сеть, то в какую цепочку попадают такие запросы? В инпут или форвард? Например делаю nmap на внешний ип-адрес с линии другого провайдера
 
Ещё такой вопрос. Если я сканирую порты по внешнему айпишнику роутера, и эти порты проброшены во внутреннюю сеть, то в какую цепочку попадают такие запросы? В инпут или форвард? Например делаю nmap на внешний ип-адрес с линии другого провайдера

;) вопрос не совсем про цепочки, isn`t? как я понял, переживания связаны с наличием _открытых_портов_ и тем, что их покажет сканер?
если порты открыты на проброс, то nmap :
1. адресат online - покажет ответ (//адресата)
2. --//-- офф - всё равно покажет, просто тайм-аут вместо закрытого
если нада фильтровать пробросы - то те же правила, типо source/dest.IP/etc, иначе они будут видны как открытые
-
добавлю: сканирование може быть нетривиальным, но если есть проброс - он равен открытому порту, просто адресат другой, всегда есть основания для переживаний.
 
Останнє редагування:
Мля, сегодня полдня проипался... Ситуация такая: 1. Где эта падла хранит интерфейс по умолчанию? Я делал один ВАН по дефолту, всё было ок, сегодня после н-го эксперимента весь траффик погнало через другой ВАН, который был только для некоторых внутренних серваков. В итоге вся связь сука упала и я долго искал причину :))) 2. В чём разница проброса ТСП и ЮДП портов? ЮДП указал в прероуте какой порт на какой айпишник, в форварде тоже - всё ок. А вот с ТСП таким же макаром - болт, порт висит как открытый, а коннекта нет. 3. В таблице форвардинга указывается аксепт если внутренний интерфейс eth0 и внешний eth2 к примеру. Всё работает. Как только ставлю для этой таблицы правило по умолчанию Дроп, нихуя не работает :)))
 
1. Єта падло хронит йих в /rpoc/net/route
1.a дыфолт роут - куда не попали пакеты маскированные подсетью
()
2. Пробросу пох - протоколу нет
3. <q>
В таблице форвардинга указывается аксепт если внутренний интерфейс eth0 и внешний eth2 к примеру. </q>
уточните, пжлст.
а проще в личку, имхо
 
Я делал один ВАН по дефолту, всё было ок, сегодня после н-го эксперимента весь траффик погнало через другой ВАН, который был только для некоторых внутренних серваков. В итоге вся связь сука упала и я долго искал причину :)))

1. если что-то перестало работать - вспоминай что делал и последовательно по одному изменению откатывай обратно, ИЛИ если не помнишь какие изменения проводил - смотри последовательно по логике прохождения трафика и пакетов -> 1) дефолтный роут 2) дефолтный роут в таблицах iproute2 + наличия в этих таблицах строки о наличии внутренней сети (чтобы она могла роутиться) 3) смотри таблицу ролей (по какому признаку или правилу должен трафик заварачиваться на опредлеленный ифейс) 4) если у тебя роутятся маркированные пакеты то смотри иптаблесы, а маркируются они вообще или нет, ну и провериться сам иптаблес не мешало.

PS: для тебя же сейчас важно не настроить по быстрому и забыть, а понять и научиться ? правильно я тебя понял ? если да - то не приоритетнее не устранить задачу (откатить конфил или что-то еще), а найти в чем затык или где лопухнулся.

2. В чём разница проброса ТСП и ЮДП портов? ЮДП указал в прероуте какой порт на какой айпишник, в форварде тоже - всё ок. А вот с ТСП таким же макаром - болт, порт висит как открытый, а коннекта нет.

Ну какбы сказать, ТСП и ЮДП это разные протоколы. Учти что если ты тонко настраиваешь фаер (закрываешь все - инпун, оутпут) то если у тебя открыт проброс внутрь сети, ТО и должен быть открыт маршрут для ответа из внутренней сети + ответ должен идти на того-же провайдера (тот же ифейс) с которого был прислан запрос + не должа быть закрыта возможность устанавливать соединения/сессии с внешней сети.

болт, порт висит как открытый, а коннекта нет.

Для того чтобы соединение устанавливалось - повторюсь ответ должен идти через тот же и-фейс через который пришел запрос + внутри сети должно быть что-то что ответит (то что слушает порт - служба, программа)

Как только ставлю для этой таблицы правило по умолчанию Дроп, нихуя не работает :)))

н*** не работает - это все дропится или как только ты ставишь дроп, все открывается ?

Покажи плиз - iptables и iproute2 таблицы.

2. Пробросу пох - протоколу нет

Если проброс указан без указания протокола - тогда пробросу пох, а вот если с указанием протокола. то ...
 
Надо будет погуглить работающих примеров настройки чтобы на их основании сделать что-то своё, а то ньюансов слишком много... В целом задача такая: есть 2 ВАНа, 1 ЛАН, внутренние сервера. На обоих ВАНах НАТ. Надо пробросить порты серверов из внутренней сети в инет, но чтобы соединения с ними могли устанавливать только определённые айпишники. В идеале - чтобы все извне видели например 80-й порт и всё, а некоторые - всё остальное. И исходящие подключения изнутри сети чтобы распределялись по 2 ВАНам на основе правил по внутренним ИП-адресам. В принципе я почти всё это сделал, только с пробросом ТСП возникла борода, и экспериментируя с параметрами проброса у меня всё похерилось ))) Наполовину восстановил, завтра буду продолжать

н*** не работает - это все дропится или как только ты ставишь дроп, все открывается ?

Покажи плиз - iptables и iproute2 таблицы.



Если проброс указан без указания протокола - тогда пробросу пох, а вот если с указанием протокола. то ...

Если по умолчанию Аксепт - всё идёт, инет на внутренних серваках есть. Если ставлю Дроп - инет пропадает. Кусок таблицы приводил выше

-A FORWARD -i eth0 -o eth2 -j ACCEPT
-A FORWARD -m state -i eth2 --state ESTABLISHED,RELATED -j ACCEPT
-A FORWARD -i eth0 -o eth3 -j ACCEPT
-A FORWARD -m state -i eth3 --state ESTABLISHED,RELATED -j ACCEPT

0 - внутренний и-фейс, 2 и 3 - внешние. Пробрасываю TCP с указанием протокола есессно. В данном конфиге ипроут пока не использую



Блин, ни хрена не пойму. Уже перерыл тонну мануалов, а заставить нормально редиректить например рдп порт 3389 - не могу. Вот последний из конфигов

GNU nano 2.2.4 /etc/iptables.up.rules

# Generated by iptables-save v1.4.8 on Mon Jan 23 16:36:34 2012
*nat
:PREROUTING ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING -o eth2 -j MASQUERADE
-A PREROUTING -p udp -m udp -i eth2 --dport 5060:5061 -j DNAT --to-destination 192.168.1.2:5060-5061
-A PREROUTING -p udp -m udp -i eth2 --dport 12000:12053 -j DNAT --to-destination 192.168.1.2:12000-12053
-A PREROUTING -p tcp -m tcp -i eth2 --dport 631 -j DNAT --to-destination 192.168.1.48:631
-A PREROUTING -p tcp -m tcp -i eth2 --dport 9100 -j DNAT --to-destination 192.168.1.48:9100
-A PREROUTING -p tcp -m tcp -d 82.207.внеш.айпи --dport 3389 -j DNAT --to-destination 192.168.1.16
-A POSTROUTING -o eth3 -j MASQUERADE
-A POSTROUTING -o eth2 -j SNAT --to-source 82.207.внеш.айпи
COMMIT
# Completed on Mon Jan 23 16:36:34 2012
# Generated by iptables-save v1.4.8 on Mon Jan 23 16:36:34 2012
*mangle
:PREROUTING ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
COMMIT
# Completed on Mon Jan 23 16:36:34 2012
# Generated by iptables-save v1.4.8 on Mon Jan 23 16:36:34 2012
*filter
:FORWARD ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A FORWARD ! -s 192.168.1.3 -i eth0 -o eth2 -j ACCEPT
-A FORWARD -m state -i eth2 -o eth0 --state ESTABLISHED,RELATED -j ACCEPT
-A FORWARD -s 192.168.1.3 -o eth3 -j ACCEPT
-A FORWARD -p udp -m udp --dport 5060:5061 -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -i eth0 -j ACCEPT
-A INPUT -m state -i eth2 --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -m state -i eth3 --state ESTABLISHED,RELATED -j ACCEPT
-A FORWARD -p udp -m udp --dport 12000:12053 -j ACCEPT
-A FORWARD -p tcp -m tcp --dport 631 -j ACCEPT
-A FORWARD -p tcp -m tcp --dport 9100 -j ACCEPT
-A FORWARD -p tcp -m tcp -m multiport -s 192.168.1.1 -i eth0 -j ACCEPT --dports 25,110,3389
-A FORWARD -p tcp -m tcp -d 192.168.1.16 -i eth2 --dport 3389 -j ACCEPT
COMMIT
# Completed on Mon Jan 23 16:36:34 2012

При этом 631 и 9100 порты, которые идут на принтер - пашут без вопросов, но там насколько я понимаю кинули инфу в порт и установления соединения как в рдп не требуется. А РДП не коннектицца и всё

eth2 и eth3 - венешние интерфейсы, внешний стат. айпи на который идут подключения находится на eth2. Внутренний eth0 с айпишником 192.168.1.1, рдп сервер запущен на 1.16, из локалы видится



Вопрос снимается, каким-то чудом порт таки пробросился, всем спасибо :) Подозреваю что из-за этой строчки

-A POSTROUTING -p tcp -m tcp -o eth2 --dport 3389 -j SNAT --to-source 82.207.внеш.айпи



Отладка. А, кстати, насчёт этого. Тоже вопрос. Когда я ставлю Forward Drop по умолчанию - у меня не пашет инет на компах за натом. Хотя есть строка
-A FORWARD ! -s 192.168.1.3 -i eth0 -o eth2 -j ACCEPT
т.е. со всего кроме 1.3 должно идти через внешний eth2? Или где-то ошибка?
 
Останнє редагування:
интересно почитать. я считаю что мне в чем-то повезло, потому что первым я начал изучать pf и только опасливо поглядывал в сторону netfilter-а, поскольку уж сильно выносило мозг прохождение цепочек, построение правил и тп. хотя нутром чувствовал, что линуксовый фаер - это абсолютная мощь, если конечно умеешь ей пользоваться.
так вот, pf позволяет очень легко реализовать схему с любым количеством wan-ов и локальных интерфейсов. без разницы есть там нексхоп или нет.
остается только прелонится перед хеннингом брауном и другими разработчиками, которые предоставили такой удобный и наглядный синтаксис.
все задачи, которые ты описал заводятся в пф с полпинка:
-нат на основе адреса соурса в нужный канал,
-проброс портов внутрь сети с двух каналов,
-проброс некоторых портов для определенных айпи.
ну и тп.
я так понимаю вопроса о замене линукса не стоит. но все же если тачка чисто роутером выступает, то почему бы и нет? по крайней мере эксперименты с айпитаблес можно будет проводить отдельно, не опасаясь, что что-то там открыто)



Если по умолчанию Аксепт - всё идёт, инет на внутренних серваках есть. Если ставлю Дроп - инет пропадает. Кусок таблицы приводил выше
я канеш не спец, но кажется из-за того, что у тебя нет аутпут правила для естаблишед/релэйтед. у меня в цепочке *фильтер по дефолту все в дропе. нат и проброс портов пашут. небольшое отличие которое я усмотрел - аутпут правило.
ну и у тебя нет запрещающих правил на вход.
так как дефолт инпут у тебя разрешен, то кроме проброшеных портов доступны со всех интерфейсов любые слушаемые системой порты.хотя могу и ошибаться.
 
Останнє редагування:
Назад
Зверху Знизу