Форум русскоязычного сообщества Ubuntu


Автор Тема: страшное правило для iptables  (Прочитано 1596 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн sleepnow

  • Автор темы
  • Любитель
  • *
  • Сообщений: 57
  • Линуксоид
    • Просмотр профиля
страшное правило для iptables
« : 15 Март 2011, 00:03:29 »
Есть сервер.
Внутри страшная таблица роутинга.
Цитировать
89.179.179.5    10.190.184.1    255.255.255.255 UGH   0      0        0 eth3
web2.altair-tv. 10.5.16.1       255.255.255.255 UGH   0      0        0 eth1
zoo-asr1004-2.t *               255.255.255.255 UH    0      0        0 ppp4
bras4-lo0.tul.c 10.190.184.1    255.255.255.255 UGH   0      0        0 eth3
bras4-lo0.tul.c 10.190.184.1    255.255.255.255 UGH   0      0        0 eth3
bras5-lo0.tul.c 10.190.184.1    255.255.255.255 UGH   0      0        0 eth3
bras5-lo0.tul.c 10.190.184.1    255.255.255.255 UGH   0      0        0 eth3
mail.post.ru    10.190.184.1    255.255.255.255 UGH   0      0        0 eth3
hdns2.corbina.n 10.190.184.1    255.255.255.255 UGH   0      0        0 eth3
homenet.corbina 10.190.184.1    255.255.255.255 UGH   0      0        0 eth3
vpn3-lo0.tul.co 10.190.184.1    255.255.255.255 UGH   0      0        0 eth3
vpn3-lo0.tul.co 10.190.184.1    255.255.255.255 UGH   0      0        0 eth3
192.168.2.10    *               255.255.255.255 UH    0      0        0 venet0
bras7-lo100.tul 10.190.184.1    255.255.255.255 UGH   0      0        0 eth3
bras7-lo100.tul 10.190.184.1    255.255.255.255 UGH   0      0        0 eth3
bras8-lo100.tul 10.190.184.1    255.255.255.255 UGH   0      0        0 eth3
bras8-lo100.tul 10.190.184.1    255.255.255.255 UGH   0      0        0 eth3
earth.corbina.n 10.190.184.1    255.255.255.255 UGH   0      0        0 eth3
192.168.2.200   *               255.255.255.255 UH    0      0        0 ppp1
10.165.205.222  10.190.184.1    255.255.255.255 UGH   0      0        0 eth3
oneskelis.corbi 10.190.184.1    255.255.255.255 UGH   0      0        0 eth3
www.corbina.net 10.190.184.1    255.255.255.255 UGH   0      0        0 eth3
hdns1.corbina.n 10.190.184.1    255.255.255.255 UGH   0      0        0 eth3
colo-198-178.mh *               255.255.255.255 UH    0      0        0 ppp4
vpn.tul.corbina 10.190.184.1    255.255.255.255 UGH   0      0        0 eth3
85.21.79.38     10.190.184.1    255.255.255.255 UGH   0      0        0 eth3
lk.corbina.net  10.190.184.1    255.255.255.255 UGH   0      0        0 eth3
10.0.1.1        10.5.16.1       255.255.255.255 UGH   0      0        0 eth1
scylla-l0.msk.c 10.190.184.1    255.255.255.255 UGH   0      0        0 eth3
sip.corbina.net 10.190.184.1    255.255.255.255 UGH   0      0        0 eth3
89.107.196.32   10.5.16.1       255.255.255.224 UG    0      0        0 eth1
85.21.230.0     10.190.184.1    255.255.255.0   UG    0      0        0 eth3
192.168.2.0     *               255.255.255.0   U     0      0        0 eth0
192.168.0.0     *               255.255.255.0   U     0      0        0 eth2
10.5.16.0       *               255.255.252.0   U     0      0        0 eth1
89.107.192.0    10.5.16.1       255.255.248.0   UG    0      0        0 eth1
10.190.184.0    *               255.255.248.0   U     0      0        0 eth3
212.12.0.0      *               255.255.224.0   U     0      0        0 ppp4
95.139.128.0    *               255.255.128.0   U     0      0        0 ppp4
94.28.128.0     *               255.255.128.0   U     0      0        0 ppp4
10.2.0.0        10.5.16.1       255.255.0.0     UG    0      0        0 eth1
10.3.0.0        10.5.16.1       255.255.0.0     UG    0      0        0 eth1
10.165.0.0      10.190.184.1    255.255.0.0     UG    0      0        0 eth3
10.1.0.0        10.5.16.1       255.255.0.0     UG    0      0        0 eth1
10.6.0.0        10.5.16.1       255.255.0.0     UG    0      0        0 eth1
10.7.0.0        10.5.16.1       255.255.0.0     UG    0      0        0 eth1
10.4.0.0        10.5.16.1       255.255.0.0     UG    0      0        0 eth1
10.5.0.0        10.5.16.1       255.255.0.0     UG    0      0        0 eth1
10.190.0.0      10.190.184.1    255.255.0.0     UG    0      0        0 eth3
10.174.0.0      10.190.184.1    255.255.0.0     UG    0      0        0 eth3
10.8.0.0        10.5.16.1       255.255.0.0     UG    0      0        0 eth1
10.9.0.0        10.5.16.1       255.255.0.0     UG    0      0        0 eth1
10.216.0.0      10.190.184.1    255.255.0.0     UG    0      0        0 eth3
10.14.0.0       10.190.184.1    255.255.0.0     UG    0      0        0 eth3
10.62.0.0       10.190.184.1    255.255.0.0     UG    0      0        0 eth3
10.0.0.0        10.5.16.1       255.224.0.0     UG    0      0        0 eth1
default         *               0.0.0.0         U     0      0        0 ppp0
Она работает и выполнена верно.
По умолчанию интернеты ходят через ppp0.
на сервере стоит dnsmasq который DHCP отдает это все добро в интранеты.
Задача следующая..
есть хост test.com с неким портом 7777.
Нужно сделать правило что бы ЕСЛИ идет обращение на 7777 порт хоста test.com то все дело ходило через ppp4.
НО ВСЕ остальное кроме этого порта ( вебы. и т.д. ВСЕ кроме этого порта данного хоста ) ходило через ppp0.
как?


iptables -A FORWARD -p tcp --dport 7777 -m string --string "test.com" --algo kmp -i ppp4 -j ACCEPT
не канает :(

Пользователь решил продолжить мысль 15 Март 2011, 16:59:46:
Актуально. ребята.. ну помогите.. ???

Пользователь решил продолжить мысль 16 Март 2011, 21:48:29:
Гуру.. где вы?) 8)
« Последнее редактирование: 16 Март 2011, 21:48:29 от sleepnow »
Никак не научусь превращать поворот судьбы в зигзаг удачи.

