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


Считаете, что Ubuntu недостаточно дружелюбна к новичкам?
Помогите создать новое Руководство для новичков!

Автор Тема: Вопрос по доктрине iptables  (Прочитано 791 раз)

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

Оффлайн plavv

  • Автор темы
  • Новичок
  • *
  • Сообщений: 31
  • Linux forever
    • Просмотр профиля
Вопрос по доктрине iptables
« : 08 Июня 2011, 11:15:18 »
Помогите понять как  проходят пакеты.
Есть Ubuntu server с тремя интерфейсами eth0 eth1 eth2
Локальная сеть 192.168.0.0/24---> eth0(192.168.0.1)|====eth1(10.15.103.41)----->10.15.103.0/24
                                                                              |====eth2(101.16.1.58)------->101.16.1.0/24
пишу правила
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j SNAT --to 10.15.103.41
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j SNAT --to 101.16.1.58
больше ни каких правил нет
таблицу маршрутизации не менял
маршрут по умолчанию не задавал

в таком случае пакеты из 192.168.0.0/24 проходят только на 10.15.103.0/24
на 101.16.1.0/24 не проходят, хотя я думал, что направление пакетов задается в таблице маршрутизации и после назначения направления пакета на какой интерфейс он попал  ему меняется исходящий ip 10.15.103.41 или 101.16.1.58

при тех же условиях но при правилах:
iptables -t nat -A POSTROUTING -o eth1  -j SNAT --to 10.15.103.41
iptables -t nat -A POSTROUTING -o eth2  -j SNAT --to 101.16.1.58
пакеты доходят и на 192.168.0.0/24 и на 101.16.1.0/24

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28365
    • Просмотр профиля
Re: Вопрос по доктрине iptables
« Ответ #1 : 08 Июня 2011, 12:04:50 »
С чего бы им на 101.16.1.58 оказаться, если после правила
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j SNAT --to-source 10.15.103.41
исходящий адрес пакетов, отправленных из 192.168.0.0/24 меняется на 10.15.103.41 ?

Второй вариант правильный.
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

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

Оффлайн plavv

  • Автор темы
  • Новичок
  • *
  • Сообщений: 31
  • Linux forever
    • Просмотр профиля
Re: Вопрос по доктрине iptables
« Ответ #2 : 08 Июня 2011, 12:36:46 »
Просто я хочу понять как проходят пакеты.
Как я понял из man-нов пакет из кабеля приходит в eth0 -> mangle prerouting -> nat prerouting -> routing (таблица маршрутизации routing) здесь уже указывается на какой интерфейс отправляется пакет eth1 или eth2 -> mangle forward -> filter forward -> mangle postrouting -> nat postrouting -> eth1 или eth2 кабель
Что я ни так понимаю поправте.

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28365
    • Просмотр профиля
Re: Вопрос по доктрине iptables
« Ответ #3 : 08 Июня 2011, 12:41:05 »
Всё так, но вы свои то правила читайте, угу?
А ещё лечше - возьмите, распечатайте http://www.docum.org/docum.org/kptd/
А потом возьмите кусочек бумажки для записей (ну, знаете, такая... 3x3''), в правом верхнем углу напишите адрес назначения пакета, в левом верхнем - адрес, откуда пакет вышел.
И прогоните ваш пакет по диаграмме, меняя адреса и марки в соответствии со своими правилами.
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

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

Оффлайн plavv

  • Автор темы
  • Новичок
  • *
  • Сообщений: 31
  • Linux forever
    • Просмотр профиля
Re: Вопрос по доктрине iptables
« Ответ #4 : 08 Июня 2011, 13:24:23 »
Я не могу понять когда срабатывает таблица машрутизации
plavv@plavv-Lenovo-G550:~$ route -n
Таблица маршутизации ядра протокола IP
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.0.0     0.0.0.0         255.255.255.0   U     0      0        0 eth0
10.15.103.0     0.0.0.0         255.255.255.0   U     0      0        0 eth1
101.16.1.0     0.0.0.0         255.255.255.0   U     0      0        0 eth2

Если бы я писал к примеру
iptables -t nat -A PREROUTING -s 192.168.0.0/24 -j SNAT --to 10.15.103.41
iptables -t nat -A PREROUTING -s 192.168.0.0/24 -j SNAT --to 101.16.1.58
то после этого срабатывала таблица маршрутизации и естественно пакеты ни когда не дойдут на 101.16.1.58

Но по манам route срабатывает между PREROUTING и POSTROUTING

Но в моем случае
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j SNAT --to 10.15.103.41
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j SNAT --to 101.16.1.58
получается route не срабатывает или срабатывает после POSTROUTING

Что-то я совсем запутался. Просто опишите как проходят пакеты в случае
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j SNAT --to 10.15.103.41
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j SNAT --to 101.16.1.58
Я считаю, что лучше один раз понять, а не тупо копировать готовые решения.
« Последнее редактирование: 08 Июня 2011, 13:27:23 от plavv »

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28365
    • Просмотр профиля
Re: Вопрос по доктрине iptables
« Ответ #5 : 08 Июня 2011, 13:31:26 »
Роутинг срабатывает именно там, где ты ожидаешь.
Но поскольку ты подменяешь исходящий адрес пакета на чужом интерфейсе, он либо дропается при проверке на выходе, либо убивается первым за тобой шлюзом, либо убивается опять же тобой при приёме ответа, пришедшего на чужой интерфейс.
Подробности - google://rp_filter

В твоём случае пакет, уходящий через eth2 будет иметь адрес источника не 101.16.1.58 (как должно было быть) а 10.15.103.41 (как у тебя в правилах написано - все пакеты из сети 192.168.... маскировать по 10.15.103.41). Как самое меньшее, ответные пакеты будут возвращаться на eth1 (10.15.103.41), а ждут их таки на eth2, так что с eth1 они будут убиты как заблудившиеся.
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

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

Оффлайн plavv

  • Автор темы
  • Новичок
  • *
  • Сообщений: 31
  • Linux forever
    • Просмотр профиля
Re: Вопрос по доктрине iptables
« Ответ #6 : 08 Июня 2011, 13:47:11 »
Все наконец-то прозрел.   :) Огромное спасибо.

 

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