第6节. 网络配置和故障拍错

netstat

那啥ss可能会更好些,netstat也学一下吧,好像mac里用的也是netstat这个命令

image-20220316120021633

image-20220316120247381

套接字socke分2种

1、ip+port,tcp或者udp都是这种;

2、unix domain socket,这种就表现为socket文件。

image-20220316121054509

s开头就是socket文件

这类的socket文件也能实现和tcp/ip 这种Ip+port的类似的通讯效果,可以实现多个进程之间的网络通讯,问题来了:是本地还是远端呢?

1、两个程序如果处于不同的主机也即是远端通讯,可以使用tcp/udp的socket--ip地址加端口号;这种通讯存在一个封装解封装问题。

2、如果处于本地--同一台机器,就没必要封装解封装的过程了;可以考虑采用这种unix的socket,两个程序想通讯,就把数据扔给socket文件,通过它中转就行了。

netstat说明

-n 不解析地址为域名,端口为服务,这个是常用的

-t和-u就是tcp和udp咯

-l是看监听的,不是看ESTABLISH的。👈

image-20220316121721515

这就是看打开了(监听了)哪些tcp/udp的端口。

1、注意上图,TCP是有状态的,所以显示LISTEN;而UDP是无状态的 所以没有显示什么LISTEN字样。

2、如果发现有些端口不是我们需要的,可以找到该端口对应的应用程序,然后卸载掉。怎么找呢,就是加个-p或者👇

如果知道端口对应的APP

lsof

image-20220316122115741

可见6000这个端口是x11这个图形界面软件在用。

image-20220316122404758

netstat -p或者ss -p,当然要辅以其他选项

image-20220316122505358

切到init3就是纯字符界面,就没有x11了,

image-20220316133808962

netstat -e 是extend,会显示节点编号inode

image-20220316134244503

netstat -ntua ,a就是监听和连接的都会显示

image-20220316134336341

常用组合

image-20220316134616695

image-20220316135115070

这个还挺不错,我是说netstat -nr,它可以看到MSS和window,MSS肯定就是4层传输单元了MTU\MSS一类的嘛,window就有点不能理解,TCP的滑动窗口也不至于写到路由表里吧,而且窗口还是动态的。网上搜一把没找到,转头进入man netstat 然后" + -r"看到👇

image-20220316135517234

然后进入route的man帮助

image-20220316135555354

你看他这个route只有一个8.gz的man,所以不需要man 8 route,哈哈我是不是太无聊了

image-20220316135635706

瞬间找到了,还真是窗口,不过是AX.25的,所以那啥,MSS再看看搞不好也不是动态测试的,而是设置的

image-20220316135730039

默认就不显示咯,MTU1500嘛MSS就是|DA|SA|TYPE/LENGHT|DATA|FSC

DATA: |IP|TCP|DATA| MSS=1500-20-20=1460,一般就这么算吧,不过遇到ASA拨号的时候,L2的DATA就是|da|sa|type|pppoeHead|pppHead|ipHead|tcpHead|mss,此时的MTU=1500-6-2=1492这个是对IP层的整个报文限制了,所以MTU是L2对L3的一个限制,你在ASA上要敲的MTU就是1492,然后MSS就是1492-20-20=1452。注意哦MTU是二层对IP层(L3)的一个限制,限制的是整个IP报文长度,限制产生的效果就是IP层会自己去分片,怎么分的上一篇已经讲过了ping -l 1502的分片计算有讲。而MSS的源头也是MTU,但是MSS是TCP里的DATA的上限,这一点不可类比于IP的整体长度限制。恩其他还有PMTU discovery地理发现贫道~恩没有广告~所以在有电视那会还是基本爱调在这个台,哎~俱往矣,属温馨伐木累还看还看还看还看555...哈哈哈我能把人气成这样也是我占着理拿着需,唉得饶人处且饶人啊,别人也是关心你。

image-20220316142340231

我就直接引用别人的博客了https://zhuanlan.zhihu.com/p/139537936

