本文主要讲述iptables-nat的使用,并结合dns的视图功能,分别解析来自内网用户和外网用户的访问;
本次环境全部系统为:Centos-6.5-64位
外网客户端为:windxp
一、DNS-view的实现;DNS-view的视图功能非常强大,它可以自动识别来自不同网段的IP,根据不同的访问者把域名分别解析成不同的IP地址。
本次实验就是要通过view达到这种功能,域名:ouyang.com
1、yum -y install bind
定义内网用户的view vim /etc/named.rfc1912.zones |
view lan { match-clients { 192.168.10.0/24; }; zone "ouyang.com" IN { type master; file "ouyang.com.lan"; }; zone "." IN { type hint; file "named.ca"; }; }; |
定义其它用户的view |
view default { match-clients { any; }; zone "ouyang.com" IN { type master; file "ouyang.com.wan"; }; }; |
2、为区域文件创建区域文件数据库。
vim /var/named/ouyang.com.lan |
$TTL 600 @ IN SOA dns.ouyang.com. dnsadmin.ouyang.com. ( 2014032901 序列号 1H 5M 3D 1D) IN NS dns 哉名服务器 dns IN A 192.168.10.15 定义一条域名服务器的A记录 web IN A 192.168.10.80 web服务器的地址 |
vim /etc/named/ouyang.com.wan |
$TTL 600 @ IN SOA dns.ouyang.com. dnsadmin.ouyang.com. ( 2014032901 1H 5M 3D 1D) IN NS dns dns IN A 192.168.10.15 web IN A 172.16.34.10 这是防火墙对外地址,在防火墙上做完目标地址转换时,外网访问的时候,就直接解析成了防火墙的外网卡地址 |
二、DNS-VIEW配置完成的后序操作;
修改区域文件数据库的权根为640
chmod 640 ouyang.com.*
修改宿主宿组为named用户和组
chown named:named ouyang.com.*
为确保区域数据库文件错误先测试一下;
[root@www named]# named-checkzone "ouyang.com.lan" ouyang.com.lan
zone ouyang.com.lan/IN: loaded serial 2014032901
OK
[root@www named]# named-checkzone "ouyang.com.lan" ouyang.com.wan
zone ouyang.com.lan/IN: loaded serial 2014032901
OK
一切检查无误后,可以开始启动named服务,后再查看53端口是否监听
[root@www named]# service named restart
Stopping named: . [ OK ]
Starting named: [ OK ]
[root@www named]# ss -tunl | grep 53
udp UNCONN 0 0 192.168.10.15:53 *:*
udp UNCONN 0 0 127.0.0.1:53 *:*
tcp LISTEN 0 3 192.168.10.15:53 *:*
tcp LISTEN 0 3 127.0.0.1:53 *:*
tcp LISTEN 0 128 ::1:953 :::*
tcp LISTEN 0 128 127.0.0.1:953 *:*
使用dig命令测试;
[root@www named]# dig -t A web.ouyang.com ; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.17.rc1.el6_4.6 <<>> -t A web.ouyang.com ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 46832 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1 ;; QUESTION SECTION: ;web.ouyang.com.INA ;; ANSWER SECTION: web.ouyang.com.600INA192.168.10.80 本机为内网用户,这个地址是web服务的地址,由此可以说view功能生效 ;; AUTHORITY SECTION: ouyang.com.600INNSdns.ouyang.com. ;; ADDITIONAL SECTION: dns.ouyang.com.600INA192.168.10.15 ;; Query time: 0 msec ;; SERVER: 192.168.10.15#53(192.168.10.15) ;; WHEN: Sat Mar 29 13:35:41 2014 ;; MSG SIZE rcvd: 82 |
二、web服务,为了达到效果这里只做为简单的安装
先测试一下web服务器的是否可以与DNS;
[root@nba ~]# ping 192.168.10.15 -c 5 PING 192.168.10.15 (192.168.10.15) 56(84) bytes of data. 64 bytes from 192.168.10.15: icmp_seq=1 ttl=64 time=2.18 ms 64 bytes from 192.168.10.15: icmp_seq=2 ttl=64 time=0.266 ms 64 bytes from 192.168.10.15: icmp_seq=3 ttl=64 time=0.223 ms
安装httpd服务;yum -y install httpd
为web服务提供一个首页;phpwind_GBK_8.3-zh_CN.zip
[root@nba ~]# unzip phpwind_GBK_8.3-zh_CN.zip [root@nba ~]# cd phpwind_GBK_8.3 [root@nba phpwind_GBK_8.3]# ls docs upload [root@nba phpwind_GBK_8.3]cp -rf docs upload /var/www/html/
web服务要想实现域名解析,需把DNS指向DNS服务器192.168.10.15
[root@nba ~]# cat /etc/resolv.conf
# Generated by NetworkManager
search yang.com
nameserver 192.168.10.15
# No nameservers found; try putting DNS servers into your
三、防火墙配置
iptables基于SNAT和DNAT这两个目标实现地址转换技术
源地址转换;SNAT,常用于让内网主机访问互联网
iptables如果工作在网络防火墙的模式下所有的规则都是定义在forward
1、配置防火墙地址;
[root@ou ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0
[root@ou ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth1
[root@ou ~]# service network restart
注意由于eth1网卡是由eth0复制的,在网卡的配置文件里把MAC地址还一列给注释了,把DEVICE="eth1"。还有再重启网卡的时候,会发现eth1配置的ip没有生效,只要把NetworkManager给关闭即可; service NetworkManager stop
防火墙上安装的两块网卡,一块连接内网通信,一块与外网通信,内网的用户要想实现与外网网络通信,内网的用户主机上需把网关指向防火墙对内网的IP地址。还有就是,虽然两块网卡都安装在同一台主机上,由于是两个网络段地址,默认的情况下是不通信的,因此需要手动打开Linux系统的路由转发功能方可实现通信。特别提醒一下;内部主机的网关需全部指向防火墙的内网IP。
2、开启路由转发功能; ,
[root@ou ~]# grep "ip_forward" /etc/sysctl.conf net.ipv4.ip_forward = 1 [root@ou ~]# sysctl -p net.ipv4.ip_forward = 1 net.ipv4.conf.default.rp_filter = 1 net.ipv4.conf.default.accept_source_route = 0 kernel.sysrq = 0 kernel.core_uses_pid = 1 net.ipv4.tcp_syncookies = 1 error: "net.bridge.bridge-nf-call-ip6tables" is an unknown key error: "net.bridge.bridge-nf-call-iptables" is an unknown key error: "net.bridge.bridge-nf-call-arptables" is an unknown key kernel.msgmnb = 65536 kernel.msgmax = 65536 kernel.shmmax = 68719476736 kernel.shmall = 4294967296
3、由于我们这是要实现让DNS视图功能能够自动解析外网的IP,DNS服务器也得经过防火墙,首先得保证防火墙自身能够解析的了,先测试验证一下可否解析内网的web服务;
本机要想实现解析需把DNS指向内网DNS服务器才可;
[root@ou ~]# cat /etc/resolv.conf # Generated by NetworkManager nameserver 192.168.10.15
4、配置规则,如上述拓扑图所示,内网服务器是由防火墙隔离开的,因此是需要配置规则,实现让防火墙发布出去,从而实现把内网IP转换成防火墙的外网IP,所以就得使用DNAT目标地址转换;
99 iptables -t nat -A PREROUTING -d 172.16.34.10 -p tcp --dport 80 -j DNAT --to-destination 192.168.10.80 100 iptables -t nat -A PREROUTING -d 172.16.34.10 -p udp --dport 53 -j DNAT --to-destination 192.168.10.15 101 iptables -t nat -A PREROUTING -d 172.16.34.10 -p tcp --dport 53 -j DNAT --to-destination 192.168.10.15
使用iptables -t nat -L -n -v 查看规则表;
四、内网客户端测试;
由上述图可以看出,内网用户在访问web服务的时候,解析的IP地址是内网的IP段,宣告内网测试成功;
五、外网客户端测试;外网测试我采用WindownXp系统测试
需要注意的是,外网主机不用设置网关,只需把DNS指向防火墙的对外网卡即可。
打开cmd命令窗口使用ping命令进行测试,看是否可以解析成功;
打开浏览器测试是否可以打开web服务的页面;
测试OK.
终于完成了,该睡觉了..........
本文出自 “春天里” 博客,请务必保留此出处http://wfnygah.blog.51cto.com/7150625/1387773