linux网络基础
- 网络的重要性:
所有的系统都有网络!
我们的生活已经离不开网络。 - 运维生涯50%的生产故障都是网络故障!
- 查公网ip的方法
windows:百度IP即可
linux:curl ifconfig.me
论坛:鸿鹄论坛
通讯介质:
双绞线:网线 不超过100m,速度慢,工艺简单
光纤:几十公里,速度快,工艺复杂
无线
OSI七层模型
- 网络工程师
1.物理层:将通讯信号转换成二进制信号
2.数据链路层:(mac地址)用mac地址互相通信
3.网络层:(IP地址,路由)路由选择
公网ip:全世界唯一
私网ip:相对唯一 - 4.传输层: 确保数据传输的可靠性
tcp:可靠,速度慢
udp:不可靠,速度快
dns:udp 53端口
ssh:tcp 22端口
http:tcp 80端口
https :443端口
5.会话层 控制发包的数据
6.表示层 文件格式
7.应用层 应用程序使用
- 端口:让不同的应用程序,同时使用网络
tcp/ip协议 5层
物理层
数据链接层
网络层
传输层
应用层
一个数据包分成2部分,一个控制层面的数据,一个是应用层面的数据:控制层面只占一小部分,数据层面才占用大部分
数据传输过程
数据封装,解封装
应用层---》数据
传输层---》tcp报头+数据
网络层---》ip包+tcp报头+数据
数据链接层===》数据帧+ip包+tcp报头+数据
物理层===》将完整的数据包,由二进制转换成电信号
tcp三次握手,四次挥手
- 三次握手
第一次:客户端向服务器发送带有syn标识的序列号seq,seq=x
第二次:服务器向客户端发送带有syn标识的序列号seq和ack标识的确认号,seq=y,ack=x+1
第三次:客户端向服务端发送带有ack标识的确认号,seq=x+1,ack=y+1 - 四次挥手
第一次:客户端向服务端发送带有fin标识的终止序列号和确认序列号ack,seq=x,ack=y
第二次:服务端向客户端发送带有ack标识的确认号,seq=y,ack=x+1
第三次:服务端向客户端发送带有ack标识的确认号和带有fin的结束号,seq=y,ack=x+1
第四次:客户端向服务端发送带有ack标识的确认号,seq=x+1,ack=y+1
ip地址划分
- 公有地址
a类 1.0.0.1~126.255.255.254
b类 128.0.0.1~191.255.255.254
c类 192.0.0.1~223.255.255.254
d类 组播,VRRP协议,keepalive高可用 224
e类 科研 - 私有地址
A 10.0.0.0~10.255.255.255
B 172.16.0.0~172.31.255.255
C 192.168.0.0~192.168.255.255 - 本地回环地址
127.0.0.0~127.255.255.255 - 为了缓解ipv4地址不够用的问题
1:ipv6
2: NAT network address 转换
a:节约大量的公网ip地址
b:减少了网络攻击
子网掩码
192.168.11.0/24 === 192.168.11.0 netmask 255.255.255.0
192.168.11.0 网络号
192.168.11.1 起始地址
192.168.11.254 结束地址
192.168.11.255 广播地址
作用:决定一个网段的大小(可用ip数量的多少)
dns服务器
把域名解析成ip地址
dns记录的类型
A ip地址
CNAME 把你的域名解析到另一个域名 为网站添加cdn
MX 解析邮箱地址
NS dns.qstack.com NS == name server 授权dns
- dns解析的命令
dig
nslookup
host
arp协议
arp 数据链路层
ARP(Address Resolution Protocol)
把ip地址解析成mac地址arp要注意的
a:arp欺骗
b:如果局域网规模太大,广播风暴
tcpdump抓包
-i 指定网卡
port 指定端口号
-n 不把ip解析成主机名
-nn 不把端口解析成应用层协议
-c 指定抓包的数量
-S 不把随机序列和确认序列解析成绝对值
-W 将抓到的内容保存到那个文件
邮件发送
echo "内容" | mail 'test' test@oldqiang.com
修改网卡名称
ONBOOT=yes
BOOTPROTO=static
IPADDR=10.0.0.12
NETMASK=255.255.255.0 || PREFIX=24
GATEWAY=10.0.0.254
DNS1=223.5.5.5
1: 修改grub.cfg
方法1
vim /boot/grub2/grub.cfg
100行: net.ifnames=0 biosdevname=0
方法2
grubby --update-kernel=ALL --args="net.ifnames=0 biosdevname=0"
2:重命名网卡配置文件
mv /etc/sysconfig/network-scripts/ifcfg-ens32 /etc/sysconfig/network-scripts/ifcfg-eth0
3:修改ifcfg-eth0配置文件中设备的名字和网卡的名字
sed -i 's#ens32#eth0#g' /etc/sysconfig/network-scripts/ifcfg-eth0
4:reboot重启生效
安装时直接修改网卡名称
命令
-
nc/netcat
网络的瑞士军刀
服务端:[root@oldboy ~]# nc -l 8000
客户端:[root@oldboy65-zhl ~]# nc 10.0.0.200 8000
iftop:监控网络流量
traceroute:追踪数据包在网络上的传输时的全部路径
-n:直接使用ip地址,而不通过域名服务器
122.71.224.1 外网网关
222.35.254.253 北京市铁通
61.233.9.213 北京市铁通
61.237.126.242
61.237.127.238 中国铁通
202.97.63.246 广东广州电信
119.147.219.250 广东深圳电信
183.3.226.35 腾讯服务器
网络问题如何排查
- Xshell连不上的问题
1.检查网络适配器,是否禁用vmware的虚拟网卡
2.检查vmware net8和虚拟机的ip地址是否在同一个网段
3.检查vmware服务是否启动
4.检查虚拟机的网络适配器是否连接
5.在vmware控制台登录linux,查看是否有ip地址 - ping不通百度的问题
1.是否可以ping通外网的ip(223.5.5.5),能ping通说明是dns配置的问题
2.是否能ping通网关,router -n去查网关,如果可以ping通,你可能被上网行为管理器限制,还有一种可能,你配制了一个错误的网关 - 3.ping不通vmware网关的问题
1.重启vmware NAT服务
2.重启虚拟机的网络适配器
3.重启网卡systemctl restart network - 企业里上不了网
1.检查物理是否正常(网线)
2.ping网关
3.ping公网ip
4.ping baidu.com
5.ping自己的服务器
静态路由配置
- 临时配置
常用参数:
add 增加路由
del 删除路由
-net 设置到某个网段的路由
-host 设置到某台主机的路由
gw 出口网关 IP地址
dev 出口网关 物理设备名
route add -net 10.0.0.0/24 gw 10.0.0.12
上述配置在重启网络服务或者重启系统时都会失效
- 永久配置
创建一个配置文件/etc/sysconfig/network-scripts/route-eth0
10.0.0.24/24 via 10.0.0.12 dev eth0(可用ip router查看直接复制)
重启网卡生效