Asterisk + rules for a firewall
IPFW:
- Firewall comand
fwcmd=”/sbin/ipfw -q”
- Interface setup
- Outside interface
oip=”<your external ip address>”
- * pbx ip
pbxip=”<your * internal ip>”
- VoIP Traffic – SIP & IAX
${fwcmd} add pass tcp from ${oip} to ${pbxip} 5060 keep-state in
${fwcmd} add pass tcp from ${pbxip} to any 5060 keep-state out
${fwcmd} add pass udp from ${oip} to ${pbxip} 5060 keep-state in
${fwcmd} add pass udp from ${oip} to ${pbxip} 4569 keep-state in
${fwcmd} add pass udp from ${oip} to ${pbxip} 2727 keep-state in
${fwcmd} add pass udp from ${oip} to ${pbxip} 9999-20001 keep-state in
${fwcmd} add pass udp from ${pbxip} to any keep-state out
PF:
- Your inet interface
ext = rl0
- SIP (TCP)
voip_tcp = “5060”
- SIP, IAX2, IAX, RTP, MGCP (UDP)
voip_udp = “{5060, 4569, 5036, 9999 >< 20001, 2727}”
pf pass in on $ext inet proto tcp from any to any port $voip_tcp flags S/SA keep state
pf pass out on $ext inet proto tcp all flags S/SA keep state
pf pass in on $ext inet proto udp from any to any port $voip_udp keep state
pf pass out on $ext proto udp all keep statepf.conf on gateway router/asterisk box with QoS
- macros ####
ext_if=”xl0″ # 172.16.0.2
int_if=”xl1″ # 10.0.0.1
lan_net = “10.0.0.0/24”
table <blocked> persist
table <routed> persist
- machines
ext_ip = “172.16.0.2”
siphost = “172.16.0.3”
voip = “10.0.0.4”
- options ####
set skip on lo0
set optimization conservative
set block-policy drop
set loginterface $ext_if
scrub in all
- QoS stuff #######
altq on $ext_if priq bandwidth 520Kb queue { q_pri, q_def, q_bulk, q_crap }
queue q_pri priority 7
queue q_def priority 5 priq(default)
queue q_bulk priority 1
queue q_crap priority 0
- NAT ####
nat on $ext_if from <routed> -> $ext_ip
- rules ####
block drop out quick on $ext_if proto { udp, icmp, tcp } from any to <blocked>
block drop in quick on $ext_if proto { udp, icmp, tcp } from <blocked> to any
block drop in on $ext_if from any to any
pass in on $ext_if from $lan_net to any
- basic
pass out on $ext_if proto tcp all modulate state flags S/SA
pass out on $ext_if proto { udp, icmp } all keep state
pass in on $int_if proto icmp all keep state
- asterisk
pass in from any to $siphost
pass in quick proto udp from any to any port 4569
keep state queue (q_pri)
pass out quick proto udp from any to any port 4569
keep state queue (q_pri)
- default
pass out on $ext_if proto tcp from $ext_if to any flags S/SA
keep state queue (q_def, q_pri)
pass in on $ext_if proto tcp from any to $ext_if flags S/SA
keep state queue (q_def, q_pri)
Asterisk + some modules and ports DHCPD + aliases on an interface