linux:网络

网络概念

网络发展

1、1969年互联网元年

2、局域网(LAN,Local Area Network)、城域网(MAN)、广域网(WAN,Wide Area Network)

ip地址

网络基础命令

ping

检测当前主机与目标主机是否连通,不是100%准确(有的服务器禁ping)

原理:使用了ICMP回送请求和回送应答报文

计算的时间是数据包的往返总时间

常用命令:

-c num  ——表示使用ping发出去num个数据包  
-n   ——表示ping的输出中包含主机信息的都用ip表示,不在进行ip和主机名之间的映射,那样ping的响应速度会更快  
-s packetsize   ——指定ping发出去的数据包的大小,单位是B.  如果不配置此选项将默认为56B  
-t  ttl  ——设定数据包在网络上传输的Time To Live(TTL)生命周期  
-f   ——快速ping,Flood ping,发送接收ICMP Echo报文的频率快了非常多  

ping  ip/域名  -t   :一直发送数据包

举例:

[root@VM_0_14_centos ~]# ping -c 3 -s 512 wwww.baidu.com #表示向www.baidu.com发送3个512B大小的数据包,来进行网络探测 

PING ps_other.a.shifen.com (220.181.38.148) 512(540) bytes of data.
520 bytes from 220.181.38.148 (220.181.38.148): icmp_seq=1 ttl=250 time=36.4 ms
520 bytes from 220.181.38.148 (220.181.38.148): icmp_seq=2 ttl=250 time=36.4 ms
520 bytes from 220.181.38.148 (220.181.38.148): icmp_seq=3 ttl=250 time=36.5 ms

--- ps_other.a.shifen.com ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 15851ms
rtt min/avg/max/mdev = 36.462/36.489/36.517/0.022 ms

netstat

查看网络的连接信息

netstat -tnlp   (-t:tcp协议,-n:将字母转化为数字,-l:列出状态为监听,-p:显示进程信息)

netstat  -an(-a:全部信息,-n:将字母转化为数字)

traceroute

原理:使用了ICMP的时间超过差错报告报文以及ICMP终点不可达报文

查找当前主机与目标主机之间所有的网关(路由器,会给沿途各个路由器发送icmp数据包)

用于追踪数据包在网络上的传输时的全部路径,它默认发送的数据包大小是40字节

通过traceroute我们可以知道信息从你的计算机到互联网另一端的主机是走的什么路径。当然每次数据包由某一同样的出发点(source)到达某一同样的目的地(destination)走的路径可能会不一样,但基本上来说大部分时候所走的路由是相同的。

traceroute通过发送小的数据包到目的设备直到其返回,来测量其需要多长时间。一条路径上的每个设备traceroute要测3次。输出结果中包括每次测试的时间(ms)和设备的名称(如有的话)及其ip地址。

traceroute(选项)(参数)
-d:使用Socket层级的排错功能;
-f<存活数值>:设置第一个检测数据包的存活数值TTL的大小;
-F:设置勿离断位;
-g<网关>:设置来源路由网关,最多可设置8个;
-i<网络界面>:使用指定的网络界面送出数据包;
-I:使用ICMP回应取代UDP资料信息;
-m<存活数值>:设置检测数据包的最大存活数值TTL的大小;
-n:直接使用IP地址而非主机名称;
-p<通信端口>:设置UDP传输协议的通信端口;
-r:忽略普通的Routing Table,直接将数据包送到远端主机上。
-s<来源地址>:设置本地主机送出数据包的IP地址;
-t<服务类型>:设置检测数据包的TOS数值;
-v:详细显示指令的执行过程;
-w<超时秒数>:设置等待远端主机回报的时间;
-x:开启或关闭数据包的正确性检验。
-U   ——使用UDP协议来探测,这是默认的检测协议。 
-I   ——使用ICMP协议来探测  
-T   ——使用TCP协议来探测 
[root@VM_0_14_centos ~]# traceroute www.baidu.com
traceroute to www.baidu.com (14.215.177.38), 30 hops max, 60 byte packets
 1  * 9.31.61.130 (9.31.61.130)  1.002 ms *
 2  9.31.123.100 (9.31.123.100)  0.973 ms  1.552 ms  1.238 ms
 3  10.196.18.125 (10.196.18.125)  0.946 ms 10.196.18.109 (10.196.18.109)  0                       .952 ms 10.196.18.125 (10.196.18.125)  1.191 ms
 4  10.162.33.1 (10.162.33.1)  1.711 ms  1.690 ms 10.200.16.169 (10.200.16.1                       69)  0.872 ms
 5  10.162.32.145 (10.162.32.145)  1.532 ms  1.459 ms  1.506 ms
 6  * * *
 7  113.96.7.34 (113.96.7.34)  8.462 ms 113.108.209.53 (113.108.209.53)  2.2                       35 ms 113.96.6.18 (113.96.6.18)  3.495 ms
 8  113.96.11.78 (113.96.11.78)  4.783 ms 102.96.135.219.broad.fs.gd.dynamic                       .163data.com.cn (219.135.96.102)  3.121 ms 113.96.11.78 (113.96.11.78)  5.63                       4 ms
 9  14.215.32.130 (14.215.32.130)  3.672 ms 121.14.67.146 (121.14.67.146)  2                       .926 ms 14.215.32.114 (14.215.32.114)  3.130 ms