https://blog.csdn.net/lepton126/article/details/70810316

netsta -i 查看接口统计信息,访问量大不大

image-20220316143309667

动态观察的方法

image-20220316143550469

wathc -n1 就是1s刷新一次 netstat -i这个命令的结果

image-20220316143626757

image-20220316143731732

ping嘛就是1sping一个,但是-s 65507后同样也是1s ping一个,但是这一个要切片成N个咯,所以实际上1s发出的包就是N倍,所以此时再去看对端的watch -n1 netstat -i就会发现RX-OK增长的很快。

image-20220316143856610

还可以更快,就flood的ping

image-20220316143935202

这回RX-OK的增长就更快快快了

image-20220316144019565

image-20220316144049590

大包分片+ -f,够了哦~

image-20220316144342883

这是WIFI,ping -s 打到了32Mbps

去看看有线

image-20220316144543167

哈哈,瞬间打到250Mbps,1G的带宽也就是950Mbps吧,人家要叫了,哈哈。

这种ping -f打出来没有iperf的大,iperf同样的源目1G可打满950M的。

一些个性的命令写法

image-20220316145519698

image-20220316145535427

敲入:watch -n1 netstat -Ieth0

image-20220316145610678

image-20220316145743557

ip命令

ip命令很强,用来替代ifconfig的

image-20220316150420845

ip 后面加 选项,再加 操作对象;操作对象有 link | addr | 等等👆

在centos6或centos7的最小化安装都不能tab补齐,可以通过安装插件bash-completion来实现,centos7没这个问题。

image-20220316150538000

image-20220316150547077

image-20220316150713322

yum完后exit重新登入一下,此时就可以tab两下补齐了

image-20220316150828592

image-20220316150946032

ip命令主要控制的是link数据链路层、addr网络层、route路由

image-20220316151042090

查看MAC地址、网卡是否启用

MAC地址在网卡的rom芯片里的,真正要改需要借助设备烧入。

所谓修改就是修改配置文件了,关键词MACADDR

image-20220316162128567

image-20220316162149426

发现没变~

image-20220316162318170

image-20220316162331325

为啥呢?

注意上上图的提示消息

image-20220316162445222

由于IP地址用着呢,所以MAC地址也不给你变,restart可能不等价down + up哦,down一下IP地址就不是already in use了,试试看,并不是!

image-20220316162614408

image-20220316162624671

image-20220316162643288

小改动一下MAC,试试

image-20220316162835144

image-20220316162932458

这会就改过来了

真正的原因可能是11打头的,HCIA里有讲,11:22:33:44:55:66正中组播地址。

image-20220316163327364

尝试改一下 验证下

image-20220316163539499

image-20220316163603795

所以没点NA的知识,还真改不了MAC地址。

ip addr查看网络层

image-20220316164052789

这里也能看MTU,支持广播、组播

ip addr 添加地址

image-20220316164706617

这个不是子接口嘛?

这种方式加的second IP,ifconfig看不到,ifconfig人家加的是子接口形式的

image-20220316164756935

所以子接口+vlan就是我们网工所熟悉的路由器的子接口

然后second IP或者叫sub ip就是第二IP,就好比linux里的ip addr add 添加的地址咯。暂时这里理解先。


使用ifconfig给网卡加子接口,也叫什么别名,

image-20220316165033512

man ifconfig可见👇

image-20220316165112163

人家叫别名,叫second address,不叫子接口,哈哈,但是我觉得加上vlan就是子接口了,ip a才是正儿八经的second address。

用ifconfig看下

image-20220316165248802

然后 ip a也能看到,

image-20220316165218876

结论:ifconfig看的没有ip a全,怪不得推荐Ip a呢。ifconfig 创建的网卡别名 ,ip a可看,ip a创建的second address ifconfig看不到。

注意上图1.1.1.1/24 scope global eth1

2.2.2.2/24 brd 2.2.2.255 scope golbal eth1:2这种别名。

然后ip a a也就是ip addr add也能添加ifconfig的别名