Оффлайн sleepnow

  • Автор темы
  • Любитель
  • *
  • Сообщений: 57
  • Линуксоид
    • Просмотр профиля
Re: страшное правило для iptables
« Ответ #1 : 17 Март 2011, 22:30:32 »
Помощь еще нужна.. :'(
Никак не научусь превращать поворот судьбы в зигзаг удачи.

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 26250
    • Просмотр профиля
Re: страшное правило для iptables
« Ответ #2 : 17 Март 2011, 23:03:38 »
Есть сервер.
Внутри страшная таблица роутинга.
Которая никакого отношения к вопросу не имеет.
Цитировать
По умолчанию интернеты ходят через ppp0.
на сервере стоит dnsmasq который DHCP отдает это все добро в интранеты.
Задача следующая..
есть хост test.com с неким портом 7777.
В локалке или вовне?

Цитировать
Нужно сделать правило что бы ЕСЛИ идет обращение на 7777 порт хоста test.com
из локалки или снаружи?
Цитировать
то все дело ходило через ppp4.
Ответь на два вопроса выше.
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

Оффлайн Besogon

  • Новичок
  • *
  • Сообщений: 46
    • Просмотр профиля
Re: страшное правило для iptables
« Ответ #3 : 17 Март 2011, 23:18:33 »
Разве iptables позволяет такое? По моему он  может лишь фильтровать, а не заниматься роутингом.

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 26250
    • Просмотр профиля
Re: страшное правило для iptables
« Ответ #4 : 17 Март 2011, 23:20:27 »
Разве iptables позволяет такое? По моему он  может лишь фильтровать, а не заниматься роутингом.
Шутите? iptables может редактировать пакеты, после чего роутинг может пойти совершенно иначе...
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

Оффлайн Besogon

  • Новичок
  • *
  • Сообщений: 46
    • Просмотр профиля
Re: страшное правило для iptables
« Ответ #5 : 17 Март 2011, 23:23:19 »
Тебе нужны правила запрещающие посылку пакетов на интерфейсы отличные от ppp4 пришедшие с test и порта 7777.
ACCEPT тут ни при чем. Тут и так пропустит. Странное правило, если честно.
Ну или по умолчанию все отключать и только туда разрешать.
« Последнее редактирование: 17 Март 2011, 23:25:15 от Besogon »

