`

iptables联网管理

 
阅读更多

http://bbs.hikemobile.com/thread-1644-1-1.html

http://5e76.net/show-2409.html

http://www.myexception.cn/open-source/429531.html

http://www.eoeandroid.com/thread-245052-1-1.html

 http://blog.csdn.net/Zengyangtech/article/details/5579311

 

 

https://code.google.com/p/droidwall/

 

 

http://www.oschina.net/p/droidwall/similar_projects?lang=0&sort=view&p=16

 

 http://smallnopoint.iteye.com/blog/1465138

 

private static boolean applyIptablesRulesImpl(Context ctx,
			List<Integer> uidsWifi, List<Integer> uids3g, boolean showErrors) {
		if (ctx == null) {
			return false;
		}
		assertBinaries(ctx, showErrors);
		final String ITFS_WIFI[] = { "tiwlan+", "wlan+", "eth+", "ra+", "mlan+" };
		final String ITFS_3G[] = { "rmnet+", "pdp+", "ppp+", "uwbr+", "wimax+",
				"vsnet+", "ccmni+", "usb+", "qmi+", "ccinet+" };

		final StringBuilder script = new StringBuilder();
		try {
			int code;
			script.append(String.format("export LD_LIBRARY_PATH=%s\n", System
					.getenv("LD_LIBRARY_PATH")));
			script.append(scriptHeader(ctx));

			script.append("" + "$IPTABLES --version\n"
					+ "# Create the DROIDWALL chains if necessary\n"
					+ "$IPTABLES --new DROIDWALL\n"
					+ "$IPTABLES --new DROIDWALL_MOBILE\n"
					+ "$IPTABLES --new DROIDWALL_WIFI\n"
					+ "$IPTABLES --new DROIDWALL_REJECT\n"
					+ "# Add DROIDWALL chain to OUTPUT chain if necessary\n"
					+ "$IPTABLES -D OUTPUT -j DROIDWALL\n"
					+ "$IPTABLES -I OUTPUT -j DROIDWALL\n"
					+ "$IPTABLES -F DROIDWALL || exit 7\n"
					+ "$IPTABLES -F DROIDWALL_MOBILE || exit 8\n"
					+ "$IPTABLES -F DROIDWALL_WIFI || exit 9\n"
					+ "$IPTABLES -F DROIDWALL_REJECT || exit 10\n" + "");
			script.append("" + "# Create the reject rule (log disabled)\n"
					+ "$IPTABLES -A DROIDWALL_REJECT -j REJECT || exit 11\n"
					+ "");
			script.append("# Main rules (per interface)\n");
			for (final String itf : ITFS_3G) {
				script.append("$IPTABLES -A DROIDWALL -o ").append(itf).append(
						" -j DROIDWALL_MOBILE || exit\n");
			}
			for (final String itf : ITFS_WIFI) {
				script.append("$IPTABLES -A DROIDWALL -o ").append(itf).append(
						" -j DROIDWALL_WIFI || exit\n");
			}

			script.append("# Filtering rules\n");
			final String targetRule = "DROIDWALL_REJECT";
			// final boolean any_3g = uids3g.indexOf(SPECIAL_UID_ANY) >= 0;
			// final boolean any_wifi = uidsWifi.indexOf(SPECIAL_UID_ANY) >= 0;

			if (any_3g) {
				script.append("$IPTABLES -A DROIDWALL_MOBILE -j ").append(
						targetRule).append(" || exit\n");
			} else {
				/* release/block individual applications on this interface */
				for (final Integer uid : uids3g) {
					if (uid >= 0)
						script
								.append(
										"$IPTABLES -A DROIDWALL_MOBILE -m owner --uid-owner ")
								.append(uid).append(" -j ").append(targetRule)
								.append(" || exit\n");
				}
			}
			if (any_wifi) {
				script.append("$IPTABLES -A DROIDWALL_WIFI -j ").append(
						targetRule).append(" || exit\n");
			} else {
				/* release/block individual applications on this interface */
				for (final Integer uid : uidsWifi) {
					if (uid >= 0)
						script
								.append(
										"$IPTABLES -A DROIDWALL_WIFI -m owner --uid-owner ")
								.append(uid).append(" -j ").append(targetRule)
								.append(" || exit\n");
				}
			}
			if (uids3g.indexOf(SPECIAL_UID_KERNEL) >= 0) {
				script.append("# hack to BLOCK kernel packets on black-list\n");
				script
						.append("$IPTABLES -A DROIDWALL_MOBILE -m owner --uid-owner 0:999999999 -j RETURN || exit\n");
				script
						.append("$IPTABLES -A DROIDWALL_MOBILE -j DROIDWALL_REJECT || exit\n");
			}
			if (uidsWifi.indexOf(SPECIAL_UID_KERNEL) >= 0) {
				script.append("# hack to BLOCK kernel packets on black-list\n");
				script
						.append("$IPTABLES -A DROIDWALL_WIFI -m owner --uid-owner 0:999999999 -j RETURN || exit\n");
				script
						.append("$IPTABLES -A DROIDWALL_WIFI -j DROIDWALL_REJECT || exit\n");
			}
			final StringBuilder res = new StringBuilder();
			code = runScriptAsRoot(ctx, script.toString(), res);
			if (showErrors && code != 0) {
				// String msg = res.toString();
				// Log.e("DroidWall", msg);
				// Remove unnecessary help message from output
				// if
				// (msg.indexOf("\nTry `iptables -h' or 'iptables --help' for more information.")
				// != -1) {
				// msg =
				// msg.replace("\nTry `iptables -h' or 'iptables --help' for more information.",
				// "");
				// }
				// alert(ctx, "Error applying iptables rules. Exit code: " +
				// code + "\n\n" + msg.trim());
				Toast.makeText(ctx,
						ctx.getString(R.string.kn_traffic_item_info_no_root),
						300).show();
				System.out.println("applyIptablesRulesImpl");
			} else {
				return true;
			}
		} catch (Exception e) {
			if (showErrors)
				Toast.makeText(ctx,
						ctx.getString(R.string.kn_traffic_item_info_no_root),
						300).show();
			System.out.println("applyIptablesRulesImpl");
		}
		return false;
	}

 