image-20220316165734011

上图3.3.3.3加成了ip a 的second 接口没有加成ifconfig 的别名,修正👇

image-20220316165910003

ip a有两种second address,①一种式非子接口②一种是子接口--也就是别名--这种ifconfig可查

image-20220316170017477

注意广播地址ip a配置的,默认是0.0.0.0,哈哈这TM就不是个广播地址啊。

去查一下ip a里的两个second ip的说法

image-20220316170530467

image-20220316170908329

原来这个就是ip a为了兼容以前的ifconfig而设计的。

image-20220316171212629

写到这,发现这一篇其实也可以直接就扔几个命令这就行了,哈哈,算了写完吧,好歹后面看起来舒服些。

image-20220316171305983

清除所有地址

image-20220316171328952

image-20220316171545104

理解下scope

image-20220316171825567

image-20220316171639804

这里其实好理解link-local 对吧,就是Ipv4 和Ipv6 link-local,一个意思。TTL=1嘿嘿。v4和v6的区别就是v6的link-local在下一跳中起作用的,但是v4的link-local实际上没有应用场景--要说有就是网线直连169.x.x.x就通了,哈哈。

image-20220316171848286

hosts是loopback口用的,主机地址,一般/32,也能对外发布路由互通,但是这里更多指的是127.0.0.0/24的回环检测地址,就是真正的本机可用了。所以上图的host更多的指的是127这种地址。

下面看看授课老师大佬的讲解,这就厉害咯

1、global是内核级的

image-20220316172438267

这个就让我想到ASA 和 router的区别(在ping背向网卡地址的时候),上图的ping在路由器上行,但是在防火墙上就不行,哈哈,可能就是用的link地址特性。

言归正传,上图这种能通,是因为IP1和IP2表面上是配置在网卡上,其实是工作在内核级别的。scope global就是这个意思。

2、link,如果IP2改为scope link,上图左边进来的ping IP2 就不通了。

3、host,网络访问过来的都是不通的,只能自己访问了就。

我们曾今做的loopback为1.1.1.1/32,一般思科的环回口对吧

image-20220316173219722

其实linux一旦你改了地址,他就是global咯,所以主机地址这个称呼

主机地址这个称呼

1、在linux里指的是本地能通,网络不可能通的127.0.0.0/24

2、在华为、华三、思科里面指的是1.1.1.1/32,2.2.2.2/32这种32位主机地址,但在linux看来他们其实都是工作在内核的global地址。

实验看看

image-20220316175814694

诺,scope不是你想改就能改的。所以实验中止~继续整理markdown。

用ip命令修改网卡名称

在centos6上是修改的文件,然后卸载重装了网卡驱动,上文第5节已讲

image-20220316180227715

在centos7上就没有这个文件了,怎么改呢

image-20220316180354855

先禁用网卡

image-20220316180454483

image-20220316180522112

image-20220316180548426

这样就改好了。

ip route

添加ip route add

image-20220316183657110

删除ip route del

image-20220321134705667

加默认路由ip route 0.0.0.0/0 via a.b.c.d或者👇

image-20220321134749501

两个默认,哪个优先

image-20220321135010918

这里还是要注意下metric,不是我们网络工程师常规的默认cost值咯。

手动修改metric---通过man ip route 或者 ip route add help可得

image-20220321135337805

image-20220321135405615

image-20220321135534365

image-20220321135556151

想实现ECMP等价负载均衡,结果发现linux默认不让

image-20220321135730079

SS命令

image-20220321141521031

ss和netstat一样,但是效率高,在服务器访问量大的时候SS显示结果的速度更快,还带一些统计信息,过滤条件比netstat更加丰富。

tcp有11个有限状态机,ss可以显示指定的tcp状态,或者端口号

image-20220321141723829

image-20220321141908407

orhpaned孤儿连接,

还有什么孤儿进程,

ss -nta \ ss =atn 此处顺序无要求

image-20220321142042978

