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


Получить помощь и пообщаться с другими пользователями Ubuntu можно
на irc канале #ubuntu-ru в сети Freenode
и в Jabber конференции ubuntu@conference.jabber.ru

Автор Тема: Шлюзование пакетов (маскарадинг) между 3 сетями  (Прочитано 1221 раз)

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

Оффлайн sensei88

  • Автор темы
  • Новичок
  • *
  • Сообщений: 34
    • Просмотр профиля
Есть сервер с 3 интерфейсами: eth0 (192.168.10/24), eth0:1 (172.21.1/24), ppp11(192.168.0/24)
В сети 172.21.1/24 сервер должен являться шлюзом.
Требуется обеспечить двухстороннюю маршрутизацию пакетов IP-телефонии:
- из сети eth0:1 в сеть eth0 и далее в интернет (через шлюз сети eth0)
- из сети eth0:1 в сеть ppp11

Маршрутизацию всех "не своих" пакетов из eth0:1 в eth0 организовал командой
iptables -t nat -A POSTROUTING -o eth0 ! -d 172.21.1.0/24 -j MASQUERADE
Но как теперь выделить пакеты, предназначенные для сети ppp11?
« Последнее редактирование: 11 Августа 2015, 23:52:06 от sensei88 »

Оффлайн fisher74

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 13756
    • Просмотр профиля
Re: Маршрутизация между 3 сетями
« Ответ #1 : 11 Августа 2015, 15:07:45 »
iptables  к маршрутизации не имеет ни какого отношения, к тому же правило не соответствует текстовому описанию "организованного"


ЗЫ Адреса сетей выглядят тоже иначе.
ЗЗЫ Фактически сервер является шлюзами для всех сетей.

Оффлайн sensei88

  • Автор темы
  • Новичок
  • *
  • Сообщений: 34
    • Просмотр профиля
Re: Маршрутизация между 3 сетями
« Ответ #2 : 11 Августа 2015, 15:36:21 »
iptables  к маршрутизации не имеет ни какого отношения, к тому же правило не соответствует текстовому описанию "организованного"
ЗЫ Адреса сетей выглядят тоже иначе.
ЗЗЫ Фактически сервер является шлюзами для всех сетей.
Я, может, некорректно выразился. Сервер имеет свой адрес в сетях по интерфейсам eth0 (static) и ppp11 (dhcp).
Соответственно, адреса сети по интерфейсу eth0:1 должны маскарадиться в сетях по интерфейсам eth0 и ppp11.
Перенаправление же трафика из сетей eth0 и ppp11 будет осуществляться шлюзами этих сетей на адрес нашего сервера. Если этого не сделать, вполне закономерно получается довольно забавное явление - односторонняя слышимость (только из eth0:1 в eth0) в IP-телефонии.

Re:PS: eth0 (192.168.10.0/24), eth0:1 (172.21.1.0/24), ppp11(192.168.0.0/24) - так лучше? =) Хотя в данном случае вроде итак понятно.

Задачу я вижу след. образом:
IF source-addr принаджежит -net 172.21.1.0/24
THEN IF destination-addr принаджежит -net 192.168.0.0/24
     THEN маскарадим его в ppp11.
     ELSE маскарадим его в eth0.
ELSE ничего не делаем.
Так что же делать? Заранее спасибо всем, кто помогает.

Пользователь решил продолжить мысль 11 Августа 2015, 16:48:14:
Почитал кое-какие мануалы на iptables и пришло на ум вот что:
iptables -t nat -A POSTROUTING -o ppp11 -d 192.168.0.0/24 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth0 ! -d 172.21.1.0/24,192.168.0.0/24 -j MASQUERADE
Насколько это корректно?
« Последнее редактирование: 11 Августа 2015, 16:48:14 от sensei88 »

Оффлайн fisher74

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 13756
    • Просмотр профиля
Re: Маршрутизация между 3 сетями
« Ответ #3 : 11 Августа 2015, 23:08:59 »
Поправлю
iptables -t nat -A POSTROUTING -o ppp11 ! -d 192.168.0.0/24 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth0 ! -d 192.168.10.0/24 -j MASQUERADE
Внимание на все символы

И ещё раз - это не относится к маршрутизации, а потому смените название топика