Оффлайн sleepnow

  • Автор темы
  • Любитель
  • *
  • Сообщений: 57
  • Линуксоид
    • Просмотр профиля
Re: страшное правило для iptables
« Ответ #6 : 18 Март 2011, 00:27:32 »
Есть сервер.
Внутри страшная таблица роутинга.
Которая никакого отношения к вопросу не имеет.
Цитировать
По умолчанию интернеты ходят через ppp0.
на сервере стоит dnsmasq который DHCP отдает это все добро в интранеты.
Задача следующая..
есть хост test.com с неким портом 7777.
В локалке или вовне?

Цитировать
Нужно сделать правило что бы ЕСЛИ идет обращение на 7777 порт хоста test.com
из локалки или снаружи?
Цитировать
то все дело ходило через ppp4.
Ответь на два вопроса выше.
Хост вовне находится.
с машины обращение идет на 7777 порт, т.е. получается с локалки.
Спасибо.

Пользователь решил продолжить мысль 18 Март 2011, 00:37:45:
Странное правило, если честно.
Расскажу зачем. на сервере "вовне" с адресом test.com обитает некая база на порту 7777.
На машине описанной выше вертится клиент до этой базы, очень часто опрашивая ее по тому и иному вопросу.
Так вот. Нужно что бы запрос был только с ip адреса интерфейса ppp4 ( статика белая, как вы уже поняли ).
Можно было бы конечно route add бла бла.. и пустить сайт через интерфейс полностью...
НО интерфейс ppp4 обладает очень слабым каналом ( подключение на скорости чуть больше 2xv92 56k) Таким образом работа с сайтом test.com ввиду потери культуры сайтописания, после поголовного введения ШПД - становится невозможной, сдают нервы, да и порой мой хром просто не дожидается обновления страницы.
За сим и обратился на тематический форум к "гуру" так сказать. :)
« Последнее редактирование: 18 Март 2011, 00:37:45 от sleepnow »
Никак не научусь превращать поворот судьбы в зигзаг удачи.

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 26250
    • Просмотр профиля
Re: страшное правило для iptables
« Ответ #7 : 18 Март 2011, 01:32:43 »
Бесполезно искать в запросах то, чего там нет (а там нет test.com).
Ищи исходящий трафик на порт 7777 адреса test.com (надеюсь, адрес не меняется каждые 5 секунд) и переписывай его источник на адрес ppp4.
Тогда он автоматом будет зароучен на этот интерфейс.
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

Оффлайн sleepnow

  • Автор темы
  • Любитель
  • *
  • Сообщений: 57
  • Линуксоид
    • Просмотр профиля
Re: страшное правило для iptables
« Ответ #8 : 19 Март 2011, 00:15:21 »
Благодарю. А можно более приземленно? Или в man ткнуть с примером?
спасибо.
Никак не научусь превращать поворот судьбы в зигзаг удачи.

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 26250
    • Просмотр профиля
Re: страшное правило для iptables
« Ответ #9 : 19 Март 2011, 01:42:39 »
Чет меня сомнение взяло...
Читать -
man iptables/mark

