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


Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!

Автор Тема: Сложный вопрос по iptables  (Прочитано 2816 раз)

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

Оффлайн Bloodmage

  • Автор темы
  • Участник
  • *
  • Сообщений: 121
  • Just for fun
    • Просмотр профиля
Сложный вопрос по iptables
« : 21 Апреля 2011, 17:25:20 »
Может,  конечно он и не такой сложный...  :)
Определённая программа отправляет с определённого ip пакеты (udp). Нужно заменить ip отправителя на ip другого интерфеса чтобы пакеты, соответственно уходили через него. Я так понимаю, надо прописать что-то хитрое в iptables и этого будет достаточно, я прав? Если я прав(и если нет тоже), собственно что нужно прописать?

Оффлайн flant

  • Любитель
  • *
  • Сообщений: 66
    • Просмотр профиля
Re: Сложный вопрос по iptables
« Ответ #1 : 21 Апреля 2011, 17:43:14 »
как это айпи отправителя на айпи интерфейса??  ???
имеешь в виду интерфесы поменять? чтоб уходили пакеты по другой сетевухе?

Оффлайн podkovyrsty

  • Старожил
  • *
  • Сообщений: 1547
  • Content-Type: alternative
    • Просмотр профиля
Re: Сложный вопрос по iptables
« Ответ #2 : 21 Апреля 2011, 17:51:48 »
Может,  конечно он и не такой сложный...  :)
Определённая программа отправляет с определённого ip пакеты (udp). Нужно заменить ip отправителя на ip другого интерфеса чтобы пакеты, соответственно уходили через него. Я так понимаю, надо прописать что-то хитрое в iptables и этого будет достаточно, я прав? Если я прав(и если нет тоже), собственно что нужно прописать?
Если эта определенная программа не привязана к IP, то достаточно просто указать маршрут до назначения, через нужный интерфейс. И пакеты будут уходить через него. Это делается утилитой route
Можно поменять IP адрес источника в пакете, на выходе определенного интефейса. Это делает iptables
Можно отправлять пакеты с определенного порта , через определенный интерфейс. Это делается пакетом Iproute2
Шаг за шагом можно достичь цели.

Оффлайн Bloodmage

  • Автор темы
  • Участник
  • *
  • Сообщений: 121
  • Just for fun
    • Просмотр профиля
Re: Сложный вопрос по iptables
« Ответ #3 : 21 Апреля 2011, 17:59:55 »
Да, я всё понимаю, что это делается через route но дело в том что программа как раз привязана к интерфейсу :)
как это айпи отправителя на айпи интерфейса??  ???
имеешь в виду интерфесы поменять? чтоб уходили пакеты по другой сетевухе?
Да да, именно

Пользователь решил продолжить мысль 21 Апреля 2011, 18:03:23:
Да, ещё добавлю, если какие-то неясности и вы хотите мне посоветовать привязать программу на нужный интерфейс, что через другой интерфейс они должны уходить только на определённый ip(подсеть) на остальные ip всё как обычно,
« Последнее редактирование: 21 Апреля 2011, 18:03:23 от Bloodmage »

Оффлайн podkovyrsty

  • Старожил
  • *
  • Сообщений: 1547
  • Content-Type: alternative
    • Просмотр профиля
Re: Сложный вопрос по iptables
« Ответ #4 : 21 Апреля 2011, 18:48:54 »
Тогда вам в iproute.
Шаг за шагом можно достичь цели.

Оффлайн Bloodmage

  • Автор темы
  • Участник
  • *
  • Сообщений: 121
  • Just for fun
    • Просмотр профиля
Re: Сложный вопрос по iptables
« Ответ #5 : 21 Апреля 2011, 18:52:59 »
Так, мысль понял, ща поковыряюсь...

Пользователь решил продолжить мысль 21 Апреля 2011, 19:05:28:
и правда, всё оказывается гораздо проще, спасибо :)  чё-то я тупанул немного...
И всё-таки, если не сложно, на будущее, напиши примеры вот этого:
Можно поменять IP адрес источника в пакете, на выходе определенного интефейса. Это делает iptables
Можно отправлять пакеты с определенного порта , через определенный интерфейс. Это делается пакетом Iproute2
а то чую что пригодится, а в мануалах рыться и гуглить неохота :)
Изначально-то я и хотел просто подменить ip отправителя в пакете...
« Последнее редактирование: 21 Апреля 2011, 19:05:28 от Bloodmage »

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28472
    • Просмотр профиля
Re: Сложный вопрос по iptables
« Ответ #6 : 21 Апреля 2011, 21:50:50 »
Опишите конкретную задачу - будут конкретные примеры.
А то "есть программа, не знаю где, но она точно есть..." Как тот суслик.
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

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

Оффлайн Bloodmage

  • Автор темы
  • Участник
  • *
  • Сообщений: 121
  • Just for fun
    • Просмотр профиля
Re: Сложный вопрос по iptables
« Ответ #7 : 23 Апреля 2011, 01:15:48 »
что касается отправки через другой интерфейс - разобрался. теперь другая проблема - не знаю как заставить этот сервер отвечать на запросы, пришедшие через второй интерфейс...
iptables -t nat -A PREROUTING -p udp --dport 23000 -j DNAT --to-destination <ip к которому привязан сервер>
как-то не спасает по непонятным мне причинам, хотя если указать ip удалённого такого же сервера (абсолютно такого же, копия) всё прокатывает...

