前言
不定时更新,跟网络相关的一些小知识
之前在另外一篇文章也有介绍过其他的网络工具小知识,两篇可以结合一起看看
修改主机名字
主机名字是什么,比如这样
这样
-
临时修改
host 新主机名字
-
永久修改
vim /etc/hostname #直接输入你的新主机名字即可
子网掩码
明确两个概念:
- IP地址 = 网络地址 + 主机地址
- IP地址 & 子网掩码 = 网络地址
子网掩码只有一个功能,用来对比两个IP地址是不是来自同一个子网,也就是当一个IP地址跟子网掩码做与运算的时候分割出网络地址
dns
DNS
域名解析服务:把域名或者主机名(这个可以自己设置)转化成IP地址。
Linux
跟Windows
都有一个用来配置ip
地址和其对应主机名的文件
Windows
是c/Windows/system32/drivers/etc/hosts
Linux
是/etc/hosts
,以Linux
来讲,这个文件,比如我的ubuntu
,有一条规则是127.0.1.1 copyright-Vostro-3559
也就是说127.0.1.1
跟copyright-Vostro-3559
是匹配的,所以在我们ping copyright-Vostro-3559
会自动帮我们解析
比如我的服务器也是一样的道理
现在可以往/etc/hosts
文件中增加一个对应关系,比如我的小电脑现在的IP是192.168.1.103
,文件修改前:
修改后
ping mytinypc -c 5
netstat
这个命令主要用于查看当前网络的状态信息,介绍下两个常用的选项
-
netstat -anp
:可以查看端口占用情况
可以看出其实-anp
输出的有两个大的内容,一个是Active Internet connections (servers and established)
,一个是Active UNIX domain sockets (servers and established)
。
从黄框跟橙色框中提取出来下面两行,可以看到是192.168.1.100
的64236
跟64237
两个端口连接到我们本机的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
:显示核心路由表
telnet
用法:telnet IP port
,一般可以用此命令搭配前面的netstat -anp
可以排查一些端口问题
curl
curl -X GET https://www.baidu.com
将上面的输出,复制到一个空白的html
文件
打开查看
应该是复制粘贴的时候格式不太对,不过大概就是演示一下,意思意思一下
防火墙
-
防火墙技术是通过有机结合各类用于安全管理与筛选的软件跟硬件设备,帮助计算机网络于其内,外网之间构建一道相对隔绝的保护屏障,以保护用户资料与信息安全性的一种技术(比如有时候碰到说可以
ping
得通,但是nfs
或者tftp
无法使用,大概率是防火墙规则限制的问题) -
查看防火墙状态 :
sudo ufw status
-
启用防火墙:
sudo ufw enable
-
关闭防火墙:
sudo ufw disable
#允许 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
查看
图中的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
修改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
常见问题排查思路
查看某端口是否可以访问
如果是被访问的主机,可以用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
是一个广播域