上次咱们已经对
iptables
做了一个了解,并且后面也举了很多常用的例子。也许大家觉得很难,特别是那四张表和五个链。其实真正用的时侯没哪么复杂,等一下你们看完下面两个应用就会觉得确实不难。
每个人学技术的目的都是为客户解决问题,给客户拿出一套解决方案来。这样才算是做的有用功。
Iptables
有很多功能,咱们不用好高骛远。学两招真正用的上技术是比较现实的。说这番话的目的是为了缓解大家面对
iptables
的压力。
NAT
就不用说了吧,相信大家也不会陌生。不管哪个企业哪个机构都会用到它,想上网除了走代理就是走
NAT
,所以咱们必须要把这个技术吃透。不但要掌握在路由、
windows
上的配置还要掌握在
Linux
系统上的配置。下面来看一下
SNAT
和
DNAT
的应用。
拓扑图如下:
现在大家看到拓扑了,我们的目的是让内网用户安全的上网,另外就是把内网中的一台主机名为
www.zpp.com
的
web
服务器发布出去。这些应用只要是个公司肯定都会有的,前面虽然已给出了用
CISCO
路由、
windows
、
ISA
等设备的解决方案,但就性能和成本来说用
Linux
肯定是最划算的,现在大部分网吧、小型企业都用的是
iptables.
这里为了大家阅读方便我简单罗列一下拓扑上的信息:
1>.
网关服务器
iptables
有两块网卡,
TCP/IP
参数如下:
Eth0
(
LAN
接口)
IP
:
192.168.1.1/24
Eth1
(
WAN
接口)
IP
:
61.134.1.4/24
2>.
内网
Web
服务器的
IP
为:
192.168.1.10/24
网关:
192.168.1.1
主机名:
www.zpp.com
还是一样分两部分来说,先让内网中的用户上了网再说。然后再让
Internet
用户访问咱们的
Web
服务器。
第一部分:利用SNAT
技术使内网用户安全上网。
SNAT
(
Source Network Address Translation
)源网络地址转换,咱们用这个技术既可以化解四版本的地址危机,又可以起到隐藏局域网信息的功能。下面来看看如何使用
SNAT
技术使用内网用户安全上网。
1.
确认两块网卡的
TCP/IP
参数设置
.
如图
:
2.
开启网关服务器的路由转发功能。
1>.
到
/etc
目录下找到文件
sysctl.conf
将文件中的
net.ipv4.ip_forward = 0,
改为
net.ipv4.ip_forward = 1.
如图:
2>.
执行命令
sysctl –p
使咱们的修改生效。如图:
3.
为局域网访问
Internet
的数据包采用
SNAT
策略,将源地址更改为服务器的公网
IP
地址。
我这儿内网是
192.168.1.0/24
网段,所以源地址是
192.168.1.0/24.
这时大家可能会问,如果我用的是
ADSL
拨号上网
IP
地址不是固定的而是动态的,如何设置这个策略?此时我们可以使用
MASQUERADE
(伪装)策略。
MASQUERADE
是一种特殊的
SNAT
技术,它照样可完成修改(伪装)数据包源
IP
地址的工作,只不过它会自动获取外网接口的
IP
地址。下面是
MASQUERADE
策略的用法:
说明:使用
iptables
命令设置
MASQUERADE
策略时,只需要去掉
SNAT
策略中的“
—to-source IP
地址”,改为“
-j MASQUERADE
”指定数据包处理方式即可。
ADSL
通常使用
PPPoE
技术,在
Linux
系统中,对应的连接名称为
ppp0
、
ppp1
等,如果没不确定编号可以用
ppp+
代替。
现在来测试一下:
在内网的客户机上使用命令
nslookup,
可以成功解析出外网
google
网站的
IP
说明
DNS
请求可以通过
SNAT
正常进行。如图:
从下图可以看到我们利用
SNAT
我们可以成功的访问外部站。
第二部分:利用DNAT
技术将位于咱们局域网内部的web
服务器发布出去
。
DNAT
(
Destination Network Address Translation
)目标网络地址转换。和
SNAT
刚好相反,
DNAT
更灵活一点它可以用在
nat
表的
PREROUTING
链和
OUTPUT
链或被它调用的链。咱们用
DNAT
技术可以将内网或
DMZ
区中的服务器发布出去,
只需要一部搞定如下。在网关服务器上添加
DNAT
映射,将外网用户访问网关主机公网
IP
(地址为:
61.134.1.4
)
80
端口的数据包更改为网站主机的
IP(
地址为:
192.168.1.2).
如图:
现在我们到外网主机上去测试一下,可以看到可以成功访问内网的
web
主机。
(注:我这里开了一台启动了
httpd
服务的
Linux
主机用于模拟内网
web
主机
www.zpp.com
)
通过命令
nslookup
可以测试出
,
主机
www.zpp.com
所对应的
IP
是网关服务器的外网口地址。
OK
!现在我们
iptables
中的两个关键技术——
SNAT
、
DNAT
解决了两个关键的问题——用户安全上网的问题和发布内网服务器的问题。大家也可以发现虽然是关键的东西,但做起来并不难,几乎都只是一条命令搞定。这也正顺应了一句话——
Linux
是一种高起点低应用的技术,往往我们再学的时侯感觉很困难,但真真用的时侯就不哪样认为了。