Linux防火墙NAT之SIP

TCPIP协议 专栏收录该内容
105 篇文章 6 订阅

环境:

防火墙 - Ubuntu Server 17.10.

SIP - Yate客户端,Asterisk服务器

网络拓扑:


1)防火墙配置IP,打开转发:

   ifconfig enp2s0 192.168.1.131
   ifconfig enp3s0 192.168.100.1
   
   echo 1 > /proc/sys/net/ipv4/ip_forward

2)加载nf_nat_sip模块建立expectations:

modprobe nf_nat_sip

3)配置FORWARD链,仅接收192.168.1.0/24网段的新建数据流和已建立或关联的数据流:

   iptables -t filter -P FORWARD DROP
   iptables -t filter -A FORWARD -s 192.168.1.0/24 -j ACCEPT
   iptables -t filter -A FORWARD -p udp -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
   iptables -t filter -A FORWARD -j LOG

4)使能conntrack的SIP helper:

   echo 1 > /proc/sys/net/netfilter/nf_conntrack_helper
   或者:
   iptables -t raw -A PREROUTING -p udp -m udp --dport 5060 -j CT --helper sip

5) 配置SNAT:

iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -j SNAT --to-source 192.168.100.1

6)检查conntrack建立情况:

root@localhost:~# conntrack  -L
udp      17 28 src=192.168.1.104 dst=192.168.100.100 sport=20551 dport=15061 src=192.168.100.100 dst=192.168.100.1 sport=15061 dport=20551 mark=0 use=1
udp      17 179 src=192.168.1.104 dst=192.168.100.100 sport=20550 dport=15060 src=192.168.100.100 dst=192.168.100.1 sport=15060 dport=20550 [ASSURED] mark=0 use=1
udp      17 3596 src=192.168.1.104 dst=192.168.100.100 sport=65309 dport=5060 src=192.168.100.100 dst=192.168.100.1 sport=5060 dport=65309 [ASSURED] mark=0 helper=sip use=3
root@localhost:~#

创建了一条dport等于5060的主session和一条RTP(dport等于20550)、一条RTCP的子session。

或者配置DNAT:

iptables -t nat -A PREROUTING -d 192.168.1.131 -i enp2s0 -j DNAT --to-destination 192.168.100.100

再次检查conntrack建立情况:

root@localhost:~# conntrack -L
udp      17 179 src=192.168.1.104 dst=192.168.1.131 sport=29448 dport=16988 src=192.168.100.100 dst=192.168.1.104 sport=16988 dport=29448 [ASSURED] mark=0 use=1
udp      17 3595 src=192.168.1.104 dst=192.168.1.131 sport=53966 dport=5060 src=192.168.100.100 dst=192.168.1.104 sport=5060 dport=53966 [ASSURED] mark=0 helper=sip use=3
udp      17 27 src=192.168.1.104 dst=192.168.1.131 sport=29449 dport=16989 src=192.168.100.100 dst=192.168.1.104 sport=16989 dport=29449 mark=0 use=1
root@localhost:~#
测试间隔必须清空conntrack -D,以免残留connection对新连接造成影响。
  • 0
    点赞
  • 0
    评论
  • 3
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

相关推荐
©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值