2011-11-18 59 views
0

我已經安裝在FreeBSD 8.2防火牆使用IPF + IPNAT,也SQUID 2.7爲Web代理IP電話 - IPFilter的

所有用戶都可以訪問互聯網罰款,但我的大問題是IP他們嘗試訪問互聯網上的SIP服務器(外部提供商服務),他們無法建立連接。

用來品嚐的服務端口是: SIP:端口5060-5070 UDP/TCP RTP(語音)交通:端口10000-20000 UDP

這是我目前的系統配置,有什麼不對,但我不知道是什麼

接口: RL0 = LAN辦公室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服務器。

回答

2

NAT背後的SIP電話需要STUN服務器才能工作。

(無論是使用您的SIP提供商提供的一個,或嘗試從端口收集網/ stund)

如果你只有一個手機,你也可以嘗試portforwarding:

#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 
+0

這就足夠接近真相(需要STUN)+1:使用ICE kinda-sorta意味着使用STUN。您還可以建立一個SIP客戶端,該管理端可以通過管理方式配置爲在特定地址範圍內使用外部IP! –

1

你的第一個選項應該是SIP Express Router或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地址重定向的風險。