Автор Тема: как вывести наружу локальные ip?  (Прочитано 6721 раз)

Оффлайн Павел Иванов

  • Участник
  • *
  • Сообщений: 20
Доброго времени суток, уважаемые!
ситуация следующая: наша сеть (192.168.1.0/24) входит в состав большей сети через которую и производится доступ к сети интернет. не так давно выдали 2 ip-телефона, но с инструкцией: для того, чтобы телефоны работали, необходимо их выводит в наружную сеть с адресами 172.27.149.5-6. Шлюз настроен на кентавре соответственно iptables.
локальный адрес одного телефона 192.168.1.103, нужно вывести его наружу с адресом 172.27.149.5. Было проделано следуюющее
1. добавлен алиас на внешнюю сеть eth1:0 с адресом 172.27.149.5
в iptables добавил правила:
iptables -t nat -A PREROUTING -d 172.27.149.5/32 -j DNAT --to-destination 192.168.1.103
iptables -t nat -A POSTROUTING -s 192.168.1.103/32 -o eth0:1 -j SNAT --to-source 172.27.149.5
однако получается так, что телефон наружу идет со своим реальным адресом.
Подскажите, где я ошибся?
нужен ли вообще алиас?

Оффлайн ksa

  • Модератор глобальный
  • *****
  • Сообщений: 9 049
Re: как вывести наружу локальные ip?
« Ответ #1 : 11.02.2013 15:35:10 »
Если на узле, объединяющем две разные подсети, имеются два физических интерфейса, то никакой необходимости в алиасе нет. Вполне достаточно использования типичных SNAT/DNAT. Дополнительно добавить правила FORWARD для внутреннего (192.168.) и внешнего (172.27.) интерфейсов. DNAT, наверное, можно убрать, оставить только SNAT+правила FORWARD. По крайней мере, у меня таким макаром в интернет выходят компьютеры. Ну, и маршруты должны быть прописаны для "внешнего" (172.27.) адреса, чтобы было понятно, куда дальше пойдут пакеты с этого адреса.
PS Сразу не совсем уловил, что именно нужно. Тогда, видимо, придётся делать и PREROUTING, т.к. нужно подменить адрес интерфейса, смотрящего в 172.27. подсеть. Дополнительно нужно, чтобы этот интерфейс принимал пакеты на указанные в инструкции адреса. Видимо, без алиасов на интерфейсе (172.27.) не обойтись. Хотя, можно назначить несколько адресов на внешнем (172.27.) интерфейсе (с помощью etcnet, вот только они из одного диапазона...). Но, если на внешнем интерфейсе получится навешать дополнительных адресов (для телефонов), то, скорее всего, PREROUTING не понадобится.

Оффлайн Павел Иванов

  • Участник
  • *
  • Сообщений: 20
Re: как вывести наружу локальные ip?
« Ответ #2 : 11.02.2013 16:06:44 »
что то Вы меня совсем запутали.
то есть - алиасы все же нужны. единственное нужно добавить правило FORWARD для того, чтобы локальные ip-адреса могли ходить во внешнюю сеть?

Оффлайн ksa

  • Модератор глобальный
  • *****
  • Сообщений: 9 049
Re: как вывести наружу локальные ip?
« Ответ #3 : 11.02.2013 16:16:18 »
Пакет пришел на шлюз, дальше его snat'им на нужный адрес в подсети 172.27. Но нужно, чтобы интерфейс этой подсети принимал пакеты на этот самый адрес телефона (из этой же подсети 172.27). Как это реализовать для одного диапазона -- не знаю, не сталкивался (наверное, как вы предлагаете алиасами). Добавить forward туда (-s айпи телефона для подсети 192.168) и обратно (-d айпи телефона для подсети 192.168). SNAT я имел ввиду такого типа POSTROUTING -s (айпи телефона из 192.168) ! -d 192.168 (не в эту же подсеть, то есть, наружу) -j SNAT --to-source айпи телефона для подсети 172.27
Главная задачка, чтобы интерфейс сети 172.27 принимал пакеты на нескольких адресах.