выходит, таки надо маршрут прописывать через iproute2 и маркировать трафик.
А вот хаутушку коротенькую и внятную я посеял :(
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

Оффлайн Lion-Simba

  • Старожил
  • *
  • Сообщений: 1126
    • Просмотр профиля
Re: страшное правило для iptables
« Ответ #10 : 19 Март 2011, 03:57:06 »
Примерно так:
iptables -t mangle -A OUTPUT -p TCP -d <IP> --dport 7777 -j MARK --set-mark 0x01
ip rule add fwmark 0x01 lookup me_ppp4
где me_ppp4 - таблица маршрутизации для интерфейса ppp4, которая может состоять всего из одного правила:
ip route add default dev ppp4 table me_ppp4
Ещё может потребоваться добавить правило в таблицу nat, чтобы адрес источника пакета переписывался на правильный.

А вообще, правильное решение - заставить "клиента" базы инициировать соединение, используя интерфейс ppp4 (то есть создавать исходящий сокет с адресом интерфейса ppp4). Тогда ничего трогать вообще не придется. Но это зависит от "клиента", может он так или нет - вопрос. "Взрослые" демоны все так умеют: postfix, samba.
Оказываю индивидуальную платную техподдержку широкого профиля. Обращаться в ЛС или Jabber.

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 26250
    • Просмотр профиля
Re: страшное правило для iptables
« Ответ #11 : 19 Март 2011, 14:45:15 »
-A FORWARD
если клиент находится в сети.

@Lion-Simba: позвольте, я примажусь.
Если у меня входящий трафик с двух роутеров, и я маркирую входящие пакеты по роутеру, с которого они пришли, эта марка сохранится на исходящих пакетах, или мне надо CONNMARK использовать?
Примерчик, если не трудно, был бы очень кстати.
« Последнее редактирование: 19 Март 2011, 14:47:50 от AnrDaemon »
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

Оффлайн Lion-Simba

  • Старожил
  • *
  • Сообщений: 1126
    • Просмотр профиля
Re: страшное правило для iptables
« Ответ #12 : 19 Март 2011, 16:49:03 »
@Lion-Simba: позвольте, я примажусь.
Если у меня входящий трафик с двух роутеров, и я маркирую входящие пакеты по роутеру, с которого они пришли, эта марка сохранится на исходящих пакетах, или мне надо CONNMARK использовать?
Примерчик, если не трудно, был бы очень кстати.
CONNMARK. Помечаем сессию меткой:
iptables -t mangle -A PREROUTING <параметры> -j CONNMARK --set-mark <метка>
Метки пакета (установленные с помощью -j MARK) и сессии (установленные командой выше) можно копировать друг в друга:
iptables -t mangle -A PREROUTING <параметры> -j CONNMARK --restore-mark #метка сессии присваивается конкретному пакету
iptables -t mangle -A PREROUTING <параметры> -j CONNMARK --save-mark #метка конкретного пакета присваивается сесси
Маршрутизация (iproute2) смотрит на метку конкретного пакета, а не сессии, то есть перед "вылетом" пакета из PREROUTING надо делать --restore-mark.
Оказываю индивидуальную платную техподдержку широкого профиля. Обращаться в ЛС или Jabber.

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 26250
    • Просмотр профиля
Re: страшное правило для iptables
« Ответ #13 : 19 Март 2011, 19:06:53 »
То есть выглядеть это будет примерно так?
*mangle
:PREROUTING ACCEPT [61132114:22745233983]
:INPUT ACCEPT [48014244:14217964417]
:FORWARD ACCEPT [13117637:8527245388]
:OUTPUT ACCEPT [48922131:15746257166]
:POSTROUTING ACCEPT [62187682:24300531725]
-A PREROUTING -m conntrack --ctstate NEW,RELATED -m mac --mac-source MAC:OF:GW:2 -j MARK --set-mark 2
-A PREROUTING -m conntrack --ctstate NEW,RELATED -j CONNMARK --save-mark
-A PREROUTING -m conntrack --ctstate ESTABLISHED -j CONNMARK --restore-mark
-A FORWARD -i ppp+ -p tcp -m tcp --tcp-flags SYN,RST SYN -m tcpmss --mss 1357:1500 -j TCPMSS --set-mss 1356
COMMIT
?
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

Оффлайн Lion-Simba

  • Старожил
  • *
  • Сообщений: 1126
    • Просмотр профиля
Re: страшное правило для iptables
« Ответ #14 : 19 Март 2011, 19:48:40 »
То есть выглядеть это будет примерно так?
*mangle
:PREROUTING ACCEPT [61132114:22745233983]
:INPUT ACCEPT [48014244:14217964417]
:FORWARD ACCEPT [13117637:8527245388]
:OUTPUT ACCEPT [48922131:15746257166]
:POSTROUTING ACCEPT [62187682:24300531725]
-A PREROUTING -m conntrack --ctstate NEW,RELATED -m mac --mac-source MAC:OF:GW:2 -j MARK --set-mark 2
-A PREROUTING -m conntrack --ctstate NEW,RELATED -j CONNMARK --save-mark
-A PREROUTING -m conntrack --ctstate ESTABLISHED -j CONNMARK --restore-mark
-A FORWARD -i ppp+ -p tcp -m tcp --tcp-flags SYN,RST SYN -m tcpmss --mss 1357:1500 -j TCPMSS --set-mss 1356
COMMIT
?
Вместо
-A PREROUTING -m conntrack --ctstate NEW,RELATED -m mac --mac-source MAC:OF:GW:2 -j MARK --set-mark 2
-A PREROUTING -m conntrack --ctstate NEW,RELATED -j CONNMARK --save-mark
можно
-A PREROUTING -m conntrack --ctstate NEW,RELATED -m mac --mac-source MAC:OF:GW:2 -j CONNMARK --set-mark 2
В остальном - да, примерно так.
Оказываю индивидуальную платную техподдержку широкого профиля. Обращаться в ЛС или Jabber.

 

Страница сгенерирована за 0.064 секунд. Запросов: 24.