10  * * *
11  * * *
12  * * *
13  * * *
14  * * *
15  * * *

分析:

1、记录按序列号从1开始,每个纪录就是一跳 ,每跳表示一个网关,我们看到每行有三个时间,单位是ms,其实就是-q的默认参数。探测数据包向每个网关发送三个数据包后,网关响应后返回的时间;如果用traceroute -q 4 www.58.com,表示向每个网关发送4个数据包。

2、有时我们traceroute一台主机时,会看到有一些行是以星号表示的。出现这样的情况,可能是防火墙封掉了ICMP的返回信息,所以我们得不到什么相关的数据包返回数据。

3、有时我们在某一网关处延时比较长,有可能是某台网关比较阻塞,也可能是物理设备本身的原因。当然如果某台DNS出现问题时,不能解析主机名、域名时,也会 有延时长的现象;您可以加-n参数来避免DNS解析,以IP格式输出数据。

4、如果在局域网中的不同网段之间,我们可以通过traceroute 来排查问题所在,是主机的问题还是网关的问题。如果我们通过远程来访问某台服务器遇到问题时,我们用到traceroute 追踪数据包所经过的网关,提交IDC服务商,也有助于解决问题;但目前看来在国内解决这样的问题是比较困难的,就是我们发现问题所在,IDC服务商也不可能帮助我们解决。

5、使用traceroute返回的每行信息中有三个时间值,那是因为对于每个节点或者路由器,源端发了三次探测请求

6、windows下的命令:tracert ip / 域名

在线工具:站长之家

dig

用来查询DNS包括NS记录,A记录,MX记录等相关信息

推荐:链接

常用命令:

@<服务器地址>:指定进行域名解析的域名服务器;
-b<ip地址>:当主机具有多个IP地址,指定使用本机的哪个IP地址向域名服务器发送域名查询请求;
-f<文件名称>:指定dig以批处理的方式运行,指定的文件中保存着需要批处理查询的DNS任务信息;
-P:指定域名服务器所使用端口号;
-t<类型>:指定要查询的DNS数据类型;
-x<IP地址>:执行逆向域名查询;
-4:使用IPv4;
-6:使用IPv6;
-h:显示指令帮助信息。

nslookup

指定查询的类型,可以查到DNS记录的生存时间还可以指定使用那个DNS服务器进行解析

参考:链接

nslookup 域名   :查询域名对应的IP地址,包括A记录和CNAME记录

host

分析域名查询工具,可以用来测试域名系统工作是否正常

参考:链接

-a:显示详细的DNS信息;
-c<类型>:指定查询类型,默认值为“IN“;
-C:查询指定主机的完整的SOA记录;
-r:在查询域名时,不使用递归的查询方式;
-t<类型>:指定查询的域名信息类型;
-v:显示指令执行的详细信息;
-w:如果域名服务器没有给出应答信息,则总是等待,直到域名服务器给出应答;
-W<时间>:指定域名查询的最长时间,如果在指定时间内域名服务器没有给出应答信息,则退出指令;
-4:使用IPv4;
-6:使用IPv6.

mtr

结合了traceroute和ping的工具

常用选项:

-r     ——将mtr设置为报告模式,追踪结果以报告模式输出。若没有-r显现,那么将进入mtr的实时交互模式。  

-c num ——定义追踪的次数,每次是1s,且-c必须和-r配合使用,默认的10次

mtr host:跟踪到主机并持续ping所有中间跃点

说明:

第一列:显示的是IP地址和本机域名,这点和tracert很像
第二列:snt:10 设置追踪的次数,默认值是10 可以通过参数 -c来定制,例如mtr -r -c 15 202.108.33.94
第三列 Loss: 是显示的每个对应IP的丢包率
第四列 Last: 显示的最近一次的返回时延
第五列 Avg : 是平均值 这个应该是发送ping包的平均时延
第六列 Best: 是最好或者最短时延
第七列 Wrst: 是最差或者最常时延
第八列 StDev: 是标准偏差

arp

arp -a  :查看本地缓存的mac表

arp -d 主机地址:删除指定的缓存记录

tcpdump

用于抓数据包

可以打印所有经过网络接口的数据包的头信息,也可以使用-w选项将数据包保存到文件中,方便以后分析。

tcpdump 协议 port 端口

tcpdump 协议 port 端口  host 地址

tcpdump -i 网卡设备名

查看内网ip地址

1、ifcondig

2、通过 cURL 工具或是 HTTP 的 GET 请求访问 metadata,获取公网 IP 地址

