【问题标题】:IP phone behind a firewall on FreeBSD - IPFilterFreeBSD 防火墙后的 IP 电话 - IPFilter
【发布时间】:2011-11-18 15:12:55
【问题描述】:

我在 FreeBSD 8.2 上使用 ipf+ipnat 安装了防火墙,也使用 SQUID 2.7 作为网络代理

所有用户都可以上网,但我最大的问题是IP电话,他们尝试访问互联网上的sip服务器(外部提供商服务),他们无法建立连接。

用于 sip 服务的端口是: SIP:端口 5060-5070 UDP/TCP RTP(语音)流量:端口 10000-20000 UDP

这是我目前的系统配置,有问题,但我不知道是什么

接口: rl0 = 局域网办公室 192.168.10.x bge0 = WAN 互联网连接

rc.conf:

squid_enable="YES"
ipfilter_enable="YES"
ipfilter_rules="/etc/ipf.rules"
ipmon_enable="YES"
ipmon_flags="-Ds"
gateway_enable="YES"
ipnat_enable="YES"
ipnat_rules="/etc/ipnat.rules"

ipf.rules:

pass out quick on rl0 all
pass in quick on rl0 all

pass out quick on bge0 all
pass in quick on bge0 all

pass in quick on lo0 all
pass out quick on lo0 all

我打开了两个接口的所有流量(暂时),但我没有得到好的结果,所有的 ip 电话都不能工作

ipnat.rules:

rdr rl0 0.0.0.0/0 port 80 -> 127.0.0.1 port 8080 tcp # transparent proxy
rdr bge0 0.0.0.0/0 port 22 -> 127.0.0.1 port 22 tcp # ssh server
map bge0 192.168.10.0/16 -> 0.0.0.0/32 proxy port ftp ftp/tcp
map bge0 192.168.10.0/16 -> 0.0.0.0/32 portmap tcp/udp auto
map bge0 192.168.10.0/16 -> 0.0.0.0/32

所有 ip 电话和计算机都有静态 ip,freebsd 服务器作为网关和一个有效的 DNS 服务器。

【问题讨论】:

    标签: firewall sip freebsd squid nat


    【解决方案1】:

    NAT 后面的 SIP 电话需要 STUN 服务器才能工作。

    (要么使用您的 sip 提供商提供的,要么尝试从端口集合中获取 net/stund)

    如果您只有一部手机,您也可以尝试端口转发:

    #SIP
    #rdr pass on $ext_if proto tcp from any to $ext_addr port = 5060 -> \
        $IP_PHONE port 5060
    #RTP
    #rdr pass on $ext_if proto tcp from any to $ext_addr port = 5004 -> \
    #        $IP_PHONE port 5004
    #stun
    #rdr pass on $ext_if proto tcp from any to $ext_addr port = 10000 -> \
     #        $IP_PHONE port 10000
    

    【讨论】:

    • 这与 +1 的事实(需要 STUN)非常接近:使用 ICE 有点暗示使用 STUN。您还可以构建一个 SIP 客户端,该客户端可以通过管理方式配置为对某些地址范围使用外部 IP!
    【解决方案2】:

    您的第一个选项应该是 SIP Express 路由器或 SER。 The website 将是一个很好的起点。如果做不到这一点(由于某种原因你无法安装它),你可能不得不去老派。

    您可能遇到的问题是电话的传入连接来自网络外部,因此没有为传入流量“保存”端口。您可以通过定期注册来克服其中的一些问题,或者您可以设置防火墙和 NAT 配置以将流量从您的提供商传递到特定电话,但这只会让您只有一部电话进行连接。您需要配置您的上游提供商以通过不同的端口发送每部电话的连接,并将该端口绑定到特定的 IP 和端口。例如:

    rdr rtk0 123.123.123.123/32 port 5061 -> 192.168.100.11 port 5061 udp
    rdr rtk0 123.123.123.123/32 port 5062 -> 192.168.100.12 port 5062 udp
    etc. 
    

    其中 123.123.123.123 是您的提供商的 SIP 主机地址。配置您的手机,以便它们在端口 5060 + 一些偏移量上进行通信。

    即使这对您的连接有所帮助,您仍然可能会遇到 RTP 问题。 STUN 会有所帮助,但您可能需要限制您的 SIP 电话,以便它们的 RTP 端口是唯一的(这样来自一部电话的流量不会突然开始出现在另一部电话上)。 SIP 和 RTP 的端口范围非常大——您可以将您的手机限制为,例如,每部手机 10 个,并且可以轻松覆盖很多领域。看起来像这样:

    rdr rtk0 123.123.123.123/32 port 10000-10009 -> 192.168.100.11 port 10000 udp
    rdr rtk0 123.123.123.123/32 port 10010-10019 -> 192.168.100.12 port 10010 udp
    

    将您的手机 RTP 范围设置为其独特的范围,您应该会比较顺利。

    请注意,在 RDR 中使用 SIP 服务器的地址比一揽子 0.0.0.0/0 地址重定向的风险要小得多。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-04-05
      • 1970-01-01
      • 2015-03-10
      • 1970-01-01
      • 2017-05-07
      • 1970-01-01
      • 1970-01-01
      • 2015-03-02
      相关资源
      最近更新 更多