怎样使用Linux的iptables工具进行网络共享

在本教程中,我将解释多个设备怎样在Linux下共享一个网络连接。目前无线路由器已经成为主流的消费品,从而解决了本文这一问题。这里假设你家中并没有一台无线路由器,不过,你却有一台已经有"猫"和有线网卡的的Linux主机。"猫"是以动态公有IP地址的模式连接到互联网,主机的网卡连接到你的交换机或者集线器。其他设备(如Linux或者Windows的PC或者笔记本)以网桥的形式连接,并且没有连接到互联网。为了共享Linux主机的互联网,你必须把主机转换成网关,以便它能实现从其他设备中传送和接受信息。

怎样使用Linux的iptables工具进行网络共享

术语字汇

私有IP地址(路由不可达地址)是一个被用于本地局域网的IP地址(在互联网中不可见)。

公用IP地址(路由可达地址)是一个在互联网中可见的IP地址。

IP伪装是一项允许一系列机器通过MASQ网关连接互联网的功能。这些MASQ网关之外的机器在互联网中是不可见的。MASQ之后的机器中任何流入或流出的数据必须经过MASQ网关。

网络地址转换(NAT)是一项通过IP伪装技术可以使私有IP地址访问互联网的功能。

Hardware Requirements

硬件要求

一台有两个接口(一个公有IP地址和其他的私有IP地址)的linux主机,这个主机将被用作网关。

一台或者多台拥有私有IP地址的linux/windows系统的PC或者笔记本。

交换机/集线器(可选)。

--------------------------------------分割线 --------------------------------------

相关阅读

iptables使用范例详解

iptables—包过滤(网络层)防火墙

Linux防火墙iptables详细教程

iptables+L7+Squid实现完善的软件防火墙

iptables的备份、恢复及防火墙脚本的基本使用

Linux下防火墙iptables用法规则详解

--------------------------------------分割线 --------------------------------------

教程步骤

接下来的过程需要在linux主机(用于共享的网关)上完成。

1、激活IP转发

为了设置网络共享,你需要在linux主机上更改一个内核参数来使能IP转发功能。内核启动参数设定在/etc/sysctl.conf文件中。

打开这个文件,定位到含有"# net.ipv4.ip_forward = 0"的这一行,移除#号(即取消注释),然后将其值设置为1,改好之后应该和下面的一致。

net.ipv4.ip_forward =1

你还要使激活IP转发功能生效,通过执行下面的命令:

$ sudo sysctl -w net.ipv4.ip_forward=1

$ sudo sysctl -p

2、NAT配置

另一个网络共享的重要部分是NAT配置,这可以通过使用iptables的命令,iptables包含四个防火墙的规则表:

FILTER (默认表格)

NAT

MANGLE

RAW

这个教程中我们将仅使用两个表格:FILTER和NAT表格。

首先,刷新所有活跃的防火墙的规则。

$ sudo iptables -X

$ sudo iptables -F

$ sudo iptables -t nat -X

$ sudo iptables -t nat -F

在输入表格中,你需要设置转发链(FORWARD)成可接受的(ACCEPT)目的地,因此所有通过主机的数据包将会被正确的处理。

$ sudo iptables -I INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

$ sudo iptables -I FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT

在NAT表中,你必须为你的WAN口启用IP伪装功能,我们假设WAN口协议是ppp0。为了在ppp0接口上使能IP伪造技术,我们使用以下的命令:

$ sudo iptables -t nat -I POSTROUTING -o ppp0 -j MASQUERADE

3、配置私有IP地址

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/17813.html