eth1 直接端口 5060

Direct port 5060 for eth1

我有两个网络接口,eth0 是 PC 与软电话连接所必需的内部网络,eth1 link 连接到互联网。我在 CentOS 6.5 上使用 iptables 将 Freepbx (Asterisk) 的所有输出定向到 eth1,但我没有成功。

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

如果 public ip 在同一台服务器上,您需要使用 INPUT table 和 ACCEPT 目的地。

如果它在其他主机上,你已经使用了 DNAT。

看看 sip.conf。在 [general] 部分,有一个 bindaddressudpbindaddress。将它设置为 0.0.0.0 以确保 asterisk 监听所有接口。您可以通过以下方式查看:

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

然后使用iptables限制访问不必要的接口,比如(注意顺序):

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