Оффлайн sensei88

  • Автор темы
  • Новичок
  • *
  • Сообщений: 34
    • Просмотр профиля
Поправлю
iptables -t nat -A POSTROUTING -o ppp11 ! -d 192.168.0.0/24 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth0 ! -d 192.168.10.0/24 -j MASQUERADE
К сожалению, не дождавшись вашего ответа, читая маны, написал вот так:
iptables -t nat -A POSTROUTING -o ppp11 -d 192.168.0.0/24 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth0 ! -d 172.21.1.0/24 -j MASQUERADE
Вроде работает.
Как я это понимаю:
source-addr пакетов в направлении ppp11 с dest-addr из диапазона 192.168.0.0/24 - маскарадятся (адресом интерфейса ppp11)
source-addr пакетов в направлении eth0 с dest-addr не из диапазона 172.21.1.0/24 - маскарадятся (адресом интерфейса eth0)

1) Правильно ли я понимаю, что, в направлении какого интерфейса пускать пакет, решается по правилам route?

2) Также думается, что строго говоря условия -o ppp11 / -o eth0 можно не писать...

3) Может, тогда вообще достаточно написать?:
iptables -t nat -A POSTROUTING ! -d 172.21.1.0/24 -j MASQUERADE
4a) И вот ещё в голову пришло: пакеты, отправленные, допустим, из eth0 по адресу из диапазона 192.168.0.0/24 с нашим сервером, указанным в качестве шлюза тоже отмаскарадятся. Может, тогда нужно добавлять к правилам условия -i eth0:1, чтобы маскарадились только пакеты, следующие из eth0:1? Попытки же запросов из других как-то нужно блокировать.
4b)Если не маскарадятся, то они будут автоматически дропиться? Или сервер свободно кидает пакеты между всеми интерфейсами, если иного явно не задано?

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28366
    • Просмотр профиля
Правильный ответ - НЕ НАДО этого делать.
Настройте нормальную маршрутизацию без маскарада. (При условии, что все сети принадлежат вам.)
« Последнее редактирование: 12 Августа 2015, 03:38:49 от AnrDaemon »
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

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

Оффлайн fisher74

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 13756
    • Просмотр профиля
Да тут всё сложно - хочет сделать одно, делает другое... боюсь, что требуется вообще третье...

Вроде работает.
Если первое слово Вас устраивает, то конечно...

Как я это понимаю:
Это Вы правильно поняли.

1) Правильно ли я понимаю, что, в направлении какого интерфейса пускать пакет, решается по правилам route?
да
Только вот чувствую у Вас проблема в понимании, что правила маршрутизации не есть правила netfilter (которые управляются iptables)

2) Также думается, что строго говоря условия -o ppp11 / -o eth0 можно не писать...
Это зависит от условий применения правила netfilter

3) Может, тогда вообще достаточно написать?:
[sarcasm]Конечно пишите. Чего там разрабы наворочили, да в примерах наприводили...[/sarcasm]

4a) ...
4b)...
Извините, но я Вас не понял... и не хочу понимать, так как у Вас пока нет понимания конечной цели и происходящего.
В Вашем котелке (голове) варится каша (таблица маршрутизации) из топора (iptables). Надеюсь аллегория понятна

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28366
    • Просмотр профиля
В Вашем котелке (голове) варится каша (таблица маршрутизации) из топора (iptables). Надеюсь аллегория понятна
:D Более точную аллегорию трудно было бы подобрать.
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

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

Оффлайн Olej

  • Забанен
  • Активист
  • *
  • Сообщений: 884
    • Просмотр профиля
1) Правильно ли я понимаю, что, в направлении какого интерфейса пускать пакет, решается по правилам route?
2) Также думается, что строго говоря условия -o ppp11 / -o eth0 можно не писать...
Ужос :o

Не только можно, но и нужно ничего не писать.
А нужно брать и читать книжку Стивенса: Протоколы TCP/IP. Практическое руководство



Лучше в природе книги, вносящей ясность в понимание TCP/IP, не было.

Оффлайн serg_k

  • Новичок
  • *
  • Сообщений: 7
    • Просмотр профиля
Попробуйте заглянуть вот сюда:
https://forum.ubuntu.ru/index.php?topic=264528.0
ситуация похожая

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

 

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