У меня есть сервер с Linux Ubuntu 12.04. Он имеет две подсети - 192.168.0.1 (eth0) и 192.168.1.1 (eth1).
Есть Сервер Asterisk (IP PBX) подключена к первой подсети, допустим, у нее есть IP-адрес 192.168.0.28.
Мне понадобится SIP клиенты из 192.168.1.x подсеть сможет подключиться к этому серверу Astersik.
Моя идея - сделать все SIP-клиенты для подключения сервер шлюза (тот, что находится в обеих подсетях, т.е. 192.168.1.1 своей подсети) и сделать это порт переадресовывает все UDP 5060 связи с 192.168.0.28 (IP BPX).
Вот моя идея:
echo "1" > /proc/sys/net/ipv4/ip_forward
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -i eth1 -d 192.168.0.28 -p udp --dport 5060 -m state \
--state NEW -j ACCEPT
iptables -t nat -A PREROUTING -i eth1 -p udp --dport 5060 -j DNAT \
--to-destination 192.168.0.28
iptables -t nat -A POSTROUTING -p tcp --dport 5060 -d 192.168.0.28 \
-o eth0 -j MASQUERADE
Но SIP-клиенты (софтфоны) из 192.168.1.x не могут зарегистрироваться. Я попытался перенаправить HTTP-порт, чтобы проверить его:
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -i eth1 -d 192.168.0.28 -p tcp --dport 80 -m state \
--state NEW -j ACCEPT
iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j DNAT \
--to-destination 192.168.0.28:80
iptables -t nat -A POSTROUTING -p tcp --dport 80 -d 192.168.0.28 \
-o eth0 -j MASQUERADE
и это работает нормально, но с первым из них с пересылкой UDP я не могу заставить клиентов регистрироваться на сервере Asterisk.
UPD:
Как предложено в общины Мне нужно было бы использовать route
вместо того iptables
поэтому я предполагаю, что команда будет примерно такой:
route add -net 192.168.1.0 netmask 255.255.255.0 gw 192.168.0.28 dev eth0
Но это не сработало. Кроме того, я не хочу открывать весь IP-узел АТС для сети 192.168.1.x, только порт 5060 для SIP-клиентов (программных телефонов).
Зачем использовать NAT? В этом сценарии вы можете напрямую маршрутизировать между двумя локальными сетями, вообще без переадресации портов.
В любом случае, если ты действительно хотите использовать NAT, порта 5060 должно хватить если ваши клиенты - стандартные SIP. Если это клиенты со смешанным / настраиваемым протоколом (например, реализация Cisco H323 и / или SCTP / SCCP), вам потребуется открыть дополнительные диапазоны портов.
РЕДАКТИРОВАТЬ: добавленный вами маршрут неверен. Позвольте мне проиллюстрировать настройку вашей сети:
LAN 192.168.0.x/24 LAN 192.168.1.x/24 ---------------- ---------------- | | | | | | | | | | | | | | | | | | | | PBX | UBUNTU SERVER | SIP CLIENT 192.168.0.28 192.168.0.1 192.168.1.1 eg: 192.168.1.10 | | |________________|
Согласно вашему описанию, сервер Ubuntu является многосетевым хостом - у него есть один интерфейс в LAN 192.168.0.x и другой интерфейс в LAN 192.168.1.x. Для маршрутизации между сетями вам необходимо объявить клиентам что машина Ubuntu служит шлюз для другой LAN. Предполагая, что все задействованные машины являются клиентами Linux, вам необходимо:
route add -net 192.168.1.0/24 gw 192.168.0.1
route add -net 192.168.0.x/24 gw 192.168.1.1
iptables -A FORWARD -d 192.168.0.28 -j ACCEPT
и iptables -A FORWARD -s 192.168.0.28 -j ACCEPT
Обратите внимание, что шаги, описанные выше, предназначены только для иллюстрации и не передовой опыт: например, вместо того, чтобы вводить конкретную команду маршрутизации внутри каждого клиента, вы можете (и должны) вставлять правильные маршруты в соответствующие шлюзы локальной сети.
Однако это сетевое взаимодействие на самом базовом уровне - если вы спрашиваете об этом, вы действительно нужно задокументировать, что такое маршрутизация / NAT и как их эффективно использовать.