从今天开始开始更新Linux的网络基础,希望大家多多关注,指出错误,我的Linux系统管理已经更新完成,有需要的可以去看看,链接:
链接: 从零开始学习Linux.
十进制数:逢十进一
1 2 3 4 5 6 7 8 9 10
二进制数:逢二进一
0 1 10 11 100 101 110 111 1000
1001 1010 (1-10的表示)
计算机只能识别二进制
十进制转化二进制
1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
---|---|---|---|---|---|---|---|
128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 |
十进制转二进制。如:137
137大于128,减去128有余数则,128下面有1
1 0 0 0 0 0 0 0
减完之后剩9,得挨个往后减,不能跨过,减不动就计0,换下一位
1 0 0 0 1 0 0 0
直到碰到8,计1
1 0 0 0 1 0 0 1
十进制换二进制。如:110110
把数对应到表格下面,不够补0
1 1 1 1 1 1 1 1
128 64 32 16 8 4 2 1
0 0 1 1 0 1 1 0
然后把有1的对应的数加起来
32+16+4+2=54
十六进制:逢十六进一
1-9表示:1-9 a-f表示:10-15
Internet简介
Internet的发展历史
Internet的作用
Internet的应用领域
互联网的典型应用
WWW WWW(World Wide Web)又称全球网,环球网或万维网等,也可简称为Web
服务器S <——> 客户端C C/S架构
URL:统一资源定位
协议+域名或者IP:端口+网页路径+网页名
http://www.lampbrother.net:80/index.html
常见的一级域名 (也叫顶级域名)
一级域名 | 组织 |
---|---|
Edu | 教育组织 |
Com | 商业组织 |
gov | 非军事政府机构 |
Mil | 军事结构 |
Org | 其他组织 |
net | 网络服务机构 |
一级域名 | 地区 |
---|---|
au | 澳大利亚 |
cn | 中国 |
in | 印度 |
us | 美国 |
uk | 英国 |
二级域名自己申请
遇到钓鱼网站注意二级域名,他是唯一的,别被骗
互联网接入方法
ADSL
非对称数字用户环路。ADSL可以提供最高1Mbps的上行速率和最高8Mbps(1Mbps=1024Kbps 比特率除以8才为字节)的下行速率。最新的ADSL2+技术可以提供最高24Mbps的下行速率,ADSL2+打破了ADSL接入方式带宽限制的瓶颈,使其应用范围更加广泛。
FTTH
光纤入户的带宽更高,而光纤的原材料是二氧化硅,在自然界取之不尽用之不竭。当然也是动态IP地址。
小区宽带
小区宽带是一个大局域网,所有客户都在同一个网段中。外网接口可以是FTTH,也可以是固定IP的光纤。在用户高峰期太卡,所有人用一个带宽,共享带宽。最好不要选择这个,非常不安全,监听网关可以抓获所有的数据包。
固定IP的光纤
带宽自由申请,价格最贵。因为固定IP地址,所以可以搭建服务器。一般是公司和服务器使用。
OSI 的七层框架
计算机A通过应用层到达物理层,然后通过网络层传输到计算机B的物理层,然后从物理层传输到应用层。
TCP/IP协议4层模型
TCP/IP模型与OSI模型的对应
网络接口层
网络接入层与OSI参考模型中的物理层和数据链路层相对应。它负责监视数据在主机和网络之间的交换。事实上,TCP/IP本身并未定义盖层的协议,而由参与互联的各网络使用自己的物理层和数据链路层进行连接。地址解析协议(ARP 把IP解析为MAC地址)工作在此层,即OSI参考模型的数据链路层。
网际互联层
网际互联层对应于OSI参考模型的网络层,主要解决主机到主机的通信问题。它所包含的协议设计数据包在整个网络上的逻辑传输。该层有三个主要协议:网际协议(IP),互联网组管理协议(IGMP)和互联网控制报文协议(ICMP)。
传输层
传输层对应于OSI参考模型的传输层,为应用层实体提供端到端的通信功能,保证了数据包的顺序传送及数据的完整性。该层定义了两个主要的协议:传输控制协议(TCP)和用户数据报协议(UDP)。
TCP/IP也叫面向连接的可靠传输协议
端口是应用层与传输层的接口
对于TCP和UDP可以使用同一个端口,通过分别协议不同来区分不同服务,比如:DNS
有的服务可以使用多个端口
应用层
应用层对应于OSI参考模型的表示层和应用层,为用户提供所需要的各种服务,例如:FTP,Telnet,DNS,SMTP等。
TCP/IP模型与OSI模型的比较
网络层协议
网际协议(IP)
如何判断子网掩码是否合法的唯一标准为:网络位是否全为连续的1
网络地址为每一个网段的第一个IP,用来表示网段,不可以使用
广播地址为每一个网段最后一个IP,用来表示网段,不可以使用
IP与子网掩码相与可以算出来网络地址,而只要是子网掩码为连续的0的字段就把IP地址对应的字段变为1,其他字段照着IP写出来,这样出来的为广播地址
ICMP协议
ICMP定义了很多信息类型,例如:
Linux的IP地址配置地址的方法
ifconfig命令
setup工具
红帽专有图形化工具设置setup设置IP地址
CentOS 7 为nmtui命令 最小化安装需要下载
网卡信息文件
vim /etc/sysconfig/network-scripts/ifcfg-eth0
主机名文件
vim /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=localhost.localdomain
hostname [主机名]
查看与临时设置主机名
DNS配置文件
vim /etc/resolv.conf
nameserver DNS 服务
ifconfig命令
hostname [主机名]
关闭与启动网卡
查询网络状态
netstat [选项]
route命令
route -n
查看路由列表(可以看到网关)
域名解析命令
nslookup [主机名或IP]
进行域名与IP地址解析
nslookup
>server
查看本机DNS服务器
如果没有这个命令 使用 yum -y install bind-utils 下载
yum provides 命令 查询该命令在哪个软件包里
ping 命令
ping [选项] ip或者域名
探测指定IP或域名的网络状况
telnet命令
telnet [域名或ip] [端口]
远程管理与端口探测命令
telnet 192.168.0.252 80
traceroute
traceroute [选项] IP或域名
路由跟踪命令
-n 使用IP,不使用域名,速度更快
wget命令
wget 下载网址
下载命令,下载的东西的具体目录,不能为上一级目录
vim /etc/sysconfig/network-scripts/ifcfg-eth0 把ONBOOT=“no”改为yes
利用setup配置IP
在虚拟机中配置
选择不同的模式就把I虚拟机IP设置为对应模式相同的网段,选择真实IP网段,VMnet1 IP网段,VMnet8 IP网段
VMware虚拟机克隆镜像需要改UUID
vim /etc/sysconfig/network-scripts/ifcfg-eth0
删除MAC地址行
rm -rf /etc/udev/rules.d/70-persistent-net.rules
删除网卡和MAC地址绑定文件
重启系统
ssh(安全外壳协议)
SSH为Secure Shell的缩写,SSH为建立在应用层和传输层基础上的安全协议
SSH端口
安装服务:OpenSSH
相关配置文件
网络监听
tcpdump -I 网卡文件名 -nnX port 21
对称加密算法
采用单钥密码系统的加密方式,同一个密钥可以同时用作信息的加密和解密,这种加密方式称为对称加密,也称为单密钥加密
非对称加密算法
非对称加密算法(asymmetric cryptographic algorithm)又名“公开密钥加密算法”,非对称加密算法需要两个密钥:公开密钥(publickey)和私有密钥(privatekey)
SSH安全外壳协议
保护信息安全
服务端配置文件:/etc/ssh/sshd_config
在Linux远程管理Linux是,如果没有搭建DNS服务,这个建议关闭,把客户端的GSSAPIAuthentication yes 改为no,默认是yes,取消注释即可,否则登陆会异常缓慢
Linux管理其他Linux
ssh 用户名@IP
可以用来苹果Mac笔记本终端远登陆服务器
scp
Sftp文件传输
sftp [email protected]
butty
secureCRT
Xshell
Mac 自带终端
步骤1:
步骤2:
修改服务器端ssh配置文件
步骤3:
DHCP服务作用(Dynamic Host Configuration Protocol 动态主机配置协议):
可分配的地址信息主要包括:
安装DHCP服务器
RHEL6的DHCP软件包
dhcp-4.1.1-31.P1.el6.i686.rpm
对应的端口
端口号:
相关文件
需要用模板文件覆盖主配置文件
全局配置
服务器端配置
客户端配置
vim /etc/sysconfig/network-scripts/ifcfg-eth0
服务器端租约文件
vim /var/lib/dhcpd/dhcpd.leases
FTP简介
FTP(File Transfer Protocol)中文称为“文件传输协议”。用于Internet上的控制文件的双向传输。
主动模式
主动模式:服务的从20端口主动向客户端发起连接
被动模式
被动模式:服务端在指定范围内某个端口被动等待客户端连接
主动模式不好实验,客户端不在管理员的控制范围之内,FTP连接有可能被客户端的防火墙中断。
端口
FTP连接端口
常见的FTP服务器程序
安装
Vsftpd-2.2.2-11.el6.i686.rpm
相关文件
FTP相关用户
注意事项
/etc/vsftpd/vsftpd.conf
常用全局配置
被动模式
常用安全配置
使用命令行连接
ftp IP
不支持目录下载,不支持断点续传
使用Windows对话框
在文件夹路径搜索页面输入ftp://192.168.44.3/输入服务器IP
支持目录下载,不支持断点续传
使用第三方工具
flashFXP
只要工具支持就可以目录下载,断点续传
anonymous_enable=YES 允许匿名用户访问
#anon_upload_enable=YES 允许匿名用户上传
#anon_mkdir_write_enable=YES 允许匿名用户建立目录
#anon_umask 设置上传的默认文件权限(默认是600)
匿名用户如果想上传,先修改配置文件,还得修改服务器中/var/ftp目录中pub目录的权限,把这个目录的所有者修改为ftp用户 chown ftp /var/ftp/pub,不能直接把权限修改为777,这样有很大的安全隐患
注意事项:
本地用户基本配置
把用户限制在家目录
chroot_local_user=YES
#开启用户目录限制(只有此行,把所有用户都限制在用户目录中)
在CentOS 7 中用yum下载的ftp,在这一步之后会报错
需要在配置文件中加入这条语句
allow_writeable_chroot=YES ##验证在vsftpd.conf中增加该项配置,vsftpd服务无法正常启动。
给一些人畅通无阻的权限的时候,需要把下面三条配置文件全打开
用户控制列表文件
访问控制
这几条配置文件没有写
不要把限制用户主目录和用户访问限制搞混
chroot_local_user=YES 用于把用户禁锢在主目录
uselist_enable=YES 用于用户访问控制
配置虚拟用户登陆步骤
添加虚拟用户口令
vim /etc/vsftpd/vuser.txt
cangls 用户名
123 密码
bols 用户名
123 密码
生成虚拟用户口令认证文件
yum -y install db4-utils 如果没安装口令认证命令,需要安装
或者使用wget http://rpmfind.net/linux/centos/6.10/os/i386/Packages/db4-utils-4.7.25-22.el6.i686.rpm
安装
db_load -T -t hash -f /etc/vsftpd/vuser.txt
/etc/vsftpd/vuser.db 把文本文档转变为认证的数据库
编辑vsftpd的PAM认证文件
vim /etc/pam.d/vsftpd
auth required /lib/security/pam_userdb.so db=/etc/vsftpd/vuser
account required /lib/security/pam_userdb.so db=/etc/vsftpd/vuser
注释掉其他的行,加入 这两行即可
注释掉其他行,可以禁止本地用户登陆,因为本地用户登陆时的验证依然依赖这个文件
建立本地映射用户并设置宿主目录权限
修改配置文件
vim /etc/vsftpd/vsftpd.conf,加入:
重启vsftpd服务,并测试
systemctl restart vsftpd.service
此时虚拟用户可以登陆,查看,下载,不能上传
默认上传文件的位置是宿主用户的家目录
权限使用的是匿名用户权限进行管理
调整虚拟用户权限
可以给每个虚拟用户单独建立目录,并建立自己的配置文件。这样方便单独配置权限,并可以单独指定上传目录
修改配置文件
vim /etc/vsftpd/vsftpd.conf
user_config_dir=/etc/vsftpd/vusers_dir
指定保存虚拟用户配置文件的目录
手工建立目录
mkdir /etc/vsftpd/vusers_dir
为每个虚拟用户建立配置文件
vim /etc/vsftpd/vusers_dir/cangls
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
允许此用户上传
local_root=/tmp/cangls
给cangls指定独立的上传目录
建立上传目录
mkdir /tmp/vcangls
chown vuser /tmp/vcangls/
如果不给bols指定单独的配置文件,则遵守主配置文件(/etc/vsftpd/vsftpd.conf)的权限
配置完效果如下:
我是阿里云忠实用户!!!,我会在里面穿插基于阿里云CentOS7 FTP服务器搭建!!!!
匿名用户很简单,下载好启动服务就可以,不过非常不安全,
需要把匿名用户登陆修改为anonymous_enable=YES 默认即可,anon_upload_enable=YES 把匿名上传权限的注释去掉,
local_root=/var/ftp/,为匿名用户默认上传位置
修改/var/ftp/pub权限。允许匿名用户写入文件
,chmod o+w /var/ftp/pub/ 或者 chown ftp /var/ftp/pub,修改所有者,不能直接把权限修改为777,这样有很大的安全隐患
接着systemctl restart vsftpd.service重启服务即可
这种模式非常不安全,最好不要使用,这里只是介绍一下!!!!
所以只讲本地用户和虚拟用户
允许本地用户登陆
下载好之后,先把防火墙,selinux关闭,
创建一个新用户 useradd test1
设置密码 passed test1
123456
建立一个用户登陆FTP以后的家目录 mkdir/var/ftp/test
修改文件所有者,以及权限 chown -R test:test /var/ftp/test
进入 /etc/vsftpd/vsftpd.conf文件
主动模式:
被动模式
创建白名单
vim /etc/vsftpd/chroot_list 这里没有例外用户时,也必须创建chroot_list文件,内容可为空。
必须输入:wq 保存并退出
重启服务
systemctl restart vsftpd.service
阿里云服务器用户需要设置安全组
限制用户登陆需要用到黑名单
/etc/vsftpd/ftpusers
里面加入登陆的用户名
如果需要开启用户访问控制
首先写入
userlist_enable=YES 开启用户访问控制
接着在下面写入以下语句
userlist_deny=NO
userlist_file=/etc/vsftpd/user_list 写入/etc/vsftpd/user_list文件中的用户可以访问ftp服务器,没有写入的用户不能访问(默认如此)
总结:
虚拟用户:
1.添加虚拟用户口令
vim /etc/vsftpd/vuser.txt
用户名一行,密码一行
保存退出
2.生成虚拟用户口令认证文件
3.建立本地映射用户并设置宿主目录权限
useradd -d /home/vftproot -s /sbin/nologin vuser
此用户不需要登陆,只是映射用户
用户名必须和下一步配置文件中一致
chmod 755 /home/vftproot
4.修改配置文件
vim /etc/vsftpd/vsftpd.conf,加入:
guest_enable=YES 开始虚拟用户
guest_username=vuser FTP虚拟用户对应的系统用户
pam_service_name=vsftpd PAM认证文件(默认存在)
5.重启vsftpd服务,并测试
6.调整虚拟用户权限
vim /etc/vsftpd/vsftpd.conf
anonymous_enable=NO 关闭匿名用户登陆,更加安全(不影响虚拟用户登陆)
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES 给虚拟用户设置权限,允许所有虚拟用户上传
7.可以给每个虚拟用户单独建立目录,并建立自己的配置文件。这样方便单独配置权限,并可以单独指定上传目录
修改配置文件
vim /etc/vsftpd/vsftpd.conf
user_config_dir=/etc/vsftpd/vusers_dir
指定保存虚拟用户配置文件的目录
手工建立目录
mkdir /etc/vsftpd/vusers_dir
为每个虚拟用户建立配置文件
vim /etc/vsftpd/vusers_dir/cangls
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
允许此用户上传
local_root=/tmp/vcangls
给cangls指定独立的上传目录
建立上传目录
mkdir /tmp/vcangls
chown vuser /tmp/vcangls/
OK 这个服务器就搭建好啦!!!!大家辛苦了!
数据共享的方法
Windows中最常用的是“网上邻居”。网上邻居使用的文件系统是CIFS(通用互联网文件系统)协议进行数据共享
Linux中最常用的是NFS服务
Samba的由来
Samba与NetBIOS协议
Samba主要应用
常见文件服务器的比较
服务名称 | 使用范围 | 服务器端 | 客户端 | 局限性 |
---|---|---|---|---|
FTP | 内网和公网 | Windows、Linux | Windows、Linux | 无法直接在服务器端修改数据无法直接在服务器端修改数据 |
Samba | 内网 | Windows、Linux | Windows、Linux | 只能在内网使用 |
NFS | 内网和公网 | Linux | Linux | 只能Linux之间使用 |
安装
samba的守护进程
启动samba服务
常用文件
常用命令
testparm 检测配置文件是否正确
配置文件结构 smb .conf
Global Settings
Share Definitions
Global Settings
Share Definitions
常见的变量
配置文件修改
[global]
Share Definitions
建立共享目录
测试配置文件命令
testparm
重启Samba服务
Windows客户端访问
配置文件修改
[global]
Share Definitions
建立共享目录与测试配置文件
区别:
添加samba用户
注意用户必须已经是系统用户,才能添加为samba用户
删除samba用户
查看samba用户
Samba共享目录权限
Linux系统控制权限
客户端挂载到本地使用
mount -t cifs -o username=用户 原路径 目标路径
例如:
mount -t cifs -o username=user1 //192.168.44.3/pub /test
开机自动挂载
vi /etc/fstab //192.168.44.3/pub /test cifs defaults,username=user1,password=456 1 2
Samba别名
Linux的用户如root、nobody在Windows中可能对应的用户是administrator、guest用户Samba是跨平台的,所以用别名让他们可以通用
别名文件
vi /etc/samba/smbusers
原名 = 别名 (多个别名 空格隔开) user1 = lamp1
配置文件中开启别名
vi /etc/samba/smb.conf
加入 username map = /etc/samba/smbusers
重启,就可以使用别名访问samba了
总结
Vsftp:
Samba
什么是NFS
NFS(Network File System):
NFS可以让客户端把服务器的共享目录,挂载到本机使用,就像使用本机分区一样,使用非常方便
RPC服务
RPC(远程调用)服务:
NFS是被RPC服务管理的,所以必须安装RPC的主程序rpcbind
NFS端口
和其他文件服务器对比(SFU Windows客户端搭建)
服务名称 | 使用范围 | 服务器端 | 客户端 | 局限性 |
---|---|---|---|---|
FTP | 内网和公网 | Windows、Linux | Windows、Linux | 无法直接在服务器端修改数据 |
Samba | 内网 | Windows、Linux | Windows、Linux | 只能在内网使用 |
NFS | 内网和公网 | Linux | Linux (Windows) | 客户端需要挂载使用,对普通用户有一定的技术要求 |
权限说明
用户身份映射(系统权限)
NFS没有用户登陆认证机制,所以客户端登陆到服务器之后,会把客户端的身份映射到服务器端。就会出现一下四种可能:
第一种可能
第二种可能
第三种可能
第四种可能
服务器端安装
默认已经安装,如果需要手工安装
– NFS主程序:nfs-utils
– RPC主程序:rpcbind(旧版本portmap)
相关文件
配置文件: /etc/exports
服务器端管理
默认已经启动,如果需要手工启动:
守护进程
ps aux | grep -E "nfs|rpc”
– rpc.rquotad:NFS配额
– rpc.mountd:处理客户端挂载
– nfsd:NFS守护进程
– rpcbind:RPC守护进程
RPC服务注册情况
rpcinfo -p IP或主机名
配置文件
/etc/exports
共享目录 客户端(权限)
多个共享,空格隔开
可以识别的客户端
常用权限
rw: 读写
ro: 只读
all_squash:不论登陆是谁,都压缩为匿名用户nfsnobody
root_squash:如果登陆的是root,压缩为nfsnobody
no_root_squash:允许root身份登陆,不推荐anonuid:把所有的登陆用户,不再压缩为nfsnobody用户,而是压缩为指定uid用户
sync:将数据同步写入内存缓冲区与磁盘中,效率低, 但可以保证数据的一致性;
async:将数据先保存在内存缓冲区中,必要时才写入磁盘
举例1
任何人可以访问,允许root访问
vi /etc/exports
/home/test *(rw,no_root_squash)
举例2
同时共享多个目录
vi /etc/exports
/home/test 192.168.44.3(rw,no_root_squash) *(ro)
/home/soft 192.168.44.0/24(rw)
举例3
匿名用户访问
vi /etc/exports
/home/soft 192.168.44.0/24(rw,all_squash,anonuid=600)
常用命令
exportfs 选项
选项:
-a: 按照配置文件挂载/卸载所有目录
-r: 重新挂载
-u: 卸载
-v: 显示详细信息
exportfs举例
showmount命令
客户端需要启动的服务
需要启动rpcbind,默认已经启
手工启动命令:
service rpcbind start
查看服务器端共享目录
showmount -e 192.168.44.3 #指定服务器端IP即可
把服务器共享目录挂载到本地
卸载
umount /home/client
开机自动挂载
vim /etc/fstab
192.168.44.3:/home/test /home/client nfs defaults 0 0
第一种可能
client和server上刚好有相同的帐号和用户组(用户名和UID都要相同)
client上用户可以在server上按照用户权限使用文件
服务器:
– [root@localhost ~]# useradd -u 600 test1
– [root@localhost ~]# passwd test1
客户端:
– 一样的用户与UID
– [root@localhost test]# su - test1
– [test1@localhost ~]$ cd /home/test
– [test1@localhost test]$ touch cde
– [test1@localhost test]$ ll cde
– -rw-rw-r-- 1 test1 test1 0 11月 14 2016 cde
第二种可能
当clinet和server上拥有相同的UID,但是用户名不同,
假设clinet上有用户aa(UID:500),server上有用户bb(UID:500)。在clinet在使用server共享目录时,身份识别为bb(因为Linux权限绑定在UID上)
此种情况尽量避免出现,容易逻辑混乱
服务器端:
– 用户名:test1 UID:600
客户端:
– [root@localhost ~]# useradd -u 600 user1
– [root@localhost ~]# su - user1
– [user1@localhost ~]$ cd /home/test/
– [user1@localhost test]$ touch def
– [user1@localhost test]$ ll def
– -rw-rw-r-- 1 user1 user1 0 11月 14 2016 def
服务器端:
– [root@localhost ~]# ll /tmp/def
– -rw-rw-r-- 1 test1 test1 0 11月 14 04:40 /tmp/def
第三种可能
server上没有clinet的UID
clinet用户访问server时,server上没有此UID, 则把此用户自动转变为nfsnobody(UID: 65534)用户
服务器端:
– 没有UID为700的用户
客户端:
– [root@localhost ~]# useradd -u 700 test2
– [test2@localhost test]$ touch qwe
– [test2@localhost test]$ ll qwe
– -rw-rw-r-- 1 nobody nobody 0 11月 14 2016 qwe
第四种可能
clinet上是root使用共享
默认把root也转变为nfsnobody。服务器端可以修改配置文件,允许root访问nfs服务器
服务器端:
– 不允许root访问
客户端:
– [root@localhost ~]# cd /home/test
– [root@localhost test]# touch asd
– [root@localhost test]# ll asd
– -rw-r–r-- 1 nfsnobody nfsnobody 0 11月 14 2016 asd
服务器端:
– 允许root访问
– [root@localhost ~]# vi /etc/exports
– /tmp 192.168.44.4(rw,no_root_squash)
– [root@localhost ~]# exportfs -auv
– [root@localhost ~]# exportfs -arv
客户端:
– [root@localhost ~]# cd /home/test
– [root@localhost test]# touch zxc
– [root@localhost test]# ll zxc
– -rw-r–r-- 1 root root 0 11月 14 2016 zxc
简单写一下关于NFS服务器搭建中的一些问题
首先要知道在我们搭建这些服务器的时候,对我们最大的阻碍就是SELinux与防火墙,我们先从这两点开始说起
SE Linux是美国国家安全局开发的Linux安全模块,它在本来已经很安全的Linux上,凌驾于root权限之上,设置了很多额外的条条框框;
如果你了解这些条条框框,那还好;但如果不了解,那SELinux可能并没有帮什么忙,却给你带来了很多不确定因素,通俗来讲, 把它关了就好,在刚开始学Linux这个东西对我们没有一点作用,所以我们在搭建这些Samba,FTP,NFS服务的时候,首先就要做到把它先关闭,
vim /etc/sysconfig/selinux 命令进入SELinux的配置文件,把SELINUX=disabled这一句设置好了,他就干干净净的从你的世界消失了,再也没有他的打扰,接下来第二个困扰便是防火墙,这个东西更加头疼,如果你是虚拟机搭建 ,没有太大的安全隐患,直接 iptables -F或者 systemctl stop firewalld.service 关了就好,但是如果在比如阿里云,华为云,腾讯云这上面的服务器来说,就有一定的安全隐患了,而且直接把它关了也很令人不爽,你如果到了企业工作,不能也直接把企业的防火墙关了吧。
所以说,我们还是老老实实的学一下关于防火墙的一点东西吧,为什么我在刚才说需要 iptables -F或者systemctl stop firewalld.service这么两个命令呢?这是因为在Linux中有两种防火墙软件,CentOS7.0以上使用的是firewall,CentOS7.0以下使用的是iptables,有一个就好。
对于防火墙,我们该如何理解呢?这样举个例子吧,有一个男孩喜欢一个女孩,那她怎么才能追到这个女孩呢?很简单,让这个女孩喜欢他就好了,这就是男追女,隔座山;女追男,隔层纱的意思,我们把服务器端(Server)比作男孩,客户端(Client)比作女孩,他们之间要想相互通信,就得有连接啊,但是很遗憾,防火墙就像女孩的父亲一样隔在你和女孩之间,如果你一味的去追女孩,因为有防火墙的存在,你是不可能建立联系的,这就好比FTP服务器的主动模式与被动模式,我们可以控制自己服务器的防火墙,但是却不能控制客户端的防火墙,而客户端也有可能对防火墙不太理解,你不能强迫人家说:你要想连接,去吧防火墙关了,或者开端口。这些对于非专业人士来说,是很难办到的。所以我们就有让我们自己的服务器开启相应的端口,让我们被动,我们去接客户端传来连接请求。这样女孩的父亲也管不住了,你们就可以完美的建立联系。所以,对于阿里云这些服务器,他的公网IP会映射到内网上,也就是你的私有IP,阿里云的环境需要开启被动模式,公网共享,否则连接不到服务器。
对于端口,他就是好像在防火墙上的一扇窗,通过特定开放的端口就可以进行连接,所以你也可以使用公网IP加端口(47.95.1.123:21)这样来链接,我们在服务器端需要把服务的每一个端口都开启,对于阿里云用户来说,就是在阿里云控制台里面的设置安全组,把里面的所需的服务的端口都打开。这样才能建立连接,FTP主动模式需要开20,21两个端口,服务从20端口主动向客户端发起连接,而被动模式你也需要另外在加开端口,比如50000-50010,这是一个范围,服务端在指定范围内某个端口被动等待客户端连接。这便是被动模式。
而对于NFS这种服务,他是先通过RPC服务的注册,才能正常工作,NFS是被RPC服务管理的,所以必须安装RPC的主程序rpcbind,才能允许NFS,在开启服务的时候也需要先开启rpcbind服务,才能开启nfs服务,而NFS主进程端口是2049,RPC端口是111 ,但是NFS还有许多子进程,这便是通过RPC注册的NFS daemon端口,他的端口号是随机的,因为端口随机,如果关了防火墙还好说,啥都可以过,但是一旦开启呢?你总不能在使用服务之前先查一下端口号再来配置防火墙规则吧,这是不现实的,所以我们就需要把随机端口给固定了。可以更改配置文件固定NFS服务相关端口。这样设置固定端口以后即便重启机器也很方便挂载,如果不设置固定端口,机器或服务重启后之前添加的iptables规则就失效了,当然你也可以systemctl stop iptables.service,systemctl stop firewalld.service来临时关闭防火墙,重启之后就会失效。那如何配置nfs的效果端口配置文件呢?
vim /etc/sysconfig/nfs
RQUOTAD_PORT=30001
LOCKD_TCPPORT=30002
LOCKD_UDPPORT=30002
MOUNTD_PORT=30003
STATD_PORT=30004
添加这几条规则,就把端口限制了。
systemctl restart rpcbind.service
systemctl restart nfs.service
重启rpc,nfs服务,配置生效
rpcinfo -p查看服务端口
你会发现,全都是你设定的端口号
接下来就需要给防火墙设置规则,开窗户了:
添加iptables规则
iptables -A INPUT -s 192.168.214.0/24 -p tcp –dport 111 -j ACCEPT
iptables -A INPUT -s 192.168.214.0/24 -p udp –dport 111 -j ACCEPT
iptables -A INPUT -s 192.168.214.0/24 -p tcp –dport 2049 -j ACCEPT
iptables -A INPUT -s 192.168.214.0/24 -p udp –dport 2049 -j ACCEPT
iptables -A INPUT -s 192.168.214.0/24 -p tcp –dport 30001:30004 -j ACCEPT
iptables -A INPUT -s 192.168.214.0/24 -p udp –dport 30001:30004 -j ACCEPT
保存退出后,重启防火墙
systemctl restart iptables.service
添加firewall规则
firewall-cmd --permanent --add-port=111/tcp
firewall-cmd --permanent --add-port=111/udp
firewall-cmd --permanent --add-port=2049/tcp
firewall-cmd --permanent --add-port=2049/udp
firewall-cmd --permanent --add-port=30001/tcp
firewall-cmd --permanent --add-port=30001/udp
firewall-cmd --permanent --add-port=30002/tcp
firewall-cmd --permanent --add-port=30002/udp
firewall-cmd --permanent --add-port=30003/tcp
firewall-cmd --permanent --add-port=30003/udp
firewall-cmd --permanent --add-port=30004/tcp
firewall-cmd --permanent --add-port=30004/udp
保存退出后,重启防火墙
systemctl restart iptables.service
重启服务器
reboot
重启之后执行"rpcinfo -p"命令
就发现全部都OK了
这两种选其一即可,看你电脑是开启的哪种防火墙
这些都弄完之后,就可以配置NFS的配置文件了
如果还有报错的话,学会使用/var/log/secure日志文件,查看报错原因,再进行谷歌。
域名:
域名:baidu.com
主机名:www
www.baidu.com 完整的FQDN名称
IANA 军方把DNS的分配权限转给ICANN 国际联盟组织
DNS发展阶段:
域名结构
www.baidu.com.:80/index.html
这应该是全名,浏览器帮我们简化掉了.:80/index.html 这一部分,其中的.为根域
比如:www.sina.com.cn.
根域;.
一级域;.cn
二级域;.com.cn
三级域;sina.com.cn
主机名;www
域名解析的工作模式:
根DNS的特点:
全球有13台根NDS服务器
A INTERNIC.NET(美国,弗吉尼亚州) 198.41.0.4
B 美国信息科学研究所(美国,加利弗尼亚州) 128.9.0.107
C PSINet公司(美国,弗吉尼亚州) 192.33.4.12
D 马里兰大学(美国马里兰州) 128.8.10.90
E 美国航空航天管理局[NASA](美国加利弗尼亚州) 192.203.230.10
F 因特网软件联盟(美国加利弗尼亚州) 192.5.5.241
G 美国国防部网络信息中心(美国弗吉尼亚州) 192.112.36.4
H 美国陆军研究所(美国马里兰州) 128.63.2.53
I Autonomica公司(瑞典,斯德哥尔摩)192.36.148.17
J VeriSign公司(美国,弗吉尼亚州) 192.58.128.30
K RIPE NCC(英国,伦敦) 193.0.14.129
L IANA (美国,弗吉尼亚州) 198.32.64.12
M 日本WIDE项目 202.12.27.33
不支持递归查询
DNS安装
安装:
软件BIND
安装软件名:bind
服务开启名:named
端口:53
配置:
1.修改主配置文件
2.修改区域文件
3.修改解析数据文件
BIND(Berkeley Internet Name Daemon)
伯克利Internet域名服务
官方站点:https://www.isc.org/
软件包:bind-9.3.3-7.el5.i386.rpm
服务名:named
端口号:53
主配置文件:/etc/named.conf
保存DNS解析记录的数据文件位于: /var/named/
DNS 服务器
主DNS服务器
配置主配置文件
配置区域文件
配置正向数据文件
配置反向数据文件
从DNS服务器
* 减轻主服务器的压力
* 数据从主服务器复制
修改主DNS配置文件
配置从DNS配置文件
配置从DNS区域文件
外网访问内网服务器的全过程:
S:200.200.200.2
D:200.200.200.200
通过端口映射 NET策略
S:200.200.200.2
D:1.1.1.2
回信:
S:1.1.1.2
D:200.200.200.2
S:200.200.200.200
D:200.200.200.2
内网访问内网服务器的全过程:
S:1.1.1.1
D:200.200.200.200
S:1.1.1.1
D:1.1.1.2
S:1.1.1.2
D:1.1.1.1
原地址与目标地址不匹配,基于TCP的协议无法建立连接。
而解决这种回流现象的问题至关重要,这便是分离解析
分离解析DNS 服务器
作用: 将相同的域名解析为不同的IP地址
实验环境:
三台虚拟机:
1、第一个网段测试机
2、网关、分离解析DNS
3、第二个网段测试机
本章主要说这几点:
邮件服务器概述:
邮件服务器概念: 电子邮件服务器是处理邮件交换的软硬件设施的总称,包括电子邮件程序、电子邮件箱等。它是为用户提供基于E-mail服务的电子邮件系统,人们通过访问服务器实现邮件的交换。
常见的邮件服务器:
在初期没有邮件服务器诞生:
邮件应用协议:
:set nu 设置行号
在第75行 myhostname = host.domain.tld
需要修改,改为你DNS解析的域名
第83行 #mydomain = domain.tld
需要修改,设置邮件域
比如
[email protected] 其中yangyang.com 就为邮件域
在第98行 #myorigin = $myhostname
第99行 #myorigin = $mydomain
用户在发送时自动补全邮件域名称
113行去掉注释
116行加上注释
164行用来设置接收方信息,设置接收哪类邮件
比如
[email protected]
[email protected]
a@localhost
[email protected]
只接受这四类邮件,其他一律拒绝掉
221行 unknown_local_recipient_reject_code = 550
用来设置拒绝不存在的本地账号,或者使用者不明的账号,拒绝掉之后返回550错误代码
386行 alias_maps = hash:/etc/aliases
用来定义用户别名 用来用户转发,需要数据库支持,数据库文件存放在397行
419行 home_mailbox = Maildir/ 邮箱位置需要启动
一切准备好之后。在本机下载telnet,进行邮箱连接
yum -y install telent
首先关闭防火墙
接着输入
telnet mail.yangyang.com 25 进行连接
mail.yangyang.com是域名,25为portfix对应开启的端口号
链接好之后,先声明邮件服务器地址
helo mail.yangyang.com
然后声明发送方
mail from:[email protected]
声明接收放
rcpt to:[email protected]
声明邮件正文
data
写正文。。。。
如果不想写了
另起一行写. 接着回车就好
quit 退出
接着就可以在收件人的家目录里发现一个Maildir/目录 进去里面,有new目录,再进去就会发现有发的邮件啦
dovecot是一个MRA 是一种收邮件的软件
可以下载用telnet连接,也可以进行接收邮件
下载:yum -y install dovecot dovecot-deve1
telnet mail.yangyang.com 110
进行连接
连接好之后
输入
user 用名 回车
pass 密码 回车
就可以登陆啦
然后输入list就可以看到里面的内容了
查看内容 使用
retr 邮件编号
即可查看
quit退出
企业级邮件服务器搭建
咱们来做个小测试吧
输入:
echo “hi” | mail -s test [email protected]
你会在刚刚配置文件里加入的收件目录里:
cd /home/vmail
进去之后你会惊喜的发现有一个extmail.org的文件夹,哈哈哈哈哈哈哈!这就代表你成功啦,再进去会发现:postmaster,再进去
就是Maildir了,再进去就可以看到我们熟悉的new目录啦,存放邮件的地方,再进去就可以查看邮件啦!
第六步:
接下来就需要我们配置dovecot模块了,把整个服务架起来
yum -y install dovecot dovecot-mysql
下载好之后,进入:
cd /etc/dovecot/conf.d/
第一个我们来修改
10-mail.conf这个文件,用来设置邮件的配置
找到mail_location = maildir:这一行,把它修改:
mail_location = maildir:/home/vmail/%d/%n/Maildir
这是用来设置我们接收邮件的地址
%d的意思配置文件上一行有解释
接着把first_valid_uid =设置为600
保存退出
修改第二个文件:
10-auth.conf这个是设置认证方式的
找到这一行!include auth-sql.conf.ext把注释去掉,通过数据库认证
保存退出
修改第三个文件:
先返回上一级
cd …
执行
cp /usr/share/doc/dovecot-2.2.36/example-config/dovecot-sql.conf.ext .
把这个文件拷贝到当前目录
打开这个文件修改:
第七步:
启动dovecot
systemctl start dovecot.service
测试
telnet mail.extmail.org 110
输入用户名:
user [email protected]
输入密码:
pass extmail
查看:
list
retr 1
便可以看到刚刚收到的邮件了
quit退出
备份服务器数据
Samba只不过是映射点,并不能保存,数据还在服务器
所以我们需要一个文件同步的工具
关于RSYNC
Rsync(remote synchronize)是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件,也可以使用 Rsync 同步本地硬盘中的不同目录。
Rsync 是用于取代rcp的一个工具,Rsync使用所谓的 “Rsync 算法” 来使本地和远程两个主机之间的文件达到同步,这个算法只传送两个文件的不同部分(校验和),而不是每次都整份传送,因此速度相当快。您可以参考 How Rsync Works A Practical Overview 进一步了解rsync 的运作机制。
Rsync支持大多数的类Unix系统,无论是Linux、Solaris还是BSD上都经过了良好的测试。此外,它在windows平台下也有相应的版本,比较知名的有cwRsync和Sync2NAS
特点:
同步源与发起端
rsync同步源: 指备份操作的远程服务器,也称为备份源主要包括两种:rsync源、SSH源
搭建同步源
1.基于ssh的同步源
在/var/www/html文件夹下面创建vim网页文件
vim /var/www/html/index.html
写入网站内容
保存退出
在另一台虚拟机上运行命令
curl 服务器IP
就可以显示网页所写的内容啦
如果需要备份网站内容,使用ssh同步源备份到另一台服务器
如果两台服务器需要使用rsync同步,两台服务器全需要下载yum -y install rsync
同步命令:rsync -avz 同步源的一个账户@同步源IP:同步源目录 发起端目录
rsync命令的用法:
基本格式:rsync [选项] 原始位置 目标位置
常用选项:
-a:归档模式,递归并保留对象属性,等同于 -rlptgoD
-v:显示同步过程的详细(verbose)信息
-z:在传输文件时进行压缩(compress)
-H:保留硬连接文件
-A:保留ACL属性信息
–delete:删除目标位置有而原始位置没有的文件
-r:递归模式,包含目录及子目录中所有文件
-l:对于符号链接文件仍然复制为符号链接文件
-p:保留文件的权限标记-t:保留文件的时间标记
-g:保留文件的属组标记(仅超级用户使用)
-o:保留文件的属主标记(仅超级用户使用)
-D:保留设备文件及其他特殊文件
2.基于RSYNC的同步源
数据下行同步
数据上行同步
基于ssh的免密码同步
生成密钥对
ssh-keygen -t rsa
公钥上传到服务器
ssh-copy-id server@服务器IP
此时同步不需要密码了
基于rsync的免密码同步
系统为rsync准备了变量
RSYNC_PASSWORD
我们只需要为这个变量赋值
echo $RSYNC_PASSWORD
查看这个变量,此时为空
给他赋值,为我们刚开始设置的rsync的密码
export RSYNC_PASSWORD=123456
这回下行同步就不需要密码了
同步的优缺点
inotify实现实时同步
安装gcc
yum -y install gcc
安装inotifu-tools
wget http://github.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gz
解压 tar -zxvf inotify-tools-3.14.tar.gz
进入解压好的包
./configure && make && make install*
如何你希望使用效果高,可以调整inotify内核参数
调整inotify内核参数
max_queue_events:监控队列大小 max_user_instances:最多监控实例数
max_user_watches:每个实例最多监控文件数
你需要在官方网站查看不同版本的系统不同的内核参数
到/etc/sysctl.conf里面添加参数
安装inotify-tools辅助工具
inotifywait:用于持续监控,实时输出结果inotifywatch:用于短期监控,任务完成后再出结果
[root@localhost ~]# inotifywait -mrq -e modify,create,move,delete /var/www/html
Setting up watches. Beware: since -r was given, this may take a while! Watches established.
/var/www/html/ CREATE index.php /var/www/html/ MODIFY index.php /var/www/html/ MOVED_FROM index.php /var/www/html/ MOVED_TO test.php
………
实时监控
inotifywait -mrq -e modify,create,move,delete /var/www/html
选项:
-m:表示持续监控
-r:表示递归监控
-q:表示输出数据简化
-e:指定你要监控的哪些数据,比如create,move,delete,多个命令用逗号隔开
这条命令输入后,界面会被锁死,需要换一个终端连接,咋检测的目录下创建删除文件,这个锁死的终端就会显示信息
ctrl+c退出界面
实时同步实现
#!/bin/bash**
*a=“/usr/local/bin/inotifywait -mrq -e create /var/www/html/”
b=“/usr/bin/rsync -avz /var/www/html/* 192.168.1.13:/client/ssh”
$a | while read directory event file
do
$b
done
保存退出
执行
bash 1.sh &
#!/bin/bash
a=“/usr/local/bin/inotifywait -mrq -e create,delete /server1”
b=“/usr/local/bin/unison -batch /server1 ssh://客户端IP//server2”
$a | while read directory event file
do
$b
done
scp 2.sh 客户端IP:/root
客户端:
vim 2.sh
#!/bin/bash
a="/usr/local/bin/inotifywait -mrq -e create,delete /server2"
b="/usr/local/bin/unison -batch /server1 ssh://服务器IP//server1"
$a | while read directory event file
do
$b
done
服务器:
bash 2.sh &
这回就全部完成啦
可以自己在服务器/server1中的文件夹里面创建文件,观察客户端/server2中的变化
终于把Linux网络篇的以下基础知识也更新完啦,这里面每个实验,服务器搭建我都花费了大量时间,每一个都成功搭建了,如果看到这个博客的你们有那个服务搭建不出来,或者有一些奇形怪状的错误返回值代码,可以联系我,我帮你们看看,也希望大家可以可以点点赞,关注一下,谢谢大家。
我的QQ:1771566679
谢谢大家!!!