2016-04-08 6 views
0

Ich habe zwei Netzwerk-Schnittstelle, eth0 ist das interne Netzwerk für die Verbindung von PCs mit dem Softphone und eth1 zum Internet zu verbinden. Ich benutze iptables auf CentOS 6.5, um alle Ausgaben des Freepbx (Asterisk) auf eth1 zu lenken, aber ich habe keinen Erfolg.Direkter Port 5060 für eth1

Die Regel iptables -A PREROUTING -i eth1 -t mangle -p tcp --dport 5060 -j MARK --set-mark 1

Antwort

1

Nehmen Sie einen Anruf bei sip.conf. In dem [general] Abschnitt gibt es eine bindaddress oder udpbindaddress. Stellen Sie es auf 0.0.0.0, um sicherzustellen, dass asterisk auf allen Schnittstellen zuhört. Sie können es durch:

netstat -lnap | grep 5060 
udp  0  0 0.0.0.0:5060   0.0.0.0:*       30822/asterisk 

Dann Zugriff auf unnötige Schnittstellen beschränken iptables, wie (man beachte die Reihenfolge):

iptables -A INPUT -i eth1 -p udp --dport 5060 -j ACCEPT 
iptables -A INPUT -p udp --dport 5060 -j DROP 
iptables -A OUTPUT -o eth1 -p udp --sport 5060 -j ACCEPT 
iptables -A OUTPUT -p udp --sport 5060 -j DROP 
0

Wenn die öffentliche IP auf demselben Server, müssen Sie INPUT-Tabelle verwenden und Ziel akzeptieren.

Wenn es auf anderen Host, verwenden Sie DNAT.