route
1.作用
显示或设置 Linux 内核中的静态路由表。
2.查询路由
输出各列的含义
frilab@fri-ml-server:~$ route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 114.255.88.224 0.0.0.0 UG 0 0 0 enp1s0 114.255.88.0 0.0.0.0 255.255.255.0 U 0 0 0 enp1s0 115.255.33.2 112.222.11.222 0.0.0.0 UG 0 0 0 enp2s0 含义: (3)对于115.255.33.2开头的地址的访问,从112.222.11.222网关走;对于114.255.88.0的访问,是本局域网的ip,不走网关;其余走默认网关114.255.88.224
列 含义 Destination 目标网络或目标主机。Destination 为 default 或 0.0.0.0
时,表示这个是默认网关,所有数据都发到这个网关(这里是10.139.128.1
)Gateway 网关地址, 0.0.0.0
表示当前记录对应的 Destination 跟本机在同一个网段,通信时不需经过网关Genmask Destination 字段的网络掩码,Destination 是主机时需要设置为 255.255.255.255
,是默认路由时会设置为0.0.0.0
Flags 标记,Flags 含义:
- U 路由是激活的
- H Destination是个主机地址
- G Destination是网关地址
- R 恢复动态路由产生的表项
- D 由路由的后台程序动态地安装
- M 由路由的后台程序修改
- ! 拒绝路由
Metric 路由距离,到达指定网络所需的中转数,是大型局域网和广域网设置所必需的 (不在Linux内核中使用。) Ref 路由项引用次数 (不在Linux内核中使用。) Use 此路由项被路由软件查找的次数 Iface 网卡名字,例如
eth0
注解:
(1)主机路由是指路由表中指向单个 IP 地址或主机名的路由记录,其 Flags 字段为 H;网络路由是指主机可以到达的网络,Flags为G;当目标主机的 IP 地址或网络不在路由表中时,数据包就被发送到默认路由(默认网关)上。默认路由的
Destination
是 default 或0.0.0.0
。3.路由增删操作
对于局域网中的 Linux 主机,要想访问 Internet,需要将局域网的网关 IP 地址设置为这个主机的默认路由。在命令行中通过 route 命令添加的路由在网卡重启或机器重启后失效。可以在 /etc/rc.local 中添加 route 命令来保证路由设置永久有效。
语法
route 选项 参数
(1)选项
-A:设置地址类型
-C:打印 Linux 内核的路由缓存
-v:显示详细信息
-n:不执行 DNS 反向查找,直接显示数字形式的 IP 地址
-e:netstat 格式显示路由表
-net:到一个网络的路由表
-host:到一个主机的路由表netmask :与网域有关,可以设定 netmask 决定网域的大小;
gw :gateway 的简写,后续接的是 IP 的数值喔,与 dev 不同;
dev :如果只是要指定由那一块网路卡连线出去,则使用这个设定,后面接 eth0 等
(2)参数add:增加路由记录
del:删除路由记录
target:目的网络或目的主机
gw:设置默认网关
mss:设置TCP的最大区块长度(MSS),单位MB
window:指定通过路由表的TCP连接的TCP窗口大小
dev:路由记录所表示的网络接口添加路由 add
可以添加一条可用路由,或添加一条要屏蔽的路由。
(1)添加不在同一局域网的主机路由
添加主机路由时,需要设置 net gw值,netmask需要为 255.255.255.255[root@VM_139_74_centos ~]# route add -net 10.0.0.10 netmask 255.255.255.255 gw 10.139.128.1 dev eth0 [root@VM_139_74_centos ~]# route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 10.0.0.10 10.139.128.1 255.255.255.255 UGH 0 0 0 eth0
(2)添加网络路由
添加网络路由时,只需指定gw,通过 netmask 设置子网掩码[root@VM_139_74_centos ~]# route add -net 10.0.0.0 netmask 255.255.255.0 gw 10.139.128.1 dev eth0 [root@VM_139_74_centos ~]# route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 10.0.0.0 10.139.128.1 255.255.255.0 UG 0 0 0 eth0
(3)添加同一个局域网的主机路由
不指定 gw 选项时,添加的路由记录不使用网关[root@VM_139_74_centos ~]# route add -net 224.0.0.0 netmask 240.0.0.0 dev eth0 [root@VM_139_74_centos ~]# route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 224.0.0.0 0.0.0.0 240.0.0.0 U 0 0 0 eth0
(4)添加屏蔽路由
[root@VM_139_74_centos ~]# route add -net 224.0.0.0 netmask 240.0.0.0 reject [root@VM_139_74_centos ~]# route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 224.0.0.0 - 240.0.0.0 ! 0 - 0 -
删除路由记录 del
跟添加路由类似,可以删除一条可用路由,或删除一条屏蔽的路由。
(1)删除可用路由
route del -net 224.0.0.0 netmask 240.0.0.0
(2)删除屏蔽的路由
route del -net 224.0.0.0 netmask 240.0.0.0 reject
(3)删除和添加设置默认网关
添加或删除默认网关时,Linux 会自动检查网关的可用性:[root@VM_139_74_centos ~]# route add default gw 192.168.1.1 SIOCADDRT: Network is unreachable [root@VM_139_74_centos ~]# route del default gw 192.168.1.1 SIOCDELRT: No such process
traceroute
1.作用
traceroute用来检测发出数据包的主机到目标主机之间所经过的网关数量的工具。
2.语法
traceroute 参数 主机
3.输出列含义
frilab@fri-ml-server:~$ traceroute www.baidu.com traceroute to www.baidu.com (103.235.46.39), 30 hops max, 60 byte packets 1 _gateway (114.255.88.224) 1.604 ms 1.583 ms 1.601 ms 2 * * * 3 * * * 4 124.65.231.241 (124.65.231.241) 1.237 ms 1.271 ms 1.273 ms 5 202.106.37.49 (202.106.37.49) 2.518 ms 3.054 ms 3.026 ms
输出含义:记录按序列号从1开始,每个纪录就是一跳 ,每跳表示一个网关,我们看到每行有三个时间,单位是 ms,其实就是-q的默认参数。探测数据包向每个网关发送三个数据包后,网关响应后返回的时间;如果您用 traceroute -q 4 www.58.com ,表示向每个网关发送4个数据包。有时我们traceroute 一台主机时,会看到有一些行是以星号表示的。出现这样的情况,可能是防火墙封掉了ICMP的返回信息,所以我们得不到什么相关的数据包返回数据。
有时我们在某一网关处延时比较长,有可能是某台网关比较阻塞,也可能是物理设备本身的原因。当然如果某台DNS出现问题时,不能解析主机名、域名时,也会有延时长的现象;您可以加-n 参数来避免DNS解析,以IP格式输出数据。
如果在局域网中的不同网段之间,我们可以通过traceroute 来排查问题所在,是主机的问题还是网关的问题。4.原理
TTL是 Time To Live的缩写,该字段指定IP包被路由器丢弃之前允许通过的最大网段数量。TTL是IPv4报头的一个8 bit字段。TTL的作用是限制IP数据包在计算机网络中的存在的时间。TTL的最大值是255,TTL的一个推荐值是64。
traceroute的实现原理,有两种方法:1、基于UDP报文实现的;2、基于ICMP报文实现。
基于UDP报文的traceroute是这样实现的:让你在客户端输入 traceroute 命令+ip时, 客户端就发起一个UDP报文,使用一个大于30000的端口号(选这么端口号,目的端一般都是未使用,所以待会就收到一个端口不可达信息。)这样子,服务器端收到这个UDP报文后就会返回ICMP端口不可达的错误信息。同时,第一个数据包,TTL=1,这样第一跳路由器收到后,要转发出去时,会将TTL减一,即TTL=0, 就丢弃,然后第一跳路由器就返回一个ICMP超时的错误信息,所以,客户端通过判断收到ICMP端口不可达报文来确定数据包已到达目的地,如果是收到ICMP超时错误信息报文,说明还没到达目的地,就会将TTL加1,以此类推。示意图如下:
使用ICMP的 回显请求和回显应答 这两种报文。原理跟前面介绍UDP差不多,换汤不换药。
mtr
MTR的名称来源是My TraceRoute ,是一个网络诊断工具。默认情况下每隔1秒mtr就会发送ICMP数据包去探测网络情况,因此界面每隔1秒就会刷新1次。在这个界面下我们可以键入各种命令来与mtr结果进行交互,例如p是暂停,空格是继续等。像这种用户可以键入命令与之交互的模式/界面,一般是基于curses(一种终端控制库)的文本界面(TUI)。
(1)作用
把 ping 命令和 traceroute命令合二为一了。mtr 会持续发包,并显示 Host Address 和每一跳 ping 所用的时间等;
(2)常见参数
mtr 选项 参数 MTR选项 例如:mtr -n -i -a 0.0.0.0 1.1.1.1 -n no-dns(或简写为-n) :不对IP地址做域名解析 -s :用来指定ping数据包的大小 -i :interval SECONDS:指定每次发送ICMP ECHO请求数据包的间隔时间,单位是秒,默认1秒。这个数只要是正数就行,不一定非得是正整数。 -a :来设置发送数据包的IP地址 这个对一个主机由多个IP地址是有用的 -c : 每秒发送多少包,默认为10个。英文是(–report-cycles COUNT) –report、-r :结果不动态显示,静态显示一次结果 mtr www.baidu.com Packets Pings Host Loss% Snt Last Avg Best Wrst StDev 1. _gateway 0.0% 1045 1.4 1.2 1.2 3.5 0.1 2. ??? 3. 124.65.191.217 38.9% 1045 1059. 962.9 685.9 1081. 65.9 4. 124.65.231.241 0.0% 1045 1.5 2.4 1.2 67.8 6.8 5. 202.106.37.49 22.7% 1045 2.5 3.9 2.5 60.3 6.5 6. ??? 7. 219.158.3.222 0.2% 1044 10.2 12.0 9.8 72.6 6.4 8. 60.217.43.42 76.1% 1044 16.5 18.4 16.5 84.9 8.6 9. 60.217.42.154 5.1% 1044 14.9 16.1 14.4 81.2 6.8 10. public1.114dns.com 输出参数的解释: 从1~13,是一个递增的序号,表示数据包经过的第几跳,通过最后一跳的序号我们也可以知道数据包一共经过了几跳。 Loss% – 丢包率,单位是”%”; Snt – sent包的数量 Last – 最后一个包的延时 Avg – 所有包的平均延时 Best –所有发送的包中最小延时数 Wrst – 所有发送的包中最大延时数 StDev – 标准偏差,延时的标准差,这个值越小则延时越稳定
以数字开头的每一行数据表示数据包所经过的每个路由节点,也称之为跳(hop)。我们主要关心的数据是延迟和丢包。延迟主要通过平均延迟Avg来判断。标准差用来表示平均延迟的信息是否更接近真实情况,标准差的值越大,那么平均延迟的可信度越低。
由于后续节点肯定是先经过前边节点,因此,一般情况下,后续节点的延迟、掉包是在前面的情况上累加的。如果前序节点丢包,后续节点都不丢包的话,那么可以理解为该丢包应该是由于ICMP流量限制导致。
(3)mtr 查看步骤
1.mtr 的功能是检查在目的地址有丢包的情况下,查出具体在哪一跳丢包,然后反馈给机房,机房再反馈给运营商;
2.看mtr 的截图 先看最后的目的地址是否有丢包,若最后一跳没有丢包,说明线路ok;若最后一跳有丢包,往下看;
3.再看第一次丢包发生在哪一跳,对应的查这一跳的丢包情况即可。
4.从图中可以看出,最后一跳有丢包且第一次丢包发生在第3跳(124.65.191.217);
5.整理下邮件,发给机房那边,麻烦他们反馈给上海电信运营商,等待他们处理.大体上我们可以把所有的路由节点划分为三段:
- 前2~3个节点一般是本地ISP段,假设我们是在用户的PC上键入mtr进行测试的话,那么就是客户本地的ISP段,例如家庭/小区的宽带/光纤。如果是这段节点异常,我们应该联系本地的电信/移动等ISP。
- 后2~3个节点一般是目标ISP段,目标一般是一些服务的提供商。比如我们购物的淘宝网,或者玩游戏时游戏运营商的游戏服务器所处的网络。如果是这段节点异常,我们应该联系淘宝网/游戏的客服联系技术人员处理。
- 中间节点。中间节点可能很多,一般会经过一些骨干网,跨越城市、省份、国家或者大洲的广域网络。如果是中间节点有问题的话,一般我们本地ISP和目标ISP都没什么办法。
(4)常见结果分析
目标主机网络配置不当
root@localhost:~# mtr --report www.google.com HOST: localhost Loss% Snt Last Avg Best Wrst StDev 1. 63.247.74.43 0.0% 10 0.3 0.6 0.3 1.2 0.3 2. 63.247.64.157 0.0% 10 0.4 1.0 0.4 6.1 1.8 3. 209.51.130.213 0.0% 10 0.8 2.7 0.8 19.0 5.7 4. aix.pr1.atl.google.com 0.0% 10 6.7 6.8 6.7 6.9 0.1 5. 72.14.233.56 0.0% 10 7.2 8.3 7.1 16.4 2.9 6. 209.85.254.247 0.0% 10 39.1 39.4 39.1 39.7 0.2 7. 64.233.174.46 0.0% 10 39.6 40.4 39.4 46.9 2.3 8. gw-in-f147.1e100.net 100.0 10 0.0 0.0 0.0 0.0 0.0第一眼看这个结果的时候,我们主要会关注到到末节点的数据包100%丢失。末节点的话,就是目标网络ISP段的数据,且是最后一个节点。由于是最后一个节点,我们就无法判断后续的节点的丢包情况了。ICMP的流量限制一般是发生在中间的节点,而且一般要结合后续节点来判断是否是流量的限制。
因此像这种情况就一般不会是中间路由节点的ICMP流量限制了。比较可能的情况是末节点的服务器(可能)的网络配置问题。如果真实的数据包也无法抵达的话,那么可能是防火墙配置错误了。当然也可能是服务器直接配置了拒绝响应ICMP数据包。
住宅(residential)或者商业(business)路由器
% mtr --no-dns --report google.com HOST: deleuze Loss% Snt Last Avg Best Wrst StDev 1. 192.168.1.1 0.0% 10 2.2 2.2 2.0 2.7 0.2 2. ??? 100.0 10 8.6 11.0 8.4 17.8 3.0 3. 68.86.210.126 0.0% 10 9.1 12.1 8.5 24.3 5.2 4. 68.86.208.22 0.0% 10 12.2 15.1 11.7 23.4 4.4 5. 68.85.192.86 0.0% 10 17.2 14.8 13.2 17.2 1.3 6. 68.86.90.25 0.0% 10 14.2 16.4 14.2 20.3 1.9 7. 68.86.86.194 0.0% 10 17.6 16.8 15.5 18.1 0.9 8. 75.149.230.194 0.0% 10 15.0 20.1 15.0 33.8 5.6 9. 72.14.238.232 0.0% 10 15.6 18.7 14.1 32.8 5.9 10. 209.85.241.148 0.0% 10 16.3 16.9 14.7 21.2 2.2 11. 66.249.91.104 0.0% 10 22.2 18.6 14.2 36.0 6.5现象:第2节点(前几个)全丢包且没有IP地址。这种可能是本地ISP的配置的问题,问号的节点可能是本地的住宅网关。从丢包节点后续来看也都没有丢包。因此这个节点丢包应该只是不响应ICMP数据包而已。并且我认为之所以没显示节点IP可能也是因为节点拒绝响应ICMP的某些信息。
ISP路由器配置不当
如果目标主机无法正常访问,并且mtr报告中在某节点后的节点均是???的话,那么可能是最后一个有效节点或者其之后的某个路由配置有问题导致的。
root@localhost:~# mtr --report www.google.com HOST: localhost Loss% Snt Last Avg Best Wrst StDev 1. 63.247.74.43 0.0% 10 0.3 0.6 0.3 1.2 0.3 2. 63.247.64.157 0.0% 10 0.4 1.0 0.4 6.1 1.8 3. 209.51.130.213 0.0% 10 0.8 2.7 0.8 19.0 5.7 4. aix.pr1.atl.google.com 0.0% 10 6.7 6.8 6.7 6.9 0.1 5. ??? 0.0% 10 0.0 0.0 0.0 0.0 0.0 6. ??? 0.0% 10 0.0 0.0 0.0 0.0 0.0 7. ??? 0.0% 10 0.0 0.0 0.0 0.0 0.0 8. ??? 0.0% 10 0.0 0.0 0.0 0.0 0.0 9. ??? 0.0% 10 0.0 0.0 0.0 0.0 0.0 10. ??? 0.0% 10 0.0 0.0 0.0 0.0 0.0这边的???我觉得和上个例子的不太一样。上面住宅网关的???只是某个节点而已,并且存在丢包的情况。而这里的情况是从某个节点之后连续到末尾的所有节点,并且丢包和延迟的结果都一样都是0。应该是到第4节点就停止了(mtr都不知道后续节点是什么),而不是说其之后的节点不响应mtr的数据包。
也有一些比较明显的可以看出来的,例如路由器配置不当导致的路由死循环。
root@localhost:~# mtr --report www.google.com HOST: localhost Loss% Snt Last Avg Best Wrst StDev 1. 63.247.74.43 0.0% 10 0.3 0.6 0.3 1.2 0.3 2. 63.247.64.157 0.0% 10 0.4 1.0 0.4 6.1 1.8 3. 209.51.130.213 0.0% 10 0.8 2.7 0.8 19.0 5.7 4. aix.pr1.atl.google.com 0.0% 10 6.7 6.8 6.7 6.9 0.1 5. 12.34.56.79 0.0% 10 0.0 0.0 0.0 0.0 0.0 6. 12.34.56.78 0.0% 10 0.0 0.0 0.0 0.0 0.0 7. 12.34.56.79 0.0% 10 0.0 0.0 0.0 0.0 0.0 8. 12.34.56.78 0.0% 10 0.0 0.0 0.0 0.0 0.0 9. 12.34.56.79 0.0% 10 0.0 0.0 0.0 0.0 0.0 10. 12.34.56.78 0.0% 10 0.0 0.0 0.0 0.0 0.0 11. 12.34.56.79 0.0% 10 0.0 0.0 0.0 0.0 0.0 12. ??? 0.0% 10 0.0 0.0 0.0 0.0 0.0 13. ??? 0.0% 10 0.0 0.0 0.0 0.0 0.0 14. ??? 0.0% 10 0.0 0.0 0.0 0.0 0.0路由配置错误可能出现在第4或者第5节点,解决的办法只能尝试去判断错误节点的归属ISP,然后去联系处理。
ICMP比例限制
也就是流量限制。
root@localhost:~# mtr --report www.google.com HOST: localhost Loss% Snt Last Avg Best Wrst StDev 1. 63.247.74.43 0.0% 10 0.3 0.6 0.3 1.2 0.3 2. 63.247.64.157 0.0% 10 0.4 1.0 0.4 6.1 1.8 3. 209.51.130.213 0.0% 10 0.8 2.7 0.8 19.0 5.7 4. aix.pr1.atl.google.com 0.0% 10 6.7 6.8 6.7 6.9 0.1 5. 72.14.233.56 60.0% 10 27.2 25.3 23.1 26.4 2.9 6. 209.85.254.247 0.0% 10 39.1 39.4 39.1 39.7 0.2 7. 64.233.174.46 0.0% 10 39.6 40.4 39.4 46.9 2.3 8. gw-in-f147.1e100.net 0.0% 10 39.6 40.5 39.5 46.7 2.2比例限制此前已经说过了,会导致中间某个或者某几个路由节点出现丢包或者延迟的情况,但是不会影响后续的节点。ICMP协议仅仅是一个支撑/协助的协议,用来对网络进行探测的,而不是真实的数据流量。为了将有限的带宽更多地让给真实有效的数据,因此路由节点(尤其是骨干网)会针对ICMP做流量限制。
超时
超时的原因可能有很多。比如节点直接丢弃了ICMP数据包或者ICMP响应数据包返回失败了,那么在报告中就会呈现出“???”。
root@localhost:~# mtr --report www.google.com HOST: localhost Loss% Snt Last Avg Best Wrst StDev 1. 63.247.74.43 0.0% 10 0.3 0.6 0.3 1.2 0.3 2. 63.247.64.157 0.0% 10 0.4 1.0 0.4 6.1 1.8 3. 209.51.130.213 0.0% 10 0.8 2.7 0.8 19.0 5.7 4. aix.pr1.atl.google.com 0.0% 10 6.7 6.8 6.7 6.9 0.1 5. ??? 0.0% 10 7.2 8.3 7.1 16.4 2.9 6. ??? 0.0% 10 39.1 39.4 39.1 39.7 0.2 7. 64.233.174.46 0.0% 10 39.6 40.4 39.4 46.9 2.3 8. gw-in-f147.1e100.net 0.0% 10 39.6 40.5 39.5 46.7 2.2超时不是丢包的必要现象,即出现丢包不一定必须有超时的情况。超时可能是为了QoS使得路由器丢弃数据包或者ICMP响应数据包返回失败。
curl/wget
(1)作用
curl 是常用的命令行工具,用来请求 Web 服务器。它的名字就是客户端(client)的 URL 工具的意思。
curl是一个非常实用的、用来与服务器之间传输数据的工具;支持的协议包括 (DICT, FILE, FTP, FTPS, GOPHER, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, POP3, POP3S, RTMP, RTSP, SCP, SFTP, SMTP, SMTPS, TELNET and TFTP),curl设计为无用户交互下完成工作;
curl提供了一大堆非常有用的功能,包括代理访问、用户认证、ftp上传下载、HTTP POST、SSL连接、cookie支持、断点续传...。最常用是访问web接口和下载数据。
(2)下载文件
curl 在后面加一个-O选项表示保存返回结果到本地文件,如果不加,curl www.baidu.com 将返回结果直接显示到终端
-O
参数将服务器回应保存成文件,并将 URL 的最后部分当作文件名。# curl -O http://www.freelogovectors.net/wp-content/uploads/2016/12/ubuntu_logo.png % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 282 100 282 0 0 156 0 0:00:01 0:00:01 --:--:-- 156 # ll | grep ubuntu_logo.png -rw-r--r-- 1 root root 282 10月 29 16:49 ubuntu_logo.png
wget 不需要任何参数选项,所下载的文件将存放置当前目录下;
# wget http://www.freelogovectors.net/wp-content/uploads/2016/12/ubuntu_logo.png # ll | grep ubuntu_logo.png -rw-r--r-- 1 root root 95737 12月 13 2016 ubuntu_logo.png
查看网卡物理连接是否正常
[root@xuegod63 ~]# nmcli device status DEVICE TYPE STATE CONNECTION ens33 ethernet 连接的 ens33 virbr0 bridge 连接的 virbr0 lo loopback 未托管 -- virbr0-nic tun 未托管 --
常见的一些网络接口
eth0 ..... eth4 ... 以太网接口(linux6) waln0 无线接口 eno177776 以太网接口 (centos7) ens33 以太网接口(centos7) ens160 以太网接口(centos8) bond0 team0 网卡绑定接口 virbr0 虚拟交换机桥接接口 br0 虚拟网桥接口 lo 本地回环接口 vnet0 KVM虚拟机网卡接口
ifconfig
ifconfig命令被用于配置和显示Linux内核中网络接口的网络参数。
显示网络设备信息
# ifconfig eth0 Link encap:Ethernet HWaddr 00:50:56:0A:0B:0C inet addr:192.168.0.3 Bcast:192.168.0.255 Mask:255.255.255.0 inet6 addr: fe80::250:56ff:fe0a:b0c/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:172220 errors:0 dropped:0 overruns:0 frame:0 TX packets:132379 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:87101880 (83.0 MiB) TX bytes:41576123 (39.6 MiB) Interrupt:185 Base address:0x2024 lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:2022 errors:0 dropped:0 overruns:0 frame:0 TX packets:2022 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:2459063 (2.3 MiB) TX bytes:2459063 (2.3 MiB)
启动关闭指定网卡
# ifconfig eth0 down # ifconfig eth0 up
启用和关闭ARP协议
# ifconfig eth0 arp //开启 # ifconfig eth0 -arp //关闭设置最大传输单元
# ifconfig eth0 mtu 1500 //设置能通过的最大数据包大小为 1500 bytes
网卡操作
不同版本linux修改方法不同,先查看lsb_release -a 查看系统版本,在百度具体修改方法, 如下为ubuntu18.0以后版本修改方法。
(1)修改网卡IP地址
手工修改网卡配置文件
修改 /etc/netplan/50-cloud-init.yaml 文件 ,桌面版的是/etc/netplan/01-network-manager-all.yaml 修改为 # This is the network config written by 'subiquity' network: ethernets: ens33: addresses: [192.168.11.107/24] #ip地址 掩码 gateway4: 192.168.11.1 #网关 nameservers: # DNS addresses: [119.29.29.29, 8.8.8.8] version: 2 2 使得配置文件生效 $ netplan apply
(2)关闭、启动网卡
例1:启动关闭指定网卡: [root@xuegod63 ~]# ifconfig ens38 down [root@xuegod63 ~]# ifconfig [root@xuegod63 ~]# ifconfig ens38 up
host
host 命令:用来做 DNS 查询。
如果命令参数是域名,命令会输出关联的 IP;如果命令参数是 IP,命令则会输出关联的域名。
# host www.sina.com # host IP Address
whois
查询域名描述信息
whois sina 输出 domain: SINA organisation: Sina Corporation address: 20F Ideal Haza No. 59 Bei Si Huan Xi Road, Haidian District address: Beijing 100080 address: China
配置DNS
(1)DNS配置的配置文件
[root@xuegod63 ~]# cat /etc/resolv.conf # Generated by NetworkManager search cn nameserver 114.114.114.114
注:在centos5/6版本,配置DNS用这个文件。在centos6以后,直接在网卡配置文件中指定:DNS1=192.168.1.1
默认情况下,域名解析顺序: 本地hosts文件-》DNS查询
(2)域名解析顺序
是不是一定先解析hosts再解析DNS?
本机域名解析顺序由如下配置文件决定
[root@xuegod63 ~]# vim /etc/nsswitch.conf #查找以下内容 hosts #hosts: db files nisplus nis dns hosts: files dns myhostname #可以看到是先查看 files hosts文件,再查看DNS的
arping
arping干嘛用的?
arping主要干的活就是查看ip的MAC地址及IP占用的问题。
参数
-0:指定源地址为0.0.0.0,这个一般是在我们刚刚安装好系统,电脑还没配置好IP的时候
-a:Audible ping.这个当有reply回来的时候,你的电脑有喇叭的话,就会滴滴的叫
-A:Only count addresses matching requested address
-b:类似-0,指定源broadcast为255.255.255.255
-B:指定这个就相当于 arping 255.255.255.255
-c count:发送指定数量的arp包后,即停止退出
-d:这个比较重要,当局域网有IP占用的时候,可以指定这个参数,当有相同的IP的不同MAC地址reply的时候,arping会退出,退出码为1
-D:这个检测是否丢包的,当丢包的时候打印感叹号,正常的时候打印逗号-e:和-a相反,当没有reply的时候,会滴滴滴
-p:打开混杂模式,当前用户对mac无权限时,可以加上这个选
-r:输出的时候只打印MAC,写脚本的时候用得到,不用自己对结果awk了
-R:输出的时候只打印IP,和上面一样
-s MAC:指定源MAC地址
-S IP:指定源IP,设置了源IP,如果目标主机没有到源IP的route,则有可能收不到answer
-t MAC:指定目的MAC
-T IP:指定目的IP,
-i或-I interface:指定发送arp包的设备。不指定的话,默认为系统的第一块网卡
-q:表示不打印输出,写脚本不想打印输出的时候,应该用的到
-u:没啥大用,结果显示的时候,加这个参数和不加,index的显示形式不同
-v:打印详细的输出,默认打印的好像就是verbose
-w deadline:指定两个ping直接的时间间隔,单位为毫秒,默认为1秒
用法
讲了这么多,感觉大多数的参数都用不到吧。记住常见用法就OK了
用法1:查看某个IP的MAC地址
1
arping 192.168.131.155
用法2:查看某个IP的MAC地址,并指定count数量
1
arping -c 1 192.168.131.155
用法3:当有多块网卡的时候,指定特定的设备来发送请求包
1
arping -i eth1 -c 1 192.168.131.155
用法4:查看某个IP是否被不同的MAC占用
1
arping -d 192.168.131.155
用法5:查看某个MAC地址的IP,要在同一子网才查得到
1
arping -c 1 52:54:00:a1:31:89
用法6:确定MAC和IP的对应,确定指定的网卡绑定了指定的IP
1
arping -c 1 -T 192.168.131.156 00:13:72:f9:ca:60
用法7:确定IP和MAC对应,确定指定IP绑在了指定的网卡上
1
arping -c 1 -t 00:13:72:f9:ca:60 192.168.131.156
用法8:有时候,本地查不到某主机,可以通过让网关或别的机器去查。以下几种形式测了下都可以
1
2
3
arping -c 1 -S 10.240.160.1 -s 88:5a:92:12:c1:c1 10.240.162.115
arping -c 1 -S 10.240.160.1 10.240.162.115
arping -c 1 -s 88:5a:92:12:c1:c1 10.240.162.115
watch
作用:实时监测命令的运行结果,可以实时查看命令运行结果的变化。
参数:
-d 高亮显示变化的区域(高亮显示和上次结果的不同之处)
-n 指定指令执行的间隔时间(秒)
例1:每隔1秒高亮显示ens33网卡相关信息
[root@xuegod63 ~]# watch -d -n 1 'ifconfig ens33' enp1s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 114.255.88.234 netmask 255.255.255.0 broadcast 114.255.88.255 inet6 fe80::c600:adff:fe1c:7629 prefixlen 64 scopeid 0x20<link> ether c4:00:ad:1c:76:29 txqueuelen 1000 (Ethernet) RX packets 484610911 bytes 158914404782 (158.9 GB) RX errors 4 dropped 0 overruns 0 frame 2 TX packets 379390176 bytes 154153303943 (154.1 GB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 device memory 0x9d300000-9d37ffff 每秒显示ens33网卡信息,RXpackets接收到的数据包, TXpackets发送出的数据包
参考资料
Linux 路由表详解及 route 命令详解_kikajack的博客-CSDN博客_linux 路由表
windows下设置route 原理同linux下的route 具体命令不一样
Linux命令:traceroute命令(路由跟踪)_吾尝终日而思矣,不如须臾之所学也-CSDN博客_traceroute