前言
本实验主要通过GNS3、VMware workstation来模拟局域网环境的vlan间通信、DNS解析、DHCP分配IP地址。
GNS3配置一台二层交换机和一台三层交换机,VMware workstation提供一台Windows server2012作为客户机(vlan 10)、一台CentOS7客户机(vlan 20)、一台CentOS7作为DNS和DHCP服务器,还有一台CentOS7作为Web服务器(服务器都在vlan 100)。
IP地址分配如下:
vlan 10网关:192.168.10.1/24
vlan 20网关:192.168.20.1/24
vlan 100网关:192.168.100.1/24
三个网关都设置在三层交换机的vlan接口上。
DHCP&DNS服务器:192.168.100.100/24
Web服务器:192.168.100.88/24
CentOS7客户机:192.168.20.88/24,通过DHCP的mac地址绑定下发
Windows server客户机:通过DHCP获取,vlan 10
配置
事先准备
所有Linux关闭防火墙
[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# setenforce 0
把VM的dhcp关掉
在VMware workstation中,编辑->虚拟网络编辑器,关掉DHCP
SW_2
SW1#conf t
# 关闭路由转发功能
SW1(config)#no ip routing
# 创建vlan 10、20、100
SW1(config)#vlan 10,20,100
SW1(config-vlan)#ex
# f1/1 f1/2 f1/3分别划分vlan、设置模式
SW1(config)#in f1/1
SW1(config-if)#sw mo ac
SW1(config-if)#sw ac vlan 10
SW1(config-if)#in f1/2
SW1(config-if)#sw mo ac
SW1(config-if)#sw ac v 20
SW1(config-if)#in f1/3
SW1(config-if)#sw mo ac
SW1(config-if)#sw ac v 100
# f1/0接口为trunk模式
SW1(config-if)#in f1/0
SW1(config-if)#sw mo t
SW1(config-if)#sw tr en d
SW_3
SW2#conf t
# 接口f1/0为trunk模式
SW2(config)#in f1/0
SW2(config-if)#sw mo t
SW2(config-if)#sw t en d
SW2(config-if)#ex
# 创建vlan10、20、100
SW2(config)#vlan 10,20,100
SW2(config-vlan)#ex
# 分别进入vlan子接口,配置IP地址和DHCP中继
SW2(config)#in vlan 10
SW2(config-if)#no sh
SW2(config-if)#ip add 192.168.10.1 255.255.255.0
SW2(config-if)#ip helper-address 192.168.100.100
SW2(config-if)#in vlan 20
SW2(config-if)#no sh
SW2(config-if)#ip add 192.168.20.1 255.255.255.0
SW2(config-if)#ip helper-address 192.168.100.100
SW2(config-if)#in vlan 100
SW2(config-if)#no sh
SW2(config-if)#ip add 192.168.100.1 255.255.255.0
SW2(config-if)#ip helper-address 192.168.100.100
DHCP配置
# 安装DHCP
[root@localhost ~]# yum -y install dhcp* &> /dev/null
[root@localhost ~]# rpm -q dhcp
dhcp-4.2.5-77.el7.centos.x86_64
# 查看配置文件的路径
[root@localhost ~]# rpm -qc dhcp
/etc/dhcp/dhcpd.conf
/etc/dhcp/dhcpd6.conf
/etc/openldap/schema/dhcp.schema
/etc/sysconfig/dhcpd
/var/lib/dhcpd/dhcpd.leases
/var/lib/dhcpd/dhcpd6.leases
# 复制example文件,配置在example文件中修改
[root@localhost ~]# cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf
[root@localhost ~]# vim /etc/dhcp/dhcpd.conf
# 修改全局配置
option domain-name-servers 192.168.100.100;
# 配置文件,添加以下subnet
subnet 192.168.100.0 netmask 255.255.255.0 {
range 192.168.100.101 192.168.100.180;
# 下发网关
option routers 192.168.100.1;
}
subnet 192.168.10.0 netmask 255.255.255.0 {
range 192.168.10.101 192.168.10.180;
option routers 192.168.10.1;
}
subnet 192.168.20.0 netmask 255.255.255.0 {
range 192.168.20.101 192.168.20.180;
option routers 192.168.20.1;
# 给CentOS7客户机绑定固定IP地址
host bind {
# mac为CentOS7客户机的网卡mac
hardware ethernet 00:0c:29:36:ab:5f;
fixed-address 192.168.20.88;
}
}
# 启动DHCP服务
[root@localhost ~]# systemctl start dhcpd
DNS服务
# 安装DNS服务
[root@localhost ~]# yum -y install bind*
[root@localhost ~]# rpm -qc bind
/etc/logrotate.d/named
/etc/named.conf # 主配置文件,控制系统全局
/etc/named.iscdlv.key
/etc/named.rfc1912.zones # 区域配置文件,控制具体单个区域
/etc/named.root.key
/etc/rndc.conf
/etc/rndc.key
/etc/sysconfig/named
/var/named/named.ca
/var/named/named.empty
/var/named/named.localhost # 区域数据配置文件,区域信息
/var/named/named.loopback
[root@localhost ~]# vim /etc/named.conf
# 主配置文件
options {
# 监听本地53端口
listen-on port 53 { 192.168.100.100; };
listen-on-v6 port 53 { ::1; };
directory "/var/named";
dump-file "/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_stats.txt";
memstatistics-file "/var/named/data/named_mem_stats.txt";
# 允许解析的主机,改为any
allow-query { any; };
recursion yes;
dnssec-enable yes;
dnssec-validation yes;
/* Path to ISC DLV key */
bindkeys-file "/etc/named.iscdlv.key";
managed-keys-directory "/var/named/dynamic";
pid-file "/run/named/named.pid";
session-keyfile "/run/named/session.key";
};
# 配置区域配置文件
[root@localhost ~]# vim /etc/named.rfc1912.zones
# 创建dnstest区域,可参照文件中已有例子
zone "dnstest.com" IN {
type master;
# 区域数据文件的文件名,默认位置在/var/named/下
# 默认位置在/etc/named.conf文件中的directory处设定
file "dnstest.com.zone";
allow-update { none; };
};
# 创建区域数据配置文件,以named.localhost为模板
# cp -p保留原权限复制
[root@localhost ~]# cp -p /var/named/named.localhost /var/named/dnstest.com.zone
[root@localhost ~]# cd /var/named
# 配置区域数据文件
[root@localhost named]# vim dnstest.com.zone
$TTL 1D
@ IN SOA dnstest.com. admin.dnstest.com. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
@ IN NS dnstest.com.
IN A 192.168.100.88
www IN A 192.168.100.88
ftp IN CNAME www
# 开启DNS服务
[root@localhost ~]# systemctl start named
web服务器
# nginx
yum -y install nginx &> /dev/null
/etc/nginx/sbin/nginx
# apache,与nginx二选一
yum -y install httpd &> /dev/null
systemctl start httpd
# 这里不做详细介绍,如有兴趣可关注笔者之后的更新
测试
在CentOS上使用ifconfig命令查看是否能正常获取IP地址,Windows上则在cmd上输入ipconfig。
Windows server上使用浏览器访问dnstest.com
在CentOS上使用curl命令,尝试获取dnstest.com的源码
出现以上现象说明DNS配置成功
总结
在整个布置过程中有很多易错点导致实验失败,比如没有关闭VMware workstation的DHCP功能,DHCP、DNS的配置出现错误,还有就是作为测试的Linux的网卡配置修改出现错误导致网络服务重启失败……实验并不难,需要你更多的细心和耐心。
在写配置文件的时候一定要注意格式,空格和制表符不能随便打。DHCP中的subnet配置的缩进为两个空格,DNS的区域数据配置文件可使用制表符。
当然也出现过一些非常奇怪的问题,比如GNS3的交换机不通了,这种时候笔者认为不要为难自己,可以重启一下GNS3试试。