🏢 项目场景
相关背景: 类似小型公司网络搭建(两个人的公司😎) 一边是内网 一边是外网。
📜 要求描述
1)网关服务器:ens36:12.0.0.254/24,ens33:192.168.100.254/24;Server1:192.168.100.101/24;PC1和server2:自动获取IP;交换机无需配置。要求能够使用Xshell等远程工具登录Server1和网关服务器。
2)网关服务器提供DHCP服务给PC1和server2分配对应网段的IP地址和DNS服务器地址(注意后面题目的需求)。
3)server1服务器上创建密钥对并上传给网关服务器,并使server1的root用户可以使用root用户免交互登录网关服务器
4)server1服务器安装和启动httpd服务搭建Web网站,首页内容自定,但需要把server2的/share目录中的首页文件index.html,通过NFS挂载到server1的/var/www/html目录下使用。
5)网关服务器:搭建DNS分离,局域网解析www.benet.com 为server1的IP地址,外网解析为12.0.0.254,并且实现SNAT和DNAT 转换成ens36接口地址,PC1可以使用域名www.benet.com解析12.0.0.254直接访问Web网站。
🫵场景分析
可以先画整体的构思图 整理出大概得思路:
1.网关服务器 一个对内网 一个外网 在虚拟机上对应两个网卡,!!#ffff00 ens33 192网段 ens36 12 网段!! 整个场景分析下来 之后还得作为dhcp服务器 和DNS服务器 所以配置网卡的时候 都需要指向本机。 2.SV1需要手动配置和ens33 同网段IP ,网关服务器 同样作为他的DNS服务器 DNS指向网关服务器 且和SV2同网段。 3.SV2和PC1 通过IP地址 需要dhcp服务器 地址池分配 DNS指向网关服务器 4.NFS存储共享服务,SV2作为共享服务器 共享自己的目录 到SV1上 并展示。 5.www.benet.com 为server1的IP地址 PC1可以使用域名www.benet.com解析12.0.0.254
🔍 可能出现问题
1.虚拟机搭建模拟实验环境,可能会存在虚拟机网段和题目要求不一样的情况,需要按照题目要求调整网卡配置 网卡模式 并且连通xhell
2.dhcp分配不同网段 可能会存在对应分配错误情况
3.ssh免密登录网关服务器 客户机和服务机 注意区分
4.NFS共享的服务端和客户端
5.DNS服务器 混淆 理解清楚谁给谁提供DNS域名解析 解析过程。
6.对应各服务 安装软件的名称
👍 解决方案
!!#fff2cc 以下场景默认关闭防火墙和selinux!!
!!#ffff00 systemctl stop firewalled
setenforce 0 !!
1.本机网段 和题目要求不一样 需要按照题目要求 调整VM8 和VM1 配置 调整为对应的网段192 12 两个。
2.虚拟机网络配置NAT和仅主机模式都需要对应调整 网关也调整。
3.规划四台虚拟机 首选部署网关服务器 在网关服务器,添加一个仅主机模式的网卡 给12段使用
[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33 #编辑网卡配置
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.100.254
NETMASK=255.255.255.0
GATEWAY=192.168.100.254
DNS1=127.0.0.1
DNS2=218.2.135.1
[root@localhost ~]# systemctl restart network #重启网络
[root@localhost ~]# ifconfig #查看网卡配置是否生效以及新加网卡名称
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.100.254 netmask 255.255.255.0 broadcast 192.168.100.255
inet6 fe80::7f34:379f:8add:fd96 prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:24:f7:87 txqueuelen 1000 (Ethernet)
RX packets 7960 bytes 2142282 (2.0 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 2227 bytes 323816 (316.2 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
ens36: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
ether 00:0c:29:24:f7:91 txqueuelen 1000 (Ethernet)
RX packets 7 bytes 603 (603.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 104 bytes 18672 (18.2 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens36 #手动更改网卡ens36配置文件。
DEVICE=ens36
NAME=ens36
BOOTPROTO=static
ONBOOT=yes
IPADDR=12.0.0.254 #IP地址
NETMASK=255.255.255.0 #子网掩码 题目要求
GATEWAY=12.0.0.254 #网关指向自己
DNS1=127.0.0.1 #DNS本机
[root@localhost ~]# ifconfig #查看网卡是否生效配置
ens36: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 12.0.0.254 netmask 255.255.255.0 broadcast 12.0.0.255
inet6 fe80::20c:29ff:fe24:f791 prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:24:f7:91 txqueuelen 1000 (Ethernet)
RX packets 16 bytes 1326 (1.2 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 189 bytes 32053 (31.3 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
[root@localhost etc]# cat resolv.conf #查看DNS设置
# Generated by NetworkManager
nameserver 127.0.0.1 #代表本机
nameserver 218.2.135.1
2.配置SV1 网卡 按照要求Server1:192.168.100.101/24 手动修改网卡配置文件
[root@xyy1 ~]# systemctl restart network #重启网络
[root@xyy1 ~]# ifconfig #查看配置是否生效
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.100.101 netmask 255.255.255.0 broadcast 192.168.100.255
inet6 fe80::20c:29ff:fe6c:b61a prefixlen 64 scopeid 0x20<link>
[root@xyy1 ~]# cat /etc/resolv.conf #查看DNS配置
nameserver 192.168.100.254
3.配置完成之后 连接xshell 鼠标右键属性或者新建填写对应主机即可 连接上之后建议可以先改名
[root@localhost ~]# hostnamectl set-hostname GSV
[root@gsv ~]# #exit 退出后重新打开就可以生效
[root@gsv ~]# hostnamectl set-hostname SV1
[root@sv1 ~]# dhcp
4.根据场景分析 可以先安装所需软件在网关服务器以及SV1上 (可以先改网关通网 也可以之后用本地yum仓库)
[root@gsv ~]# yum install bind dhcp bind-utlis httpd -y #安装所需软件 网关服务器
[root@sv1 ~]# yum install httpd nfs-utlis rpcbind -y #SV1上安装软件
5.网关服务器分配对应的IP地址 给PC1和SV2 网关服务器安装dhcp后 修改配置文件 分配地址
[root@gsv ~]# 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
[root@gsv ~]# cat /etc/dhcp/dhcpd.conf
#
# DHCP Server Configuration file.
# see /usr/share/doc/dhcp*/dhcpd.conf.example
# see dhcpd.conf(5) man page
#
[root@gsv ~]# cp -p /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf
cp:是否覆盖"/etc/dhcp/dhcpd.conf"? y
[root@gsv ~]# vim /etc/dhcp/dhcpd.conf #修改配置文件
# This is a very basic subnet declaration.
subnet 192.168.100.0 netmask 255.255.255.0 {
range 192.168.100.50 192.168.100.90;
option routers 192.168.100.254;
option domain-name-servers 192.168.100.254;
}
subnet 12.0.0.0 netmask 255.255.255.0 {
range 12.0.0.50 12.0.0.100;
option routers 12.0.0.254;
option domain-name-servers 12.0.0.254;
}
[root@gsv ~]# systemctl start dhcpd #开启服务 如果异常可以查看日志 根据日志提示处理。
如果服务启动失败报错可以根据日志提示进行修改处理。
SV2 网卡配置文件修改 模式修改为dhcp获取 其余直接注释掉即可。从网关服务器获取 修改配置后重启网络服务查看 是否对应IP池内部地址
[root@sv2 ~]# ifconfig #查看网卡信息
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.100.50 netmask 255.255.255.0 broadcast 192.168.100.255
inet6 fe80::bb40:9fd0:5f4e:2392 prefixlen 64 scopeid 0x20<link>
[root@sv2 ~]# cat /etc/resolv.conf #DNS设置查看
# Generated by NetworkManager
search example.org
nameserver 192.168.100.254
PC1先修改网卡为仅主机模式 然后 修改网卡配置信息 同SV1一样 dhcp获取网卡配置 其余注释掉
[root@pc1 ~]# systemctl restart network
[root@pc1 ~]# ifconfig #查看地址在IP地址池内
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 12.0.0.50 netmask 255.255.255.0 broadcast 12.0.0.255
inet6 fe80::d07:f07:5c30:9920 prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:80:97:54 txqueuelen 1000 (Ethernet)
配置完成后 四台虚拟机都可以按照各自对应的主机 连接到xshell
- server1服务器上创建密钥对并上传给网关服务器,并使server1的root用户可以使用root用户免交互登录网关服务器
SV1 创建秘钥给网关服务器 192.168.100.254
[root@sv1 ~]# ssh-keygen
秘钥传给网关服务器
[root@sv1 ~]# ssh-copy-id -i /root/.ssh/id_rsa.pub 192.168.100.254
测试验证: SV1root账户免密直接登录网关服务器 对方日志也可以查看到
7.SV1服务器安装和启动httpd服务搭建Web网站,首页内容自定 SV1已经安装httpd 软件 所以直接书写html文件即可
[root@sv1 ~]# cd /var/www/html/ #切换到对应网页文件目录
[root@sv1 html]# vim index.html #编辑静态文件 内容随便
[root@sv1 html]# systemctl start httpd #启动httpd服务
[root@sv1 html]# curl 192.168.100.101 #显示静态页文件
你快乐吗?!
8.把server2的/share目录中的首页文件index.html,通过NFS挂载到server1的/var/www/html目录下使用 分析得知 SV2属于服务端,SV1是客户端 SV2需要安装httpd和nfs-utils rpcbind 三个软件
yum install nfs-utils rpcbind httpd -y
[root@sv2 /]# mkdir share #新建一个共享文件目录
[root@sv2 /]# cd /var/www/html/ #切换到网页规定目录
[root@sv2 html]# vim index.html #编辑文件
[root@sv2 html]# systemctl start httpd #启动服务
[root@sv2 html]# curl 192.168.100.50 #查看文件显示
每天都一样!
[root@sv2 html]# cp -p index.html /share/ #对应文件复制到共享目录里面。
[root@sv2 html]# ls /share/
index.html
[root@sv2 html]# vim /etc/exports #编辑NFS配置文件
/share *
~
~
~
[root@sv2 html]# exportfs -v #查看本机共享情况
/share <world> (ro,sync,wdelay,hide,no_subtree_check,sec=sys,secure,root_squash,no_all_squash) #权限
systemctl start rpcbind nfs #启动服务 nfs
切换到客户端SV1 查看共享情况
[root@sv1 /]# showmount -e 192.168.100.50 #查看共享情况 服务器的。
Export list for 192.168.100.50:
/share *
[root@sv1 /]# mount 192.168.100.50:/share /var/www/html/ # 共享目录挂载到静态页面目录下
[root@sv1 /]# curl 192.168.100.101 #验证本机访问 显示的是共享目录内容
每天都一样!
上面是临时挂载 如果需要永久挂载需要手写配置文件/etc/fstab
7.网关服务器解析 外网访问www.benet.com 是192.168.100.101(SV1) 内网访问是12.0.0.254
首先安装软件 bind bind-utlis 查看配置文件 修改配置文件
[root@gatesv named]# rpm -qc bind
修改主配置文件 允许对方和自己互相访问 不做限制。
将根域注释。分离解析时 启用 view ,所有zone 都必须在 view 里面
zone "." IN {
type hint;
file "named.ca";
# zone 是指分配给某个服务器的特定命名空间
修改区域配置文件
view "lan" {
match-clients { 192.168.100.0/24; }; # 定义内外网 view代表容器分割
zone "benet.com" IN { #定义域名
type master; #定义类型
file "bet.net.com.lan"; #定义配置文件名
};
zone "." IN {
type hint; #根区域类型
file "named.ca";
};
};
复制模板配置文件给对应的已定义配置文件 修改文件
[root@gatesv named]# cp -p /var/named/named.localhost bet.net.com.wan #保留权限复制 一会需要调用文件 执行named服务。
[root@gatesv named]# cp -p /var/named/named.localhost bet.net.com.lan
验证不同客户端访问 结果 NDS解析是否正确
9.snat和dnat snat 使内网地址 SNAT:让内网通过某一特定地址访问外部网络,实现地址伪装,请求报文:修改源IP DNAT:把本地网络中的主机上的某服务开放给外部网络访问(发布服务和端口映射),但隐藏真实IP,请求报文:修改目标IP (简单理解就是局域网共享到公网上面)
网关服务器需要先开启路由转发功能
[root@gatesv ~]# sysctl -a |grep ip_forward
net.ipv4.ip_forward = 1 #默认是0 修改为1 开启路由转发
[root@gatesv ~]# vim /etc/sysctl.conf #永久生效 修改配置文件
[root@gatesv ~]#sysctl -p #刷新内核参数 使修改生效
添加iptables规则
##SNAT策略
[root@gatesv ~]#iptables -t nat -A POSTROUTING -o ens36 -s 192.168.100.0/24 -j SNAT --to 12.0.0.254
##DNAT策略
[root@gatesv ~]#iptables -t nat -A PREROUTING -i ens36 -d 12.0.0.254 -p tcp --dport 80 -j DNAT --to 192.168.100.101
[root@gatesv ~]#sysctl -p
net.ipv4.ip_forward = 1