[asterisk-users] Dead Air on PF firewall

Michiel van Baak michiel at vanbaak.info
Mon Mar 10 07:20:54 CDT 2008


On 07:00, Mon 10 Mar 08, NOC ph wrote:
> Hi All,
> 
> I have an asterisk box on my DMZ, and I'm using a PF for my firewall, I 
> can make a call but some reasons I have a dead air.
> 
> Any Ideas? below are my rules...
> 
> ext_if = "bce0"
> int_if = "bce1"
> altitude = "172.16.1.0/24"
> 
> #### machines ####
> vbox = "172.16.1.1"
> uci = "172.16.1.4"
> voices = "203.172.x.1"
> ipc = "203.172.x.2"
> 
> #### default deny ####
> set block-policy return
> set loginterface $ext_if
> set skip on lo
> scrub in
> 
> #### nat ####
> nat on $ext_if from !($ext_if) -> ($ext_if:0)

> nat on $ext_if inet proto { udp tcp } from $vbox to any port 5060 -> 
> $ext_if port 5060
> nat on $ext_if inet proto tcp from $uci to any port 1500 -> $ext_if port 
> 1500

Why those two rules ? The first nat rule already takes care
of that

> rdr on $ext_if proto { udp tcp } from any to $ext_if port 5060 -> $vbox 
> port 5060
> rdr on $ext_if proto udp from any to $ext_if port 5100 -> $vbox port 5100

you have to forward the rtp ports as well
rdr on $ext_if proto udp from any to $ext_if port
10000:20000 -> $vbox

> 
> #### filtering section ####
> pass out on { $int_if, ext_if } inet proto { udp tcp } from $altitude to any
> pass in on $ext_if inet proto { tcp udp } from $ipc to any port 5060
> pass in on $ext_if inet proto tcp from $ipc to any port 1500 flags S/SA 
> keep state

And you should allow the rtp ports as well
pass in on $ext_if inet proto udp from any to any port
10000:20000 keep state

> pass in on bce0 proto tcp from $ipc to any port ssh flags S/SA keep state
> pass in inet proto icmp all icmp-type echoreq keep state
> pass in quick on bce1
> 

For reference, here are my pf rules for my internal pbx:

##########
# Macros #
##########
ext_if           = "rl0"
ext_ip           = "82.95.XXX.XXX"
int_if           = "wb0"
int_net          = "192.168.2.0/24"
voip_server      = "192.168.2.4"
voip_ports       = "{ 4569, 5060, 10000:20000 }"

####################################
# NAT rules: "rdr", "nat", "binat" #
####################################
nat on $ext_if from $int_if:network to any -> $ext_ip
# asterisk server
rdr on $ext_if proto udp from any to any port $voip_ports ->
$voip_server

#############
# Filtering #
#############
# voip always goes in the priority class
pass out quick on $ext_if inet proto udp from any to any
port $voip_ports keep state queue q_pri
pass in quick on $ext_if inet proto udp from any to any port
$voip_ports keep state queue q_pri

Also, make sure in asterisk sip.conf you have the externip
and localnet config parameters set.

-- 

Michiel van Baak
michiel at vanbaak.eu
http://michiel.vanbaak.eu
GnuPG key: http://pgp.mit.edu:11371/pks/lookup?op=get&search=0x71C946BD

"Why is it drug addicts and computer aficionados are both called users?"




More information about the asterisk-users mailing list