网络知识小记

不定时更新

Posted by 婷 on June 4, 2022 本文总阅读量

前言

不定时更新,跟网络相关的一些小知识

之前在另外一篇文章也有介绍过其他的网络工具小知识,两篇可以结合一起看看

修改主机名字

主机名字是什么,比如这样

image-20220604170556941

这样

image-20220604170632388

  • 临时修改

    host 新主机名字
    
  • 永久修改

    vim /etc/hostname
    #直接输入你的新主机名字即可
    

子网掩码

明确两个概念:

  • IP地址 = 网络地址 + 主机地址
  • IP地址 & 子网掩码 = 网络地址

子网掩码只有一个功能,用来对比两个IP地址是不是来自同一个子网,也就是当一个IP地址跟子网掩码做与运算的时候分割出网络地址

dns

DNS域名解析服务:把域名或者主机名(这个可以自己设置)转化成IP地址。

LinuxWindows都有一个用来配置ip地址和其对应主机名的文件

Windowsc/Windows/system32/drivers/etc/hosts

image-20220604171228907

Linux/etc/hosts,以Linux来讲,这个文件,比如我的ubuntu,有一条规则是127.0.1.1 copyright-Vostro-3559也就是说127.0.1.1copyright-Vostro-3559是匹配的,所以在我们ping copyright-Vostro-3559会自动帮我们解析

image-20220604143743088

比如我的服务器也是一样的道理

image-20220604173317674

现在可以往/etc/hosts文件中增加一个对应关系,比如我的小电脑现在的IP是192.168.1.103,文件修改前:

image-20220604173525906

修改后

image-20220604173908625

ping mytinypc -c 5

image-20220604173947343

netstat

这个命令主要用于查看当前网络的状态信息,介绍下两个常用的选项

  • netstat -anp:可以查看端口占用情况

    image-20220604175120250

可以看出其实-anp输出的有两个大的内容,一个是Active Internet connections (servers and established),一个是Active UNIX domain sockets (servers and established)

从黄框跟橙色框中提取出来下面两行,可以看到是192.168.1.1006423664237两个端口连接到我们本机的22端口,也就是SSH

tcp        0    128 192.168.1.103:22        192.168.1.100:64236     ESTABLISHED 777/dropbear
tcp        0      0 192.168.1.103:22        192.168.1.100:64237     ESTABLISHED 778/dropbear

其中Recv-Q表示连接到这个套接字的用户,还未拷贝的字节数,内核已把数据接收到的tcp的缓冲区,但还未被应用程序调用read读走。Send-Q应用程序已调用write写进tcp缓冲区并且已经发送到接收端但接收端还未确认的字节数。

  • netstat -r:显示核心路由表

    image-20220604210711329

telnet

用法:telnet IP port,一般可以用此命令搭配前面的netstat -anp可以排查一些端口问题

curl

curl -X GET https://www.baidu.com

image-20220604211849380

将上面的输出,复制到一个空白的html文件

image-20220604212916168

打开查看

image-20220604212051870

应该是复制粘贴的时候格式不太对,不过大概就是演示一下,意思意思一下

防火墙

  • 防火墙技术是通过有机结合各类用于安全管理与筛选的软件跟硬件设备,帮助计算机网络于其内,外网之间构建一道相对隔绝的保护屏障,以保护用户资料与信息安全性的一种技术(比如有时候碰到说可以ping得通,但是nfs或者tftp无法使用,大概率是防火墙规则限制的问题)

  • 查看防火墙状态 :sudo ufw status

    image-20220604214046077

  • 启用防火墙:sudo ufw enable

    image-20220604214225091

  • 关闭防火墙:sudo ufw disable

    image-20220604214256606

#允许 53 端口
$ sudo ufw allow 53 

#禁用 53 端口
$ sudo ufw delete allow 53

#允许 80 端口
$ sudo ufw allow 80/tcp

#禁用 80 端口
$ sudo ufw delete allow 80/tcp

#允许 smtp 端口
$ sudo ufw allow smtp

#删除 smtp 端口的许可
$ sudo ufw delete allow smtp

#允许某特定 IP
$ sudo ufw allow from 192.168.254.254

#将某IP的规则删除
$ sudo ufw delete allow from 192.168.254.254

当然这里介绍的只是ufw相关的用法,跟防火墙相关的还有iptables命令

linux 2.4内核以后提供了一个非常优秀的防火墙工具:netfilter/iptables,他免费且功能强大,可以对流入、流出的信息进行细化控制,它可以 实现防火墙、NAT(网络地址翻译)和数据包的分割等功能。netfilter工作在内核内部,而iptables则是让用户定义规则集的表结构。

但是iptables的规则稍微有些“复杂”,因此ubuntu提供了ufw这个设定工具,以简化iptables的某些设定,其后台仍然是 iptables。ufw 即uncomplicated firewall的简称,一些复杂的设定还是要去iptables。

