文章目录
Linux_day06-07
Linux的网络相关
一.设置主机名
- 临时设置:#hostname 新主机名(切换用户生效,重启还原)
- 永久设置:修改配置文件/etc/hostname,用vim修改(重启生效)
修改后的主机名可能ping不通,此时需要修改/etc/hosts配置文件,将新名字只指向本机(设置FQDN),新起一行,写上本机ip和名称
回顾:
#hostname——查询完整的主机名
#hostname -f ——查询全限定域名FQDN
不设置FQDN会如何
- 很多开源服务器软件(如Apache)会无法启动
- 修改后的名字,方便记忆,可以一看到就对这台主机的作用有一个初步判断
- 如果不设置,会影响本地的域名解析(本地访问)
二.chkconfig服务配置(仅了解)
安全辅助工具,提供开机启动项的管理服务
1.查看开机启动服务
#chkconfig --list(该指令在CentOS 7已不再常用)
其中0-6表示各个启动级别
比如network服务在3级别为开,则表示其在3启动级别下默认开机启动
CentOS 7 中常用指令是:systemctl list -units --type =service --all
2.删除服务
#chkconfig --del
3.添加开机启动服务
#chkconfig --add 服务名
(并不是所用的软件都有服务名,必须保证正常运行的服务才可以添加)
4.设置服务在某个级别下开机启动
#chkconfig --level 数字数字数字 服务名 on/off
eg.设置httpd服务在3,5级别开机启动
#chkconfig --level 35 httpd on
eg.设置httpd服务在5级别时开机不启动
#chkconfig --level 5 httpd off
三.ntp服务
作用:主要是时用于对计算机的时间同步管理操作,时间对服务器来说很重要,一般很多网站都需要读取服务器时间来记录相关信息,如果时间不准,则可能造成很大影响。
同步服务器时间的方式:
- 1.一次性手动同步(从别的服务器同步)
#ntpdate 时间服务器的域名或者ip地址
(ip地址查看可以访问 全球可用的NTP服务器列表与解析服务 )
eg.选择一个阿里云的服务器地址来同步 120.25.108.11
- 2.通过时间同步服务自动同步
服务名:ntpd
启动服务:#service ntpd start 或者 # /etc/init.d/ntpd start
设置ntpd开机自动启动:#chkconfig --level 35 ntpd on
补充概念:时间服务器上游
四.防火墙服务——软件防火墙
防火墙:防范网络攻击,选择性让请求通过,从而保证网络安全
(防水墙:bbs论坛,防灌水)
- 软件防火墙
- 硬件防火墙
在CentOS 7 中防火墙名称:firewalld(从前是iptables)
-
查看防火墙状态
#systemctl status firewalld
-
临时关闭firewall
#systemctl stop firewalld
-
禁止firewall开机自动启动
systemctl disabled firewalld
-
设置firewall开机自动启动
systemctl enable firewalld
开启防火墙后,对指定端口进行操作
-
添加端口
firewall-cmd --zone=public --add-port=端口号/tcp --permanent
-
防火墙重新载入
firewall-cmd --reload
-
查看端口
firewall-cmd --zone=public --query-port=端口号/tcp
-
删除端口
firewall-cmd --zone=public --remove-port=端口号/tcp --permanent
五.网络相关的一些命令
1. ifconfig
作用:获取网络接口配置信息 (if是指interface)
网卡字段简单说明
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
- UP:表示“接口已启用”。
- BROADCAST :表示“主机支持广播”
- RUNNING:表示“接口在工作中”
- MULTICAST:表示“主机支持多播”
- MTU:1500(最大传输单元):1500字节
inet 192.168.1.135
netmask 255.255.255.0
broadcast 192.168.1.255
- inet :IP地址
- netmask :掩码
- broadcast :广播地址
网卡的IPv6地址
inet6 fe80::2aa:bbff:fecc:ddee prefixlen 64 scopeid 0x20
连接类型:
Ethernet (以太网)
HWaddr (硬件mac地址)
// txqueuelen (网卡设置的传送队列长度)
ether 00:aa:bb:cc:dd:ee txqueuelen 1000 (Ethernet)
RX packets 2825 bytes 218511 (213.3 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
// packets 接收时,正确的数据包数。
// bytes 接收的数据量。
// errors 接收时,产生错误的数据包数。
// dropped 接收时,丢弃的数据包数。
// overruns 接收时,由于速度过快而丢失的数据包数。
// frame 接收时,发生frame错误而丢失的数据包数。
TX packets 1077 bytes 145236 (141.8 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
packets 发送时,正确的数据包数。
bytes 发送的数据量。
errors 发送时,产生错误的数据包数。
dropped 发送时,丢弃的数据包数。
overruns 发送时,由于速度过快而丢失的数据包数。
carrier 发送时,发生carrier错误而丢失的数据包数。
collisions 冲突信息包的数目。
虚拟网卡:
主要是建立远程计算机间的局域网。虚拟网卡链接技术就是VPN。比如说可以和别的地方的几台机子,通过建立虚拟HUB 实现VPN client的链接,这样就算是在这几台远程计算机间建立的局域网,也能和你的机子一起实现局域网的功能。”
2. netstat
作用: 查看路由表,实际的网络连接以及每一个网络接口设备的状态信息
语法:# netstat [选项]
参数:
-a或–all :显示所有连线中的Socket;
-A<网络类型>或–<网络类型>:列出该网络类型连线中的相关地址;
-c或–continuous:持续列出网络状态;
-C或–cache:显示路由器配置的快取信息;
-e或–extend:显示网络其他相关信息;
-F或–fib:显示FIB;
-g或–groups:显示多重广播功能群组组员名单;
-i或–interfaces:显示网络界面信息表单;
-l或–listening:显示监控中的服务器的Socket;
-M或–masquerade:显示伪装的网络连线;
-n或–numeric:直接使用ip地址,而不通过域名服务器(numerical数值的);
-N或–netlink或–symbolic:显示网络硬件外围设备的符号连接名称;
-o或–timers:显示计时器;
-p或–programs:显示正在使用Socket的程序识别码和程序名称;
-r或–route:显示Routing Table;
-s或–statistice:显示网络工作信息统计表;
-t或–tcp :显示TCP传输协议的连线状况;
-u或–udp :显示UDP传输协议的连线状况;
-v或–verbose:显示指令执行过程;
-V或–version:显示版本信息;
-w或–raw:显示RAW传输协议的连线状况;
-x或–unix:此参数的效果和指定"-A unix"参数相同;
–ip或–inet:此参数的效果和指定"-A inet"参数相同。
常用指令:
netstat -a # 列出所有端口
netstat -at # 列出所有TCP端口
netstat -au # 列出所有UDP端口
netstat -ax # 列出所有unix端口
netstat -s # 显示所有端口的统计信息
netstat -st # 显示所有TCP的统计信息
netstat -su # 显示所有UDP的统计信息
netstat -atnlp # 直接使用ip地址列出所有处理监听状态的TCP端口,且加上程序名
字段说明
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
-
Proto:协议名(tcp协议还是udp协议);
-
recv-Q:网络接收队列
表示收到的数据已经在本地接收缓冲,有多少没有被进程取走,如果接收队列Recv-Q一直处于阻塞状态,可能是遭受了拒绝服务 denial-of-service 攻击;
- send-Q:网路发送队列
对方没有收到的数据或者说没有Ack的,还是本地缓冲区.
如果发送队列Send-Q不能很快的清零,可能是有应用向外发送数据包过快,或者是对方接收数据包不够快;
这两个值通常应该为0,如果不为0可能是有问题的。
packets在两个队列里都不应该有堆积状态,可接受短暂的非0情况。
- Local Address
1.Local Address 部分的0.0.0.0:873表示监听服务器上所有ip地址的所有(0.0.0.0表示本地所有ip),比如你的服务器是有172.172.230.210和172.172.230.11两个ip地址,那么0.0.0.0:873此时表示监听以下三个地址的873端口
172.172.230.210
172.172.230.211
127.0.0.1 (回环地址)
2.如果为127.0.0.1:25这个表示监听本机的loopback地址的25端口
(如果某个服务只监听了回环地址,那么只能在本机进行访问,无法通过tcp/ip 协议进行远程访问)
3.如果为192.168.1.81:2288这是因为我们在启动的时候指定了192.168.1.81:2288参数,如果不指定的话,会默认监听0.0.0.0:2288
- Foreign Address
显示与本机端口通信的外部socket
显示规则与Local Address相同
- State
显示11种链路状态,或者UNKNOWN
(这些状态是按照TCP连接建立的三次握手和TCP连接断开的四次挥手过程来描述的。)
下来补一下这块的计算机网络知识
-
LISTEN : 监听来自远方TCP端口的连接请求
The socket is listening for incoming connections .
-
SYN_SENT:发送连接请求SYN后等待匹配的连接请求
The socket is actively attempting to establish aconnection .
-
SYN_RECV:在收到和发送一个连接请求后等待对方确认
A connection request has been received from the network.
-
ESTABLISHED:已经建立了链接,数据可以传送给用户
The socket has an established connection .
-
FIN_WAIT1:主动关闭(activeclose)端应用程序调用close,于是其TCP发出FIN请求主动关闭连接,之后进入FIN_WAIT1状态
The socket is closed, and the connection is shutting down.
-
CLOSE_WAIT:被动关闭(passiveclose)端TCP接到FIN后,就发出ACK以回应FIN请求(它的接收也作为文件结束符传递给上层应用程序),并进入CLOSE_WAIT. 等待从本地用户发来的连接中断请求
The remote end has shut down, waiting for the socketto close.
-
FIN_WAIT2:主动关闭端接到ACK后,就进入了FIN-WAIT-2,从远程TCP等待连接中断请求
Connection is closed, and the socket is waiting for a shutdownfrom the remote end.
-
LAST_ACK:被动关闭端一段时间后,接收到文件结束符的应用程序将调用CLOSE关闭连接。这导致它的TCP也发送一个 FIN,等待对方的ACK.就进入了LAST-ACK,等待原来发向远程TCP的连接中断请求的确认.
The remote end has shut down, and the socket is closed. Waiting foracknowledgement.
-
TIME_WAIT:在主动关闭端接收到FIN后,TCP 就发送ACK包,并进入TIME-WAIT状态。等待足够的时间以确保远程TCP接收到连接中断请求的确认
The socket is waiting after close to handle packets still in the network.
-
CLOSING:比较少见,等待远程TCP对连接中断的确认
Both sockets are shut down but we still don’t have all our datasent.
-
CLOSED:被动关闭端在接受到ACK包后,就进入了closed的状态,表示没有任何连接状态
The socket is not being used.
-
UNKNOWN:未知的Socket状态
The state of the socket is unknown.
notes:
-
SYN: (同步序列编号,SynchronizeSequence Numbers)该标志仅在三次握手建立TCP连接时有效。表示一个新的TCP连接请求。
-
ACK: (确认编号,AcknowledgementNumber)是对TCP请求的确认标志,同时提示对端系统已经成功接收所有数据。
-
FIN: (结束标志,Finish)用来结束一个TCP回话.但对应端口仍处于开放状态,准备接收后续数据。
这一部分摘自👇
原文链接
3. ping
ping命令通过ICMP(Internet控制消息协议)工作
ping可以用来测试本机与目标主机是否联通、联通速度如何、稳定性如何
语法:#ping 选项 目标主机(目标主机可以是IP或者域名)
- 直接ping 地址或域名
- -c count | ping指定次数后停止ping
字段说明
第一行:ping 目标主机域名(ip) 不带包头的包大小(带包头的包大小)
第二~五行:四次ping恢复
- icmp_seq:ping的序列,从1开始
- ttl:剩余的ttl( TTL是 Time To Live的缩写,该字段指定IP数据报被路由器丢弃之前可以转发的最大跳数 )
- time: 响应时间,数值越小,联通速度越快;
第七行:发出去的包数,收到的包数,丢包率,耗费时间
第八行:最小 平均 最大 (响应时间) mdev表示本机硬件耗费时间
4. telnet——用于测试端口连通性
Telnet协议是TCP/IP协议族中的一员,是Internet远程登录服务的标准协议和主要方式。它为用户提供了在本地计算机上完成远程主机工作的能力。
Telnet远程登录服务分为以下4个过程:
1)本地与远程主机建立连接。该过程实际上是建立一个TCP连接,用户必须知道远程主机的Ip地址或域名;
2)将本地终端上输入的用户名和口令及以后输入的任何命令或字符以NVT(Net Virtual Terminal)格式传送到远程主机。该过程实际上是从本地主机向远程主机发送一个IP数据报;
3)将远程主机输出的NVT格式的数据转化为本地所接受的格式送回本地终端,包括输入命令回显和命令执行结果;
4)最后,本地终端对远程主机进行撤消连接。该过程是撤销一个TCP连接
telnet与ssh的区别
1,本质:telnet是明码传输,ssh是加密传输。 telnet通过TCP/IP协议来访问远程计算机来控制你的设备,其传输的数据和口令是明文形式的。 这样攻击者就很容易得到你的口令和数据。 其方式也很简单,他以中间人的身份冒充你的设备截取你的数据,然后再把假数据再传给你的远程设备,从而达到攻击的目的。 SSH是替代Telnet和其他远程控制台管理应用程序的行业标准。 SSH命令是加密的并以几种方式进行保密。 SSH有很多功能,它既可以代替telnet,又可以为ftp、pop、甚至ppp提供一个安全的“通道”。
2,端口区别:telnet是23 ssh是22
3,ssh分分ssh1和ssh2。 两者是不兼容的版本,使用不同的协议。 SSH1又分为1.3和1.5两个版本。 SSH1采用DES、3DES、Blowfish和RC4等对称加密算法保护数据安全传输,而对称加密算法的密钥是通过非对称加密算法(RSA)来完成交换的。 SSH1使用循环冗余校验码(CRC)来保证数据的完整性,但是后来发现这种方法有缺陷。 SSH2避免了RSA的专利问题,并修补了CRC的缺陷。 SSH2用数字签名算法(DSA)和Diffie-Hellman(DH)算法代替RSA来完成对称密钥的交换,用消息证实代码(HMAC)来代替CRC。 同时SSH2增加了AES和Twofish等对称加密算法。
4,使用实例:
telnet 10.10.10.1 telnet 10.10.10.1 8080
ssh 10.10.10.1 ssh user@10.10.10.1
这里的ssh是指ssh1还是指ssh2,取决于你机器上安装的版本。
5,为什么有时候telnet会不好使?
这个是涉及到机器设置。 首先查看telnet服务有没有开,再者看下防火墙是不是阻止了telnet,默认情况防火墙是不信任telnet的,因为它不安全。
5. curl——网页查看
curl 是一个工具,用于向服务器传输数据或者获取来自服务器的数据。
curl的数据交互功能基本上都是通过URL方式进行的
- curl url(获取该网址的文本信息)
- curl -i url(获取该网址的文本信息以及协议头部信息)
- curl -x proxy url(使用代理获取网页文本信息)
- curl -I url(仅返回请求头部信息)
补充:URL简介———url
1.概念
在WWW上,每一信息资源都有统一的且在网上唯一的地址,该地址就叫URL(Uniform Resource Locator,统一资源定位符),它是WWW的统一资源定位标志,就是指网络地址。
2.组成
URL由3部分组成:
资源类型、存放资源的主机域名、资源文件名。
也可认为由4部分组成:
协议、主机、端口、路径。(很多时候端口都是隐藏的)
URL的一般语法格式为:(带方括号[]的为可选项):
protocol : // hostname[:port] / path / [;parameters][?query]#fragment
举例: https://mail.163.com/index.html
-
http:这个是协议,也就是HTTP超文本传输协议,也就是网页在网上传输的协议。
-
mail:服务器名,代表着是一个邮箱服务器,所以是mail.
163.com:这个是域名,是用来定位网站的独一无二的名字。
mail.163.com:这个是网站名,由服务器名+域名组成。 -
/:这个是根目录,也就是说,通过网站名找到服务器,然后再找到服务器存放网页的根目录。
-
index.html:这个是根目录下的默认网页。
http://mail.163.com/index.html:这个叫做URL,统一资源定位符,全球性地址,用于定位网上的资源。
注意: URL 只能使用 ASCII 字符集来通过因特网进行发送。 也就是说URL只能使用英文字母、阿拉伯数字和某些标点符号,不能使用其他文字和符号 。