路由器未传递某些请求

路由器未传递某些请求

昨天某个时候,我的 Asterisk 盒子停止与我的 voip 提供商通信。我确定是路由器的问题,因为我有一个备用的镜像路由器,以防这个路由器造成问题 - 而事实确实如此。

路由器运行的是Ubuntu 10.04,内核:2.6.32-39-server。

我已经将 iptables 缩减到最低限度,希望可以解决该问题:

*filter
:FORWARD ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A FORWARD -o eth0 -j LOG  --log-level 7 --log-prefix BANDWIDTH_OUT:
-A FORWARD -i eth0 -j LOG  --log-level 7 --log-prefix BANDWIDTH_IN:
-A OUTPUT -o eth0 -j LOG  --log-level 7 --log-prefix BANDWIDTH_OUT:
-A INPUT -i eth0 -j LOG  --log-level 7 --log-prefix BANDWIDTH_IN:
-A FORWARD -m state -i eth0 -o eth1 --state ESTABLISHED,RELATED -j ACCEPT
-A FORWARD -i eth1 -o eth0 -j ACCEPT
-A INPUT -p tcp -m tcp -i eth0 --dport 22 -j ACCEPT
-A INPUT -p tcp -m tcp -i eth0 --dport 80 -j ACCEPT
-A INPUT -p tcp -m tcp -i eth0 --dport 8080 -j ACCEPT
-A INPUT -p tcp -m tcp -i eth0 --dport 10000 -j ACCEPT
-A INPUT -m state -i eth0 --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -i eth1 -j ACCEPT
-A FORWARD -p udp -m udp --dport 4569 -j ACCEPT
COMMIT
# Completed

*mangle
:FORWARD ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:PREROUTING ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
COMMIT
# Completed
*nat
:OUTPUT ACCEPT [0:0]
:PREROUTING ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING -o eth0 -j MASQUERADE
-A PREROUTING -p udp -m udp --dport 4569 -j DNAT  --to 192.168.1.23:4569
-A PREROUTING -p tcp -m tcp --dport 5930 -j DNAT  --to 192.168.1.130:5900
-A PREROUTING -p tcp -m tcp --dport 30 -j DNAT  --to 192.168.1.130:22
-A PREROUTING -p tcp -m tcp --dport 10001 -j DNAT  --to 192.168.1.130:10000
-A PREROUTING -p tcp -m tcp --dport 8000 -j DNAT  --to 192.168.1.130:8000
-A PREROUTING -p udp -m udp --dport 10001:20000 -j DNAT  --to 192.168.2.3:10001-20000
COMMIT
# Completed

我甚至:

apt-get purge iptables

&

apt-get install iptables

我尝试使用 Zoiper 从另一台计算机连接到 voip 提供商,但也被阻止了:

745 65.421743   174.34.146.162  192.168.1.105   ICMP    98  Destination unreachable (Port unreachable)

我还可以 ping 该 IP 并得到成功返回:

root@pbx:~ $ ping atlanta.voip.ms
PING atlanta.voip.ms (174.34.146.162) 56(84) bytes of data.
64 bytes from 174.34.146.162.rdns.ubiquityservers.com (174.34.146.162): icmp_seq=1 ttl=54 time=26.1 ms
64 bytes from 174.34.146.162.rdns.ubiquityservers.com (174.34.146.162): icmp_seq=2 ttl=54 time=28.8 ms
64 bytes from 174.34.146.162.rdns.ubiquityservers.com (174.34.146.162): icmp_seq=3 ttl=54 time=25.7 ms
64 bytes from 174.34.146.162.rdns.ubiquityservers.com (174.34.146.162): icmp_seq=4 ttl=54 time=27.9 ms
64 bytes from 174.34.146.162.rdns.ubiquityservers.com (174.34.146.162): icmp_seq=5 ttl=54 time=23.9 ms

--- atlanta.voip.ms ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4002ms
rtt min/avg/max/mdev = 23.934/26.542/28.848/1.734 ms

使用另一个网络,我能够成功连接到 voip 提供商,并且当我将路由器换成备份时也是如此。

我检查过的其他所有东西似乎都通过了。我可以从网络外部连接到 PBX,以及我需要连接的任何其他东西。只是路由器似乎不喜欢任何与 VOIP 相关的东西。

答案1

如果您使用 SIP VoIP 电话,则必须使用此iptables命令:

iptables -A FORWARD -p udp --dport 5060 -j ACCEPT

这是用于 SIP 消息的。您还需要一些用于语音数据包的端口:

iptables -A FORWARD -p udp --sport 1024: --dport 1024: -j ACCEPT

相关内容