ss -nt 表示正处于连接状态的

image-20220321142146228

查询并发连接数最多的主机

image-20220321142514157

image-20220321143106089

image-20220321143431164

然后sed的做法👇

image-20220321144702049

sed的分组用法,其实就是python里的格式化字符串。

image-20220321144843366

image-20220321145208304

image-20220321145307509

修改主机名

centos6的修改方法

/etc/sysconfig/network + hostname

image-20220321163312358

改成image-20220321163550246

然后hostname 配置下,再退出下

image-20220321163654242

还有一个地方也要改,就是/etc/hosts文件里👇

image-20220321163750986

本地的DNS解析用的,hostname一样要写到这里。

dns优先级

默认是hosts文件优先级比dns查询 要高,可以修改 方法如👇

/etc/nsswitch.conf

image-20220321164034050

image-20220321164136012

files指的就是/etc/hosts文件,它在dns查询之前,调一下个就dns查询优先了

image-20220321164222641

此时ping xxx.com就不是hosts里写的,而是dns请求的了。

domain name

image-20220321164324775

此时ping www是不会自动给你补上后缀的

image-20220321164505505

需要自动补充 .xxxx.com

可以在这里添加domain:👇

image-20220321164442121

改为默认路由送出接口的网卡配置文件后,重启网络服务

image-20220321164913138

上图OK的,也可以下图这样

image-20220729120317186

image-20220321165458323

USERCTL是普通用户是否可以启用禁用网卡

image-20220321165843629

这里的HWADDR是真实的MAC地址,真实的MAC地址啥,这里就填啥,

上文改的是MACADDR

两种方法索引 ifcfg-xxx是哪块网卡就看配置文件里的DEVICE或者HWADDR

image-20220321170120055

1、DEVICE=eth1

2、HWADDR=XXXXX 这里写真实的eth1的MAC就行了,两种写一种就行了。上图DEVICE=ethX可以删的

image-20220321170307519

image-20220321170400474

image-20220321170453487

image-20220321170526470

至于反向,这个后面单独讲DNS的时候就知道了,要有反向的mapping的

路由表的静态文件

image-20220321170644643

IFACE是实际的接口名

一般就用10.0.0.0/8 via 172.16.0.1 这种

这里的网卡配置的知识,还是书上整理的比较到位

前面的网卡别名也就是子接口

image-20220321170927674

这些也存不住的,需要单独写一个网卡配置文件

image-20220321171102393

image-20220321171916341

image-20220321172027428

image-20220321172050047

上图提示1.1.1.1已经用在了eth1上了,好奇怪,改成1.1.1.199再次重启,提示归提示,但是已经生效了

image-20220321172347835

问题-一块网卡上的多个地址获取方式不同行不?

一块网卡的子接口是DHCP的,物理口是手动配置的,或者还有子接口之间是不同的方法,或者反过来。这样行不行?

windows里好像不行;
linux里可以做到-物理口是dhcp、接口别名是手动配置,反之不行。

实验

1、修改eth1主接口位DHCP

image-20220321172759390

一但改成DHCP,下面的IPADDR\PERFIX\GATEWAY\DNS1和2都失效

2、发现可以做到物理接口dhcp、子接口手动的效果。

image-20220321172940581

3、反过来,物理网卡使用static,子接口也就是别名使用dhcp是不行的。

image-20220321173103844

👆物理网卡,别名网卡(子接口)👇

image-20220321173147799

重启后发现不行,物理接口静态OK的,子接口依然是下面的手动配置的IP--它根本不认BOOTPROTO关键字,要是DHCP起作用了,就不会拿到1.1.1.199这个IP。

image-20220321173343362

上面虽然拿centos6举例,但是很多都是通用,一些主机名的改法还有NetworkManager的禁用是6独有的。其他无所谓6 7的

image-20220321173823151

Copyright 🌹 © oneyearice@126.com 2022 all right reserved,powered by Gitbook文档更新时间: 2024-07-28 14:47:38

results matching ""

    No results matching ""