Оффлайн yaleks

  • Мастер
  • ***
  • Сообщений: 6 242
Re: как вывести наружу локальные ip?
« Ответ #4 : 11.02.2013 20:15:39 »
по какому протоколу работают эти IP-телефоны? Там может и не заработать через NAT.

Оффлайн Павел Иванов

  • Участник
  • *
  • Сообщений: 20
Re: как вывести наружу локальные ip?
« Ответ #5 : 12.02.2013 11:13:21 »
через нат эти аппараты должны работать, как утверждают администраторы этой системы.
проблема сейчас во в чем:
после внесения в iptables строчек
-A PREROUTING -d 172.27.149.5/32 -j DNAT --to-destination 192.168.1.103
-A POSTROUTING -s 192.168.1.103/32 ! -d 192.168.1.0/24 -j SNAT --to-source 172.27.149.5
на экране телефона высветился номер присвоенный системой. Но только получается что не натится все это дело, потому как телефоны лезут в сеть со своими реальными ip-адресами, то есть заголовки пакетов на нате не меняются
И я не совсем понял как настраивать форвардинг.
« Последнее редактирование: 12.02.2013 11:25:19 от Павел Иванов »

Оффлайн yaleks

  • Мастер
  • ***
  • Сообщений: 6 242
Re: как вывести наружу локальные ip?
« Ответ #6 : 12.02.2013 17:11:19 »
iptables -t nat -I PREROUTING -d 172.27.149.5 -j DNAT --to 192.168.1.103
iptables -t nat -I POSTROUTING -s 192.168.1.103 -j SNAT --to 172.27.149.5
iptables -I FORWARD -d 192.168.1.103 -j ACCEPT
iptables -I FORWARD -s 192.168.1.103 -j ACCEPT

Оффлайн ovk

  • Участник
  • *
  • Сообщений: 135
Re: как вывести наружу локальные ip?
« Ответ #7 : 12.02.2013 22:10:16 »
А самому телефону нельзя назначить адрес из диапазона 172.27 ?

Оффлайн asy

  • alt linux team
  • ***
  • Сообщений: 8 370
Re: как вывести наружу локальные ip?
« Ответ #8 : 13.02.2013 00:36:18 »
через нат эти аппараты должны работать, как утверждают администраторы этой системы.
Через какой и как ? А то есть такие модули: nf_conntrack_h323, nf_conntrack_sip... Они подгружены ? А то могут и пригодиться...
проблема сейчас во в чем:
после внесения в iptables строчек
-A PREROUTING -d 172.27.149.5/32 -j DNAT --to-destination 192.168.1.103
-A POSTROUTING -s 192.168.1.103/32 ! -d 192.168.1.0/24 -j SNAT --to-source 172.27.149.5
Я бы, кстати, к интерфейсам привязался. На мой взгляд, понятнее.
И я не совсем понял как настраивать форвардинг.
В /etc/net/sysctl.conf должно быть net.ipv4.ip_forward = 1

Оффлайн Павел Иванов

  • Участник
  • *
  • Сообщений: 20
Re: как вывести наружу локальные ip?
« Ответ #9 : 13.02.2013 05:19:38 »
net.ipv4.ip_forward = 1 установлено
Через какой и как ? А то есть такие модули: nf_conntrack_h323, nf_conntrack_sip... Они подгружены ? А то могут и пригодиться...
А можно по подробнее об этих модулях? как их подключать? и вообще где можно подробно про эти модули почитать?

Оффлайн yaleks

  • Мастер
  • ***
  • Сообщений: 6 242
Re: как вывести наружу локальные ip?
« Ответ #10 : 13.02.2013 12:06:00 »
А можно по подробнее об этих модулях? как их подключать? и вообще где можно подробно про эти модули почитать?
это не ваш случай - http://wiki.freeswitch.org/wiki/Firewall

