2011-11-18 4 views
0

나는IP 전화 FreeBSD의에 방화벽 뒤에 - IPFilter를

모든 사용자가 인터넷 벌금에 액세스 할 수있는 웹 프록시로도 SQUID 2.7 IPF + IPNAT를 사용하여 FreeBSD의 8.2에 방화벽을 설치했지만 내 큰 문제는 IP이다 전화를 사용하면 인터넷 (외부 공급자 서비스)에서 서버를 모으기 때문에 연결을 설정할 수 없습니다. 서비스를 모금하는 데 사용하는

포트는 다음과 같습니다 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, 게이트웨이 및 유효한 DNS 서버 인 freebsd 서버가 있습니다.

답변

2

NAT 뒤에있는 SIP 전화기는 작동하려면 STUN 서버가 필요합니다.

(어느 당신 모금 공급자가 제공 하나를 사용, 또는 포트 컬렉션에서 그물/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 
+0

+1에 대해서는 사실 (STUN이 필요함)에 충분히 가깝습니다. ICE 일종의 사용은 STUN을 사용한다는 것을 의미합니다. 특정 주소 범위에 대해 외부 IP를 사용하도록 관리 방식으로 구성 할 수있는 SIP 클라이언트를 구축 할 수도 있습니다. –

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이 다소 도움이되지만, RTP 포트가 고유하도록 SIP 폰을 제한해야 할 수도 있습니다 (한 전화기의 트래픽이 갑자기 다른 전화기에서 나타나지 않도록). 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 주소 리디렉션보다 훨씬 위험합니다.