fragen stichworte

Machen Sie Asterisk, um ein anderes Subnetz zu bedienen

Ich habe Server mit Linux Ubuntu 12.04. Es verfügt über zwei Subnetze - 192.168.0.1 (eth0) und 192.168.1.1 (eth1).

Es gibt einen Asterisk-Server (IP-Telefonanlage), der mit dem ersten Subnetz verbunden ist. Angenommen, er hat die IP-Adresse 192.168.0.28.

Ich würde SIP -Clients von 192.168.1.x benötigen, um sich mit diesem Astersik-Server verbinden zu können.

Meine Idee ist es, alle SIP-Clients für die Verbindung zum Gateway-Server (den in beiden Subnetzen, dh den in 192.168.1.1) ihres Subnetzes zu verwenden ) und stellen Sie sicher, dass alle UDP 5060 -Verbindungen an 192.168.0.28 (IP-BPX) weitergeleitet werden.

Hier ist meine Idee:

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

Die SIP-Clients (Softphones) von 192.168.1.x können sich jedoch nicht registrieren. Ich habe versucht, den http-Port weiterzuleiten, um ihn zu testen:

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

und das funktioniert gut, aber beim ersten mit UDP-Weiterleitung kann ich keine Clients dazu bringen, sich beim Asterisk-Server zu registrieren.

UPD:

Wie in commnets vorgeschlagen, würde ich route anstelle von iptables verwenden müssen, daher würde der Befehl etwa so aussehen:

route add -net 192.168.1.0 netmask 255.255.255.0 gw 192.168.0.28 dev eth0

Das hat aber nicht wirklich funktioniert. Außerdem möchte ich nicht den gesamten IP-PBX-Host für das 192.168.1.x-Netzwerk freigeben, nur den 5060-Port für die SIP-Clients (Softphones).

antworten

Warum NAT verwenden? In diesem Szenario können Sie direkt zwischen den beiden LANs routen, ohne dass die Ports weitergeleitet werden müssen.

Wenn Sie wirklich NAT verwenden möchten, sollte Port 5060 ausreichen, wenn Ihre Clients Standard-SIP-Clients sind. Bei Clients mit gemischten/benutzerdefinierten Protokollen (z. B. Implementierung von Cisco H323 und/oder SCTP/SCCP) müssen Sie zusätzliche Portbereiche öffnen.

BEARBEITEN: Die von Ihnen hinzugefügte Route ist falsch. Lassen Sie mich Ihre Netzwerkeinrichtung erläutern:

    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
                    |                |
                    |________________|

Wie bereits beschrieben, handelt es sich bei dem Ubuntu-Server um einen Multihomed-Host - er hat eine Schnittstelle in LAN 192.168.0.x und eine andere Schnittstelle in LAN 192.168.1.x. Um zwischen den Netzwerken zu routen, müssen Sie den den Clients mitteilen,, dass der Ubuntu-Computer als Gateway für das andere LAN dient. Angenommen, alle beteiligten Maschinen sind Linux-Clients, benötigen Sie:

  • Auf jedem 192.168.0.x-Computer, den Sie route add -net 192.168.1.0/24 gw 192.168.0.1
  • ausgeben
  • Auf jedem 192.168.1.x-Computer, den Sie route add -net 192.168.0.x/24 gw 192.168.1.1
  • ausgeben
  • Auf dem Ubuntu-Server können Sie Firewall-Regeln einrichten, die nur Pakete für 192.168.0.28 weiterleiten/routen, wobei iptables -A FORWARD -d 192.168.0.28 -j ACCEPT und iptables -A FORWARD -s 192.168.0.28 -j ACCEPT
  • ausgegeben werden

Bitte beachten Sie, dass die oben beschriebenen Schritte nur zur Veranschaulichung dienen und keine bewährten Methoden sind: Anstatt einen bestimmten Routing-Befehl in jedem Client auszuführen, können Sie (und sollten) das Recht einfügen Routen auf den jeweiligen Gateways des LAN.

Dies ist jedoch ein grundlegendes Netzwerk. Wenn Sie das fragen, müssen Sie sich wirklich darüber informieren, was Routing/NAT ist und wie sie effektiv genutzt werden können.