начините с названия протокола и какие способы преодоления NAT есть в телефонах (может они умеют UPnP или надо вручную задать "внешний IP" и порты).

Оффлайн Павел Иванов

  • Участник
  • *
  • Сообщений: 20
Re: как вывести наружу локальные ip?
« Ответ #11 : 15.02.2013 03:59:21 »
Добрый день!
Вы правы - это не мой случай, эти аппараты (cisco cp-6921, на случай если кто уже сталкивался с такой проблемой).
К сожалению, не в интернете, не в комплектации нет ни какой информации о том какие способы преодоления NAT есть, но мне сообщили что UPnP они не умеют и на телефонах вручную задать внешний адрес тоже нет возможности. все что мне сказали - это то что я не правильно настраиваю файервол, надо его настраивать как нат, а так как они видят мой реальный адрес то я настоил его как роутер :-\.
пока разбираюсь с этим... но вот незадача, заметил после перезагрузки
1. почему правила iptablers сбрасываются на начальные?
2. в выводе команды chkconfig --list | grep iptables я вижу:
iptables        0:выкл  1:выкл  2:выкл  3:выкл  4:выкл  5:выкл  6:выкл
 а когда включаю iptables в правилах выскакивает совсем не то, что я прописал
может чего не включил во время установки ОС (Кентавр 6.0)

Оффлайн asy

  • alt linux team
  • ***
  • Сообщений: 8 370
Re: как вывести наружу локальные ip?
« Ответ #12 : 15.02.2013 09:53:32 »
Вы правы - это не мой случай,
На самом деле, не факт. Может быть, ему нужно быть Вашим.
все что мне сказали - это то что я не правильно настраиваю файервол, надо его настраивать как нат, а так как они видят мой реальный адрес то я настоил его как роутер :-\.
Под реальным имеется ввиду 172.27.149.5 ?
По-скольку ничего непонятно, попробуйте, пока, убрать правило из PREROUTING и подгрузить таки nf_conntrack_sip. У меня такие варианты работают в некоторых случаях. Я, правда, не вчитался, что там Cisco предлагает, но, думаю, там sip всё же.
в выводе команды chkconfig --list | grep iptables
А Вы правила как и чем делали ? Если веб-интерфейсом Альтератора, то они в другом месте где-то хранятся, подозреваю, что в /etc/net/ifaces/default/fw, а init.d/iptables работает с /etc/sysconfig/iptables. А вот почему не применяется то, что через альтератор сделано, не знаю.


Оффлайн Павел Иванов

  • Участник
  • *
  • Сообщений: 20
Re: как вывести наружу локальные ip?
« Ответ #13 : 15.02.2013 10:33:45 »
реальный адрес - 192.168.1.103, а они должны видеть 172.27.149.5.
на счет правила PREROUTING и модуля сейчас попробую.
До кентавра работал на ALtlinux 4, по этому по старинке вбиваю правила в командной строке либо в /etc/sysconfig/iptables, затем iptables save, через альтератор работать увы не умею.

Оффлайн asy

  • alt linux team
  • ***
  • Сообщений: 8 370
Re: как вывести наружу локальные ip?
« Ответ #14 : 15.02.2013 10:40:06 »
реальный адрес - 192.168.1.103, а они должны видеть 172.27.149.5.
Хм. Правило "-j SNAT --to-source 172.27.149.5" должно так и делать. А если tcpdump-ом посмотреть, что там с трафиком ?
на счет правила PREROUTING и модуля сейчас попробую.
Это рано тогда. Надо понять, где и как они 192.168.1.103 видят.
До кентавра работал на ALtlinux 4, по этому по старинке вбиваю правила в командной строке либо в /etc/sysconfig/iptables, затем iptables save, через альтератор работать увы не умею.
Тогда должно всё быть, как надо, после service iptables start. Странно. /etc/sysconfig/iptables обновляется по save ?