Да, и чтобы стало понятнее, и нагляднее: это игровой сервер, привязаный на достаточно узкий канал.
задачи такие:
1) сделать его доступным по обоим аплинкам
2) незаметно для сервера делать его видимым в инете под другим ip (это можно сказать уже решено в предыдущих постах)

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28472
    • Просмотр профиля
Re: Сложный вопрос по iptables
« Ответ #8 : 23 Апреля 2011, 01:47:11 »
Ещё раз. Сервер в локальной сети?
Аплинки куда приходят?
Вообще, рисуйте полную картину, с адресацией. А то гадать на киселе....
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

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

Оффлайн Bloodmage

  • Автор темы
  • Участник
  • *
  • Сообщений: 121
  • Just for fun
    • Просмотр профиля
Re: Сложный вопрос по iptables
« Ответ #9 : 23 Апреля 2011, 11:45:08 »
у самого сервера как такового 2 аплинка в инет.  программа-сервер привязана к одному из них, относительно медленному. всё что нужно сейчас - чтобы udp соединения к серверу работали нормально по обоим аплинкам при том что сервер привязан на один.

Пользователь решил продолжить мысль 23 Апреля 2011, 12:08:34:
В теории понял в чём проблема - скорее всего сервер пытается ответить на пришедший запрос так, как написано в таблице маршрутизации. он же не знает что пакет пришёл с другого интерфейса... как-то можно связкой iptables+iproute заставить его отвечать как надо?
« Последнее редактирование: 23 Апреля 2011, 12:08:34 от Bloodmage »

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28472
    • Просмотр профиля
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

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

Оффлайн Bloodmage

  • Автор темы
  • Участник
  • *
  • Сообщений: 121
  • Just for fun
    • Просмотр профиля
Re: Сложный вопрос по iptables
« Ответ #11 : 23 Апреля 2011, 18:06:08 »
Не могу что-то параллельно с работой понять как все эти MARK и CONNMARK работают, либо  в чём-то другом косяк...
Можно понятный пример для моего случая? Был бы очень признателен :) И есть ли какой-то подробный мануал на эту тему чтобы я копипастой не занимался? не нашёл подробного описания как подобные схемы работают...

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28472
    • Просмотр профиля
Re: Сложный вопрос по iptables
« Ответ #12 : 23 Апреля 2011, 19:01:13 »
CONNMARK - марка СОЕДИНЕНИЯ. По сути внутренняя информация системы отслеживания соединений, которая ни на что по большому счёту не влияет сама по себе.
MARK (или FWMARK) - марка ПАКЕТА. Хотя она, как и марка соединения, не существует за пределами конкретного хоста и его заморочек, но по ней, в частности, работает система маршрутизации.
Дальше читай комментарии к правилам в той записи. Пример, кстати, там весьма характерный разобран. Если у тебя структура сети отличается, будут отличаться только правила назначения маркировки, но не вся система целиком.
Яснее стало?
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

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

Оффлайн Bloodmage

  • Автор темы
  • Участник
  • *
  • Сообщений: 121
  • Just for fun
    • Просмотр профиля
Re: Сложный вопрос по iptables
« Ответ #13 : 23 Апреля 2011, 19:18:22 »
мм... вроде как да... :) ща ещё попляшу с бубном и если не получится напишу тут всё что делаю, iptables-save, ip route list, ip rule list и т.п. и надеюсь, выясним, что не так...

Пользователь решил продолжить мысль 23 Апреля 2011, 20:35:02:
Не получается...
# ip rule list
0: from all lookup local
32761: from all fwmark 0x1 lookup main
32765: from 188.123.234.27 lookup akado
32766: from all lookup main
32767: from all lookup default
# ip route list table main
212.1.254.109 dev ppp0  proto kernel  scope link  src 46.73.255.121
10.0.0.0/30 dev tun0  proto kernel  scope link  src 10.0.0.1
192.168.67.0/24 dev wlan0  proto kernel  scope link  src 192.168.67.1
188.123.234.0/24 dev eth1  proto kernel  scope link  src 188.123.234.27
69.10.0.0/16 via 188.123.234.1 dev eth1
172.16.0.0/16 dev eth1  scope link
169.254.0.0/16 dev eth1  scope link  metric 1000
default dev ppp0  scope link
# ip route list table akado
10.0.0.0/30 dev tun0  scope link
192.168.67.0/24 dev wlan0  scope link
default via 188.123.234.1 dev eth1

# ifconfig
(Нажмите, чтобы показать/скрыть)




# iptables-save
(Нажмите, чтобы показать/скрыть)

Сервер привязан к 188.123.234.27, соответственно, в любом случае всё отсылает именно с этого ip и принимает подключения только на него. остальное думаю понятно из того что выше. надо чтобы сервер работал через ppp0 так же как и через eth1. пока хотя бы только по порту 23000, второй порт потом сделаю по аналогии.
Чего я тут не так нагородил? :)
На запросы по ip интерфейса ppp0 (46.73...) со всех других интерфейсов (tun0 или wlan0), как и раньше, отвечает как положено, но если с удалённого сервера делать запрос по ip 46.73... (получается он приходит на ppp0) всё глухо... И если делать запрос на ppp0 wireshark на интерфейсе any не показывает ответных пакетов, они приходят с ip удалённого сервера на ip 46.73... а ответа нет.
« Последнее редактирование: 24 Апреля 2011, 00:25:38 от Bloodmage »

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28472
    • Просмотр профиля
Re: Сложный вопрос по iptables
« Ответ #14 : 23 Апреля 2011, 21:43:34 »
Спрячь простынки под спойлер. Я пока почитаю, что ты пытался сделать. Идею вроде уловил, но так вот сразу не вижу, будет ли работать.
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

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

 

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