1.创建虚拟机
步骤1,在磁盘上创建目录。新建一个CenOS7_Nginx_Keepalived_03的目录,分别在目录下新建三个文件夹:SmartPaging File,Snapshots,Virtual Hard Disks。
步骤2,点击New,然后选择Virtual Machine..,打开创建虚拟机窗口。
步骤3,点击下一步按钮。
步骤4,输入虚拟机的名称和选择存储的路径。
步骤5,为虚拟机分配内存,可根据自己需求分配大小,然后点击下一步按钮。
步骤6,选择网络连接New Virtual Switch后,点击下一步按钮。
步骤7,为系统分配磁盘空间,可根据需求来分配大小,然后点击下一步按钮。
步骤8,选择安装的镜像文件后,点击下一步按钮。
步骤9,点击完成按钮后,完成整个虚拟机的创建
步骤10,在Hyper-V管理界面中,选择虚拟机后,右键弹出菜单选择Settings选项。
步骤11,分别选中Snapshot File Location 和Smart Paging FileLocation后,更改存储目录。
步骤12,选择IDE Controller1查看Image File的文件是否存在,检查后,点击确认按钮。
在Hyper-V中选择虚拟机,然后右键弹出菜单,选择Start选项开始进行安装系统,再双击打开虚拟机。
2.安装系统
步骤1,启动安装界面。
步骤2,安装界面中,选择英文,然后点击继续按钮。
步骤2,在安装界面中进行相关配置。
2.1设置日期和时间
选择Asia->HongKong,选择香港时间或者Shanghai上海时间,然后点击Done按钮。
2.2设置键盘
点击KEYBOARDLAYOUT后,设置键盘,可添加多个语言,例如:添加中午,点击+按钮后,在弹出窗口中输入chi会自动搜索数据,找到Chinese后选中并点击Add按钮。最后点击Done按钮。
2.3支持语言
除了支持English外还可添加其他语言的支持,例如想支持中文,可在输入框中输入Chinese后便可显示中文的选项。
选择中文后,再勾选简体中文复选框,当然可根据需求选择相应版本的中文,然后点击Done按钮。
2.4安装源
点击INSTALLATION SOURCE,进行设置安装源,点击Verify按钮,进行检查。
显示安装源正常,如果需要其他的安装源可根据需求进行添加,最后点击Done按钮。该步骤也已忽略
2.5安装分区
如果不需要进行分区,直接点击Done按钮。
2.6网络&主机名
选择On按钮后,然后点击Done按钮。如果需要进行其他配置可点击Configure按钮。或者安装系统后再进行其他配置也可以。
点击Begin Installation按钮进行安装。
2.7配置安装
创建配置和安装界面。
创建配置和安装界面。
点击Root PASSWORD后进行设置登录密码,默认账户是root
安装过程。
安装完成后,点击Reboot按钮,重启。
输入用户密码和密码后可进行登录进入系统root,SA123456
登录成功。
输入cat /etc/redhat-release,查看centos 版本。
输入 cat /proc/version查看linux内核版本和基于redhat的发行版。
输入hostnamectl可以查看机器信息。
3.安装Linux Integration Services
参考地址:https://www.kafan.cn/edu/44602922.html
安装虚拟机后,虚拟机可能没有网卡驱动,由于Hyper-v是不是支持linux网络服务的。
解决办法是安装微软提供的:Linux Integration Services Version v3.2 for Hyper-V工具(下载地址):下载下来之后是一个iso文档,挂着在linux的虚拟光驱下执行安装命令。
建议到微软的官方输入Linux Integration Service进行搜索最近版本的安装下载。
3.1下载Linux Integration Services
1. 下载微软虚拟机Linux集成服务包 LinuxIntegration Services v3.2
http://www.microsoft.com/zh-cn/download/details.aspx?id=28188
3.2加载光盘镜像
【媒体】-【DVD驱动器】-【插入磁盘】选择刚下载的iso文件,加载光盘镜像
3.3挂载光盘镜像并安装
输入命令:
#mkdir -p /mnt/cdrom
#mount /dev/cdrom /mnt/cdrom
#cd /mnt/cdrom
#./install.sh
4.配置IP
登录系统成功后,输入cd /etc/sysconfig/network-scripts然后可看到ifcfg-eth0配置文件。
输入vi ifcfg-eth0后进行编辑文件,配置IP地址。
Ifcfg-eth0文件内容。
根据需求修改配置后后,按Esc键,输入:wq保存文件(注意单词的拼写)。
输入systemctl restart network重启网络服务,然后输入ip addr查看IP地址,显示所配置的IP。
输入ping www.baidu.com,可以ping,说明可以上网了。
5.安装常用软件
使用yum的方式进行在线安装常用软件。
输入y后就可以进行下载。
下载完成后进行安装。
Yun install top
Yum install ssh
Yum install vsftpd
Yum install ftp
Yum install iptables-services
Yum install firewalld
Yum install net-tools
6.配置防火墙
Net-filter是Linux的一种防火墙机制。而Firewalld是一个在网络区域(networkszones)的支持下动态管理防火墙的守护进程。早期的RHEL版本和CentOS 6使用iptables这个守护进程进行数据包过滤。而在RHEL/CentOS 7和Fedora 21中,iptables接口将被firewalld取代。
由于iptables可能会在未来的版本中消失,所以建议从现在起就使用Firewalld来代替iptables。虽然现行版本仍然支持iptables,而且还可以用YUM命令来安装。不过可以肯定的是,在同一个系统中不能同时运行Firewalld和iptables,否则可能引发冲突。
6.1.iptables配置
输入cd /etc/sysconfig后,在输入ls –l显示目录下的列表可看到iptables。
输入more iptables显示防火墙的配置信息。
如果需要配置将某个程序的端口添加到iptables中,但又不知道程序的通信端口号,可需要输入netstat –ntlp查看所有程序的端口,如果想查看ftp的端口可输入netstat –ntlp | grep ftp显示ftp的端口。
输入vi iptables对配置文件进行编辑。
设置现有规则
#查看iptables现有规则
iptables -L -n
#先允许所有,不然有可能会杯具
iptables -P INPUT ACCEPT
#清空所有默认规则
iptables -F
#清空所有自定义规则
iptables -X
#所有计数器归0
iptables -Z
#允许来自于lo接口的数据包(本地访问)
iptables -A INPUT -i lo-j ACCEPT
#开放22端口
iptables -A INPUT -p tcp--dport 22 -j ACCEPT
#开放21端口(FTP)
iptables -A INPUT -p tcp--dport 21 -j ACCEPT
#开放80端口(HTTP)
iptables -A INPUT -p tcp--dport 80 -j ACCEPT
#开放443端口(HTTPS)
iptables -A INPUT -p tcp--dport 443 -j ACCEPT
#允许ping
iptables -A INPUT -p icmp--icmp-type 8 -j ACCEPT
#允许接受本机请求之后的返回数据RELATED,是为FTP设置的
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
#其他入站一律丢弃
iptables -P INPUT DROP
#所有出站一律绿灯
iptables -P OUTPUT ACCEPT
#所有转发一律丢弃
iptables -P FORWARD DROP
其他规则设定
#如果要添加内网ip信任(接受其所有TCP请求)
iptables -A INPUT -p tcp -s 45.96.174.68 -jACCEPT
#过滤所有非以上规则的请求
iptables -P INPUT DROP
#要封停一个IP,使用下面这条命令:
iptables -I INPUT -s ***.***.***.*** -jDROP
#要解封一个IP,使用下面这条命令:
iptables -D INPUT -s ***.***.***.*** -jDROP
保存规则设定
编辑vi iptables,添加FTP的21端口到配置中,-A INPUT –p tcp –dport 21 –j ACCEPT,保存成后,然后输入systemctlrestart iptables重启防火墙。在其他的客户中就可以访问FTP,否则提示No route to host。
输入systemctl start iptables启动防火墙,systemctlstatus iptables查看防火墙状态,systemctl stop iptables停止防火墙。
6.2.firewalld配置
该章节类容参考linux公社: http://www.linuxidc.com/Linux/2015-02/113206p3.htm
6.2.1.区域概念
在进行firewalld配置之前,了解一下区域(zones)这个概念。默认情况就有一些有效的区域。我们需要网络接口分配区域。区域规定了区域是网络接口信任或者不信任网络连接的标准。区域(zone)包含服务和端口。接下来让我们讨论Firewalld中那些有用的区域(zones)。
丢弃区域(DropZone):如果使用丢弃区域,任何进入的数据包将被丢弃。这个类似与我们之前使用iptables -j drop。使用丢弃规则意味着将不存在响应,只有流出的网络连接有效。
阻塞区域(BlockZone):阻塞区域会拒绝进入的网络连接,返回icmp-host-prohibited,只有服务器已经建立的连接会被通过。
公共区域(PublicZone):只接受那些被选中的连接,而这些通过在公共区域中定义相关规则实现。服务器可以通过特定的端口数据,而其它的连接将被丢弃。
外部区域(ExternalZone):这个区域相当于路由器的启用伪装(masquerading)选项。只有指定的连接会被接受,而其它的连接将被丢弃或者不被接受。
隔离区域(DMZ Zone):如果想要只允许给部分服务能被外部访问,可以在DMZ区域中定义。它也拥有只通过被选中连接的特性。
工作区域(WorkZone):在这个区域,我们只能定义内部网络。比如私有网络通信才被允许。
家庭区域(HomeZone):这个区域专门用于家庭环境。我们可以利用这个区域来信任网络上其它主机不会侵害你的主机。它同样只允许被选中的连接。
内部区域(InternalZone):这个区域和工作区域(Work Zone)类似,只有通过被选中的连接。
信任区域(TrustedZone):信任区域允许所有网络通信通过。
输入firewall-cmd –get-zones列出有用区域。
输入firewall-cmd –get-default-zone列出默认区域。
输入Firewall-cmd –list-all-zones列出所有区域。
6.2.2设置默认区域
如果你想设置默认区域像internal、external、drop、work或者其它区域,可以使用下面的命令来设置。这里以设置internal做默认区域为例。
# firewall-cmd --set-default-znotallow=internal
设置完毕,使用下面命令核实默认区域。
# firewall-cmd --get-default-zone
这里使用的接口是enp0s3,如果需要查看哪个区域和这个接口绑定可以使用下面的命令。
# firewall-cmd--get-zone-of-interface=enp0s3
firewalld另外一个有趣的特性是“icmptype”是一个firewalld支持的icmp类型。可以使用下面的命令来列出firewalld所支持的icmp类型。
# firewall-cmd --get-icmptypes
6.2.3.在firewalld中创建自己的服务
服务是firewalld所使用的有关端口和选项的规则集合。被启动的服务会在firewalld服务开启或者运行时自动加载。默认情况下,很多服务是有效的。使用下面命令可列出有效的服务
输入firewall-cmd --get-services列出所有服务
输入cd /usr/lib/firewalld/services/进入目录列出默认有效的服务。
想要创建自己的服务,需要在下面的目录下定义它。比如,现在我想添加一个FTP 服务,端口号21。首先,任选一个服务复制过来。
输入cp /usr/lib/firewalld/services/ssh.xml /etc/firewalld/services/然后进入
cd /etc/firewalld/services/下查看文件。
输入mv ssh.xml ftp.xml修改文件名称。
接下来输入vi ftp.xml打开并编辑文件的头部、描述、协议和端口号,以供FTP服务使用
修改完成后,进行保存。
重启firewalld服务或者重新加载设置,以激活这些设置。输firewall-cmd --reload为确认服务是否已经启动,运行下面的命令获取有效的服务列表。输入firewall-cmd --get-services。
6.2.4.为区域分配服务
通过“firewall-cmd”命令来管理firewalld。输入firewall-cmd --state命令了解当前的状态和输入firewall-cmd –get-active-zones了解所有激活的区。
在文件/etc/firewalld/firewalld.conf中定义成DefaultZnotallow=public。以下命令列出这个默认接口区域中有效服务
输入firewall-cmd –add-service=ftp将ftp服务添加到区域中,输入firewall-cmd–znotallow=public—remove-serivce=ftp删除已经加入的区域和类型。
上面的设置只是暂时性的。想要永久有效需要执行下面的命令,加带选项—permanent.。添加或这删除任何服务或者端口,必须要输入firewall-cmd –reload命令确保重载firewalld服务。firewall-cmd –add-service=ftp --permanent
输入firewall-cmd –list-all显示所有的服务,在其客户端下可以使用ftp10.190.130.78来访问ftp。
如果没有在firewalld中添加服务和端口的话,客户端会显示No route to host.
6.2.5在Firewall启动状态下运行Nginx
在Firewall启动的情况下,其他客户端无法访问到htt:\\10.190.130.78:8007。
在Firewall中添加8007端口,firewall-cmd –permanent –add-port=8007/tcp,然后在输入firewall-cmd–reload,重载成功过后,在输入firewall-cmd –list-all,可显示添加的8007端口。
输入netstat -ntlp | grep nginx查看nginx的占用端口
在其他客户端中输入wget http://10.190.130.78:8007就可以访问成功。
7.配置FTP
输入whereis vsftpd后查看文件位置,然后输入cd /etc/vsftpd查看vsftpd.conf配置文件。
修改文件之前先备份输入cp vsftpd.conf vsftpd.conf.bak进行备份文件。
anonymous_enable=YES
local_enable=YES
write_enable=YES //是否允许用户具有在FTP服务器文件中执行写的权限,默认是允许
listen=YES //使vsftpd 处于独立启动模式
userlist_enable=YES //用户列表中的用户是否允许登录FTP服务器
输入vi ftpusers后,进入到文件中将root用户注释#root后,进行保存。
输入vi user_list后,进入到文件中将root用户注释#root后,进行保存。
输入systemctl start vsftpd后启动服务,然后输入systemctl status vsftpd查看状态,该状态显示已经启动成功。
输入ftp localhost进行本地登录ftp,然后输入账户和密码后,登录成功。如果输入ftp localhost提示找不到命令时,需要输入yum install ftp安装客户端。
在其他服务器下,可输入ftp10.190.130.78后可进行登录成功。
当使用FileZilla工具进行上传文件时,提示错误:553Could not create file.
原因是他的CentOS系统安装了SELinux,因为默认下是没有开启FTP的支持,所以访问时都被阻止了。
//查看SELinux设置
# getsebool -a|grep ftp
分别输入Setsebool ftp_home_dir on和setseboolftpd_full_access on用户可以通过ftp工具上传文件到指定目录。
被修改的设置状态为on
通过ftp工具上传文件成功
在ftp目录下可看到上传的文件。
7.1.主被动模式
因为FTP有两种工作模式,PORT方式和PASV方式,中文意思为主动式和被动式,详细介绍如下:
主动 FTP :
命令连接:客户端 >1024 端口→ 服务器 21 端口
数据连接:客户端 >1024 端口← 服务器 20 端口
被动 FTP :
命令连接:客户端 >1024 端口→ 服务器 21 端口
数据连接:客户端 >1024 端口← 服务器 >1024 端口
PORT(主动)方式的连接过程是:客户端向服务器的FTP端口(默认是21)发送连接请求,服务器接受连接,建立一条命令链路。当需要传送数据时,客户端在命令链路上用PORT命令告诉服务器:“我打开了***X端口,你过来连接我”。于是服务器从20端口向客户端的***X端口发送连接请求,建立一条数据链路来传送数据。
PASV(被动)方式的连接过程是:客户端向服务器的FTP端口(默认是21)发送连接请求,服务器接受连接,建立一条命令链路。当需要传送数据时,服务器在命令链路上用PASV命令告诉客户端:“我打开了***X端口,你过来连接我”。于是客户端向服务器的***X端口发送连接请求,建立一条数据链路来传送数据。
简而言之:
主动模式(PORT)和被动模式(PASV)。主动模式是从服务器端向客户端发起连接;被动模式是客户端向服务器端发起连接。两者的共同点是都使用 21端口进行用户验证及管理,差别在于传送数据的方式不同,PORT模式的FTP服务器数据端口固定在20,而PASV模式则在1025-65535之间随机
7.2.主动模式
PORT(主动)方式的连接过程是:客户端向服务器的FTP端口(默认是21)发送连接请求,服务器接受连接,建立一条命令链路。当需要传送数据时,客户端在命令链路上用PORT命令告诉服务器:“我打开了***X端口,你过来连接我”。于是服务器从20端口向客户端的***X端口发送连接请求,建立一条数据链路来传送数据。
在客户端当连接FTP时,出现227 Entering Passive Mode的问题时,必须输入systemctlstop
Firewalld 将防火墙停止后,需要再次输入passive命令后就可以进行数据传送了。
登录ftp时显示227 Entering Passive Mode (xxx,xxx,,xxx,xxx,x)
解决此问题的办法也很简单,在客户端先关闭防火墙systemctl stop firewalld,然后关闭客户端的PASV方式,强制其用PORT方式访问服务器,登录FTP服务器后用passive命令关闭客户端的PASV方式,如下:
ftp> passive
Passive modeoff.
如果需要开启:
ftp> passive (再次运行命令可打开)
Passive mode on.
注意:由于FTP服务器企图与客户端的高位随机端口建立连接(当需要传送数据时,客户端在命令链路上用PORT命令告诉服务器:“我打开了***X端口,你过来连接我”。),而这个端口很有可能被客户端的防火墙阻塞掉,所以只能关闭客户端的防火墙并关闭passive方式。
如果使用的ftp工具来连接ftp服务器那么需要在工具进行设置。在单点管理器中,需要设置协议为SFTP-SSH File Transfer Protocol协议进行连接。
连接是会弹出提示框
选择确认按钮
连接服务器成功,并且上传文件。
7.3.被动模式
PASV(被动)方式的连接过程是:客户端向服务器的FTP端口(默认是21)发送连接请求,服务器接受连接,建立一条命令链路。当需要传送数据时,服务器在命令链路上用PASV命令告诉客户端:“我打开了***X端口,你过来连接我”。于是客户端向服务器的***X端口发送连接请求,建立一条数据链路来传送数据。
进入到cd /etc/vsftpd后编辑vi vsftpd.conf文件,在文件末尾添加:
Pasv_min_port=6000
Pasv_max_port=7000
Pasv_enable=YES
然后进行保存后,输入systemctl restart vsftpd重启vsftpd服务。
注意:由于服务器在命令链路上用PASV命令告诉客户端:“我打开了***X端口,你过来连接我”。于是客户端向服务器的***X端口发送连接请求,建立一条数据链 路来传送数据。
,所以在服务端需要添加在firewall中添加开放端口。
在FTP服务器断输入firewall-cmd –permanent–add-port=6000-7000/tcp后,将端口永久添加到防火墙中.
再次输入firewall-cmd –list-all查看添加的端口。
在客户端的防火墙启动的状态下,输入ftp10.190.130.78后,输入用户名和密码登录成功,组后可输入ls命令查看文件目录,并且可进行做其他的操作。
8.配置SSH
安装完成ssh后,如果不知道在那个目录下找到可以输入whereis ssh可查询文件目录。
输入cd /etc/ssh,然后输入ls –l显示文件列表。
在命令行中输入vi sshd_config后进入文件编辑。
取消PermitRootLogin前面的#号,修改进行保存。
输入systemctl start sshd启动sshd服务,
然后输入sytemctl status sshd查看sshd的状态。
输入ssh localhost,然后提示输入登录密码,登录成功。使用xshell或者Putty可以进行远程访问服务器。
使用xshell可以远程访问,配置成功。