路由

  • 路由器中路由表中的路由记录可以有动态路由和静态路由两种。动态路由是根据路由协议自动计算生成的,而静态路由是由人工配置的。
    • 默认路由是静态路由中的一种,是由人工配置的,表示当 一个路由转发请求在路由表中匹配不到路由规则时,被默认执行的路由策略。默认路由,也称为缺省路由或默认网关。静态路由是不需要CPU处理时间同样也不占用线路带宽,但是这个路由需要对终端的PC机进行配置网关来实现,工作量是比较大的。
    • 动态路由可以自动寻找最优路径,邻居路由也可以通过学习来获得路由表,但是动态路由占用线路带宽和CPU处理时间。

输入route -n查看

image-20230826210636794

图中的Flags表示当前的网络状态

  • U :Up运行的状态
  • G :表示这是一个网关路由器
  • H :表示这个网关是个主机
  • ! :表示当前这个路由已经禁止

添加默认路由,删除默认路由

route add default gw xx.xx.xx.xx
route del default

下面就是默认网关,表示当目的地址没有匹配到任何一条路由规则时,就会被发送到缺省路由。这里表示发送到172.17.32.1,且数据包从eth0发送出去。

0.0.0.0         172.17.32.1     0.0.0.0         UG    0      0        0 eth0

这条表示如果是数据包的目的地址是在172.17.32.0/20范围内,就不需要静态路由了,因为目的地址和eth0在同一个网段中,直接通过ARP协议获取目的机器物理地址,通过上联交换机或者直接转发即可,不需要路由器或网关的转发。其中Gateway=0.0.0.0就表示不需要指定网关。

172.17.32.0     0.0.0.0         255.255.240.0   U     0      0        0 eth0

ip

ip命令可以查看系统路由,网络设备,设置策略等功能。

显示网络设备信息

ip addr show

image-20230917173325970

修改mac地址

ip link set eth0 address 12:34:56:78:9a:bc

如果是有vlan的网卡,用ip工具配置eth0.4网卡的mac地址,可以不用down网卡

down up网卡

ip link set eth0 down/up

增加或者删除ip信息

ip address add 192.168.178.160/24 dev eth0
ip address del 192.168.178.160/24 dev eth0

ip命令给网卡添加别名,这个命令很好用的,可以实现单网卡多IP,两个网络的包都能接受到

ip  address add 192.168.178.160/24 dev ens33 label ens33:1

ip检查arp缓存,显示网络邻居的信息,检查MAC地址信息

ip neighbour

image-20231015234648770

常见问题排查思路

查看某端口是否可以访问

如果是被访问的主机,可以用netstat -anp,如果是要访问其他的主机的主机,可以用telnet查看对方端口是否可以访问

ping得通但是无法tftp传输文件

查看是否是有一端防火墙设置了相关的规则

ping不通

三个方面,一个是硬件,一个是对端是否开了防火墙(这个时候可以反ping下),还有一种如果是远程的网络可以用traceroute看看是从哪里寄了

网络延迟大

可以输入netstat -anp或者ss(这个更佳,在网络很卡的时候比较轻量级)看看队列是否有数据堆积,或者是traceroute查看是哪里造成的延迟,或者是iftop查看流量

参数调优

~ # echo 'net.core.wmem_max=4194304' >> /etc/sysctl.conf
~ # echo 'net.core.rmem_max=12582912' >> /etc/sysctl.conf
~ # echo 'net.ipv4.tcp_rmem = 4096 87380 4194304' >> /etc/sysctl.conf
~ # echo 'net.ipv4.tcp_wmem = 4096 87380 4194304' >> /etc/sysctl.conf
~ # sysctl -p
net.core.wmem_max = 4194304
net.core.rmem_max = 12582912
net.ipv4.tcp_rmem = 4096 87380 4194304
net.ipv4.tcp_wmem = 4096 87380 4194304
net.core.wmem_max = 4194304
net.core.rmem_max = 12582912
net.ipv4.tcp_rmem = 4096 87380 4194304
net.ipv4.tcp_wmem = 4096 87380 4194304
net.core.wmem_max = 4194304
net.core.rmem_max = 12582912
net.ipv4.tcp_rmem = 4096 87380 4194304
net.ipv4.tcp_wmem = 4096 87380 4194304
net.core.wmem_max = 4194304
net.core.rmem_max = 12582912
net.ipv4.tcp_rmem = 4096 87380 4194304
net.ipv4.tcp_wmem = 4096 87380 4194304
~ #
~ # cat /proc/sys/net/core/wmem_max
4194304
~ # cat /proc/sys/net/core/rmem_max
12582912
~ #

广播

  • 广播数据包被限制在广播域中
  • IPv6中,广播的报文传输方式被取消
  • 一个vlan是一个广播域

相关链接