RK3399 Android7.1使用iptables实现防火墙功能

        iptables是android上可用的网络管控工具,它与kernel中的netfilter配合,为netfilter设置一些过滤规则,当kernel收到网络数据包后,依据iptables设置的规则进行相应的处理。

        iptables包括5条链表,分别为:PREROUTING(路由前),INPUT(输入),FORWARD(转发),OUTPUT(输出),POSTROUTING(路由后)。

        如果我要管控外部对本机的网络访问,就管控INPUT这条链路;如果要管控本机对外部的网络访问,就管控OUTPUT这条链路。

        规则主要有如下几种:

(1)ACCEPT:接收数据包

(2)DROP:丢弃数据包,不给任何回应

(3)REJECT:拒绝访问但会返回信息

        比如我如果禁止外部所有对本机的网络访问,可设置如下规则:

iptables -P INPUT DROP

        如果我禁止本机对外部的所有网络访问,可设置如下规则:

iptables -P OUTPUT DROP

如果要允许外部对本机指定端口的访问,可如下设置规则(-A是规则列表最后添加一条规则):

允许外部使用udp协议访问本机端口8001:

iptables -A INPUT -p udp  --dport 8001 -j ACCEPT

允许外部使用tcp协议访问本机端口8000,8001(多个端口需要添加 -m multiport ):

iptables -A INPUT -p tcp -m multiport --dport 8000,8001 -j ACCEPT

如果要允许本机指定端口访问外部网络,可如下设置规则:

允许本机8000端口使用tcp协议访问外部网络:

iptables -A OUTPUT -p tcp --sport 8000 -j ACCEPT

允许本机8000,8001端口使用udp协议访问外部网络:

iptables -A OUTPUT -p udp -m multiport --sport 8000,8001 -j ACCEPT

如果要删除某条规则,使用-D参数,如下:

iptables -D OUTPUT -p tcp --sport 8000 -j ACCEPT

iptables -D OUTPUT -p udp -m multiport --sport 8000,8001 -j ACCEPT

如果要全部放开INPUT和OUTPUT的网络访问,可设置如下:

iptables -P INPUT ACCEPT

iptables -P OUTPUT ACCEPT

        android可在系统设置中添加一个“防火墙”的选项,之后通过操作选项开关在代码中调用iptables命令通过设置如上面的规则实现对网络访问的管控。(可能需要系统root)。

  • 10
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值