# 例如
curl http://metadata.tencentyun.com/meta-data/public-ipv4

网卡

功能:负责计算机之间数据的封装和解封

网卡文件位置:/etc/sysconfig/network-scripts

网卡配置文件的名称命名格式:ifcfg-网卡名称 

onboot:是否开机

bootproto:ip地址分配方式

hwaddr:mac地址

重启网卡

1、service network restart

2、直接调用服务的快捷方式

服务的快捷方式的存放位置:/etc/init.d

故重启网卡:/etc/init.d/network restart

管理单个网卡

ifdown  网卡名

ifup      网卡名

快捷方式

软链接:ln -s 原始文件的路径  快捷方式额路径

SSH

远程连接协议、远程文件传输协议

端口号: 22

端口可以被修改:/etc/ssh/ssh_config

端口号

1、范围:0-65535

2、不能使用已经占用的端口 

本地连接

ssh <username>@<hostname or IP address>
  • username 即为前提条件中获得的默认帐号。
  • hostname or IP address 为您的 Linux 实例公网 IP 或自定义域名

服务管理

启动/停止/重启

1、service sshd start / stop / restart

2、/etc/init.d/sshd start / stop / restart

指定ip登录

1、找到并编辑ssh的配置文件默认/etc/ssh/sshd_config

vim /etc/ssh/sshd_config

2、在文件最后面另起一行添加:

AllowUsers root@本机IP地址

3、然后保存并退出,再重启一下ssh服务

/bin/systemctl restart sshd.service

ssh秘钥身份认证

1、通过ssh-keygen 生成私钥 ~/.ssh/id_rsa 和公钥 ~/.ssh/id_rsa.pub,私钥和公钥的权限分别是600和644
2、通过 ssh-copy-id 将公钥复制到目标系统上,默认复制到 ~/.ssh/id_rsa.pub
3、通过ssh远程链接,不需要密码

禁止root用户登录

1、sshd配置文件中修改【/etc/ssh/sshd_config】
PermitRootLogin no
或者
PermitRootLogin without-password
2、重启sshd
systemctl restart sshd

禁止使用ssh远程密码身份验证

1、配置文件修改
PassWordAuthentication no
2、重启sshd
systemctl restart sshd

修改主机名

临时修改

hostname 设置的主机名

永久修改

修改配置文件:/etc/sysconfig/network

需重启后生效,但域名未被dns识别,需要添加到host文件中:

host文件的位置:/etc/hosts

测试

开启http协议:service httpd start

chkconfig

管理开机自启动服务

查看开机自启动服务

chkconfig --list  

删除服务

chkconfig --del 服务名

添加开机自启动服务

chkconfig --add 服务名

设置服务在某个级别上开启或关闭

chkconfig -- level 启动级别   服务名 on / off【级别连在一起】

ntp

用于对服务器时间的同步

同步方式两种:

手动同步

上游时间:

ntpdate  时间服务器的域名或者ip

ip地址查询:http://ntp.org.cn/pool.php

自动同步

服务名:ntpd 

启动ntpd服务:service ntpd start    或者 /etc/init.d/ntpd  start

设置ntpd 服务开机自启:

chkconfig --list | grep ntpd    :查看

chkconfig --level 35 ntpd on   :启动

防火墙

选择让请求进入,保证网络安全

centos6.5的防火墙是 iptables

查看iptables是否开机启动

iptables服务管理

1) 永久性生效,重启后不会复原

开启: chkconfig iptables on

关闭: chkconfig iptables off

2) 即时生效,重启后复原

开启: service iptables start

关闭: service iptables stop

正确关闭步骤:

service iptables stop

chkconfig iptables off

查看防火墙状态(规则)

service iptables status

查看规则

iptables  -L  -n 

  -L  :列出规则

  -n:将单词表达形式改为数字表示 

设置防火墙规则

允许80端口通过:iptables -A INPUT -p tcp --dport 80 -j ACCEPT 

centos7的防火墙是firewalld

firewall-cmd --state      #查看默认防火墙状态(关闭后显示not running,开启后显示running)

systemctl stop firewalld.service      #停止firewall

systemctl disable firewalld.service    #禁止firewall开机启动

systemctl start firewalld.service       #开启防火墙

systemctl enable firewalld.service    #开机开启防火墙

firewall-cmd --zone=public(作用域) --add-port=80/tcp(端口和访问类型) --permanent(永久生效)         #开启80端口

firewall-cmd --zone= public --remove-port=80/tcp --permanent      #删除80端口

firewall-cmd --list-ports     #查看已开放的端口(默认不开放任何端口)

激活firewall最新配置 :

systemctl restart firewalld 和 firewall-cmd --reload 两种方式,前一种是重启firewalld服务,建议使用后一种“重载配置文件”。

重载配置文件之后不会断掉正在连接的tcp会话,而重启服务则会断开tcp会话。

原文地址:https://www.cnblogs.com/pam-sh/p/13046633.html