Android系统中iptables的应用(四)FirewallController
来源:互联网 发布:windows tasks sched 编辑:程序博客网 时间:2024/04/30 11:57
个人邮箱:xiaokeweng@gmail.com 欢迎大家直接发邮件给我共同交流学习
如下涉及到的全部firewall的在用的Netdcmd,只有在设置LockDown Vpn的时候才会使用到,lockdown的VPN即是“始终开启的VPN”,这样本地的全部网络请求都会转到VPN的链路上,是相对于针对个别应用的虚拟专用网络需求的情况。
如下涉及到的全部firewall的在用的Netdcmd,只有在设置LockDown Vpn的时候才会使用到,lockdown的VPN即是“始终开启的VPN”,这样本地的全部网络请求都会转到VPN的链路上,是相对于针对个别应用的虚拟专用网络需求的情况。
firewall enable|disableset_interface_rule<interface><allow|deny>set_egress_source_rule<add><allow|deny>set_egress_dst_rule<addr><port><allow|deny>set_uid_rule<uid><allow|deny>(1) Netd.CommanderListener初始化后:
(2) 开启VPN,并设置为“始终开启的VPN”后:createChildChains(V4V6, "filter", "INPUT", FILTER_INPUT);createChildChains(V4V6, "filter", "FORWARD", FILTER_FORWARD);createChildChains(V4V6, "filter", "OUTPUT", FILTER_OUTPUT); createChildChains(V4V6, "mangle", "POSTROUTING", MANGLE_POSTROUTING);sFirewallCtrl->setupIptablesHooks();filter表:
-N fw_INPUT
-N fw_OUTPUT
-N fw_FORWARD
-A INPUT -j fw_INPUT
-A OUTPUT -j fw_OUTPUT
-A FORWARD -j fw_FORWARD
mangle表:
-N fw_mangle_POSTROUTING
-A POSTROUTING -j fw_mangle_POSTROUTING
(3)关于racoon 中ip-sec的默认端口sFirewallCtrl->enableFirewall();sFirewallCtrl->setInterfaceRule([lo], [allow]);sFirewallCtrl->setEgressDestRule(addr, PROTOCOL_x, port, rule);sFirewallCtrl->setEgressSourceRule(addr, PROTOCOL_x, port, rule);sFirewallCtrl->setUidRule(uid, rule);filter表新增规则:
-A fw_FORWARD -j REJECT --reject-with icmp-port-unreachable
-A fw_INPUT -m owner --uid-owner 1000 -j RETURN
-A fw_INPUT -m owner --uid-owner 0 -j RETURN
-A fw_INPUT -d 10.122.160.81/32 -j RETURN
-A fw_INPUT -i ppp0 -j RETURN
-A fw_INPUT -s 210.61.122.57/32 -p udp -m udp --sport 1701 -j RETURN
-A fw_INPUT -s 210.61.122.57/32 -p tcp -m tcp --sport 1701 -j RETURN
-A fw_INPUT -s 210.61.122.57/32 -p udp -m udp --sport 4500 -j RETURN
-A fw_INPUT -s 210.61.122.57/32 -p tcp -m tcp --sport 4500 -j RETURN
-A fw_INPUT -s 210.61.122.57/32 -p udp -m udp --sport 500 -j RETURN
-A fw_INPUT -s 210.61.122.57/32 -p tcp -m tcp --sport 500 -j RETURN
-A fw_INPUT -i lo -j RETURN
-A fw_INPUT -j DROP
-A fw_OUTPUT -m owner --uid-owner 1000 -j RETURN
-A fw_OUTPUT -m owner --uid-owner 0 -j RETURN
-A fw_OUTPUT -s 10.122.160.81/32 -j RETURN
-A fw_OUTPUT -o ppp0 -j RETURN
-A fw_OUTPUT -d 210.61.122.57/32 -p udp -m udp --dport 1701 -j RETURN
-A fw_OUTPUT -d 210.61.122.57/32 -p tcp -m tcp --dport 1701 -j RETURN
-A fw_OUTPUT -d 210.61.122.57/32 -p udp -m udp --dport 4500 -j RETURN
-A fw_OUTPUT -d 210.61.122.57/32 -p tcp -m tcp --dport 4500 -j RETURN
-A fw_OUTPUT -d 210.61.122.57/32 -p udp -m udp --dport 500 -j RETURN
-A fw_OUTPUT -d 210.61.122.57/32 -p tcp -m tcp --dport 500 -j RETURN
-A fw_OUTPUT -o lo -j RETURN
mangle表新增规则:
-A fw_mangle_POSTROUTING -m owner --uid-owner 1000 -j RETURN
-A fw_mangle_POSTROUTING -m owner --uid-owner 0 -j RETURN
-A fw_mangle_POSTROUTING -s 10.122.160.81/32 -j RETURN
-A fw_mangle_POSTROUTING -o ppp0 -j RETURN
-A fw_mangle_POSTROUTING -d 210.61.122.57/32 -p udp -m udp --dport 1701 -j RETURN
-A fw_mangle_POSTROUTING -d 210.61.122.57/32 -p tcp -m tcp --dport 1701 -j RETURN
-A fw_mangle_POSTROUTING -d 210.61.122.57/32 -p udp -m udp --dport 4500 -j RETURN
-A fw_mangle_POSTROUTING -d 210.61.122.57/32 -p tcp -m tcp --dport 4500 -j RETURN
-A fw_mangle_POSTROUTING -d 210.61.122.57/32 -p udp -m udp --dport 500 -j RETURN
-A fw_mangle_POSTROUTING -d 210.61.122.57/32 -p tcp -m tcp --dport 500 -j RETURN
-A fw_mangle_POSTROUTING -o lo -j RETURN
-A fw_mangle_POSTROUTING -j DROP
以上新增的规则看起很多,其实并不复杂,比较好理解,本例中,建立起来的L2TP_IPSEC_PSK类型的VPN,server地址是 210.61.122.57/32,通信的iface是ppp0 , ppp0的addr:10.122.160.81/31, 其中规则中vpn相关的port:
[500 ] : ip-sec的默认ISAKMP密钥交换监听端口,可参考racoon的man手册。
[4500] : ip-sec的默认NAT-Traversal通信端口,可参考racoon的man手册。
[1701] : L2TP类型VPN在framework下mtpd与racon cmd的时候制定的port。
所以以上的全部rule就是保证VPN相关的控制流&数据流能顺利通过规则,在被DROP掉之前RETURN,同时阻断VPN无关的数据。
racoon — IKE (ISAKMP/Oakley) key management daemon
racoon speaks the IKE (ISAKMP/Oakley) key management protocol, to establish security associations with other hosts. The SPD (Security Policy Database) in the kernel usually triggers racoon. racoon usually sends all informational messages, warnings and error messages to syslogd(8) with the facility LOG_DAEMON and the priority LOG_INFO. Debugging messages are sent with the priority LOG_DEBUG. You should configure syslog.conf(5) appropriately to see these messages.
-P isakmp-natt-port
Use isakmp-natt-port for NAT-Traversal port-floating. The default is 4500.
-p isakmp-port
Listen to the ISAKMP key exchange on port isakmp-port instead of the default port number, 500
0 0
- Android系统中iptables的应用(四)FirewallController
- Android系统中iptables的应用(一)概述
- Android系统中iptables的应用(二)BandwidthController
- Android系统中iptables的应用(三)NatController
- Android系统中iptables的应用(五)IdlertimerController
- Android中iptables应用
- Android iptables的应用
- 日常运维(四):iptables filter表案例 iptables nat表应用
- openwrt中ubus的应用(四)
- 总结iptables的应用
- iptables 的应用
- iptables的应用
- iptables的应用
- android 应用系统分为四层结构
- Android N的Audio系统(四)
- 企业中squid+iptables多模块的综合应用案例
- Android系统中数据库应用
- Android系统应用开发(四)系统语言以及添加字体库
- hdu 5468 Puzzled Elena
- 重复执行SQL判断语句整合
- Kurento模块开发指南之二:开发示例 Pointer Detector Filter
- PowerShell 数组(Array)
- HTTP头信息解读【SEO必知】
- Android系统中iptables的应用(四)FirewallController
- 10月9日 Meteor Global Hackathon.
- HTML各个标签的默认样式
- 利用redis实现分布式锁
- 多线程写不同的file
- 分布式系统概念与设计-CH1:分布式系统的特征
- 深入理解JVM—JVM内存模型
- Android5.X Activity跳转动画
- Android SDK API 15 各安装包下载地址