分享到:
评论

相关推荐

    让Linux操作系统NAT服务器支持UpnP

    在现代的家庭和企业网络环境中,UPnP(Universal Plug and Play)技术已经成为一种重要的设备联网方式。它允许智能设备自动发现并连接到网络,无需用户进行复杂的网络配置。UPnP规范基于TCP/IP协议和其他互联网协议...

    Linux管理员指南

    2. 防火墙设置:使用`ufw`或`iptables`配置防火墙规则,保护系统免受非法访问。 3. 安全审计:定期运行`last`、`logwatch`检查登录记录,使用`aide`或`tripwire`进行文件完整性检查。 六、备份与恢复 1. 数据备份...

    ubuntu网络配置

    - **端口转发与NAT**:`iptables`是Linux内建的防火墙工具,可用于设置端口转发和NAT规则。 7. **远程访问与SSH** - **SSH服务**:安装`openssh-server`,然后使用`sudo systemctl start ssh`启动SSH服务,允许...

    linux最全总结

    关闭和开启防火墙可以通过`chkconfig iptables off/on`实现,但请注意这需要管理员权限。 文件管理是日常工作中的基础,`cp`命令用于复制文件,支持同时复制多个文件到一个目录。Linux系统还提供了查看和编辑文件的...

    linux搭建NFS服务器的简单教程汇编.pdf

    2. 用户统一:用户的主目录可以放在NFS服务器上,用户在任何联网的机器上都能访问自己的个人文件,无需在每台机器上创建独立的home目录。 3. 设备共享:NFS还支持网络上其他设备的共享,例如软盘驱动器、CD-ROM和ZIP...

    RedHat Linux安装及使用指南

    4. **网络配置**:如果需要联网安装,此时可以配置网络连接,以便从服务器上获取更新和软件包。 5. **分区**:在安装过程中,你需要规划磁盘分区。可以选择自动分区,也可以手动创建/挂载点,如根目录`/`、用户目录...

    基于RT3050和TD-SCDMA网络的路由器NAT模块设计.pdf

    netfilter是Linux内核中的联网子系统,提供了有状态或无状态的分组过滤功能,以及NAT和IP伪装服务。NAT技术允许私有网络通过一个公用IP地址访问外部网络,使得内部网络的多台主机共享该IP地址上网成为可能。在典型...

    Docker 安装及配置

    Docker 安装及配置指南 Docker 是 dotcloud 公司开源的一款产品,主要基于 ...安装完成后,需要启用 iptables 并清空 iptables,以便更好地管理网络安全。最后,需要 shutdown 系统并保存快照,以便更好地管理系统。

    搭建ntp服务器

    下面将详细解释如何在 CentOS 中设置和管理 NTP 服务器。 ### 1. 安装 NTP 服务 首先,我们需要安装 NTP 服务。在 CentOS 中,可以通过执行以下命令来安装: ```bash sudo yum install ntp -y ``` ### 2. 更新 ...

    Kube-OVN中国电信天翼云边缘场景实践.pdf

    边缘计算的应用场景广泛,包括但不限于智能工厂、智慧城市、车联网、智能家居等。 ### Kube-OVN的选择理由 在边缘计算领域,选择Kube-OVN的理由多方面体现。相较于其他网络插件如flannel和Calico,Kube-OVN提供了...

    Debian Lenny系统安装与配置指南

    5. **安全设置**: 更新防火墙规则(iptables),安装防病毒软件(ClamAV)和安全更新。 6. **系统优化**: 调整内核参数,优化启动脚本,确保系统性能和稳定性。 7. **备份策略**: 设定定期备份策略,保护重要数据...

    linux redhat enterprise5.4+oracle10g安装过程以及vnc服务配置

    3. **网络配置**:确保服务器能正常联网,这有助于后续安装Oracle数据库时获取所需的依赖库。 4. **系统参数调整**:根据服务器的实际需求调整系统参数,如内存管理、文件句柄数量等。 #### 第二部分:Oracle 10g ...

    lamp环境搭建详细配置.pdf

    如果无法联网,可以使用安装光盘作为yum源。 2. **卸载系统预装组件**:在开始安装LAMP环境前,可能需要卸载系统自带的Apache、MySQL和PHP,以避免版本冲突。这可以通过`yum remove`命令完成。如果遇到依赖问题,...

    Hadoop集群部署

    为了确保虚拟机能够正常联网,需要进行如下配置: - **网络模式**: 设置虚拟机为Host-only模式,并开启共享网卡。 - **具体步骤**: - 在宿主机中,选择本地连接的属性,进入共享选项卡,设置Internet连接共享,...

    LINUX基础知识说课.ppt

    `rpm`管理软件包,`date`显示或设置日期,`uptime`显示系统运行时间,`setup`系统配置,`service`管理服务,以及网络相关指令如`ifconfig`、`route`、`ping`、`telnet`、`netstat`、`tcpdump`、`iptables`等。...

    Linux Redhat AS3 安装文档

    5. **网络配置**:安装时需配置网络参数,如IP地址、子网掩码、网关和DNS,确保系统安装后能正常联网。 6. **软件选择**:根据需求选择要安装的软件包,如办公软件、开发工具、服务器软件等。 7. **用户和组管理**...

    cloudera manager 安装cdh 搭建大数据集群,详细讲解核心

    * 在单用户模式下,Cloudera Manager Agent 和所有由 Cloudera Manager 管理的进程都将以配置的用户和组启动。 3. JDK 安装 * JDK 安装是 Cloudera Manager 安装的前提条件 * export JAVA_HOME=/usr/jdk 4. MySQL...

    centos 安装配置

    2. 能够全天候联网,最好是拥有独立Global IP地址的接入方式。 3. 一个局域网环境,便于通过其他设备对服务器进行配置。 4. 若条件受限,也可以使用虚拟机软件如VMware在Windows上安装CentOS,但请注意虚拟环境下的...

    2012最新Lamp源码包安装过程(CentOS5.5版本)

    **LAMP**是一个开源软件堆栈,由四个主要部分组成:**Linux**操作系统、**Apache** Web服务器、**MySQL**数据库管理系统以及**PHP**编程语言。这套组合被广泛用于运行动态网站或Web应用程序。本文将详细介绍如何在...

Global site tag (gtag.js) - Google Analytics