目录
1、centos的网络配置
1.1 静态Ipv4配置方法:
首先在 /etc/sysconfig/network-scripts/
找到网卡 ifcfg-你的网卡名字 (eg. ifcfg-ens192
)
然后 vi ifcfg-ens192
进去修改网卡配置,这里采用静态IP方式(动态Ip更简单),具体修改选项如下:
BOOTPROTO=static
ONBOOT=yes
IPADDR=10.0.21.215
NETMASK=255.255.255.0
GATEWAY=10.0.21.254
DNS1=8.8.8.8
再去修改/etc/sysconfig/network
里面的内容
NETWORKING=yes
GATEWAY=10.0.21.254
(不同房间的网关不一样)
最后重启网络服务即可service network restart
然后再试一试ping得通自身/网关/百度不。
配置文件举例如下:
TYPE=Ethernet
BOOTPROTO=static #将原来的dhcp改为static
DEFROUTE=yes
#这里改为eth0 或者 ens33 比如:NAME=ens33
NAME=ens33
#这个不知道 就可以不用设置
#UUID="69b5a74b-c46f-48e0-a2a5-959721dff85e"
#UUID=<UUID>
DEVICE=ens33 #这里改为eth0 或者 ens33 比如:DEVICE=ens33 可以不用这行
ONBOOT=yes
IPADDR=192.168.1.100 # 你要设置的固定 IP 地址
NETMASK=255.255.255.0 # 子网掩码
GATEWAY=192.168.1.1 # 网关 IP 地址
DNS1=8.8.8.8 # 首选 DNS 服务器
DNS2=8.8.4.4 # 备选 DNS 服务器
1.2 动态Ipv4的设置方法
TYPE=Ethernet
BOOTPROTO=dhcp #关键
DEFROUTE=yes
NAME=ens33
DEVICE=ens33 #这里改为eth0 或者 ens33 比如:DEVICE=ens33 可以不用这行
ONBOOT=yes #关键
1.3 常见ping不通网关的原因:
1、服务器的实际物理网口位置标号 和 服务器操作系统 /etc/sysconfig/network-scripts/
的文件名不匹配(如物理网口eth0对应的是ifcfg-eth4
)
解决办法:可以通过ethtool -p eth0
查看某个网口是否连接上(闪灯)。
貌似ip a
命令显示结果中的UP
和DOWN
是/etc/sysconfig/network-scripts/
配置文件里面的ONBOOT
的值
2、配置的eth0
和网桥br0
绑定了起来(绑定了起来后,配置了eth0
ip没用)
检查办法:bridge link
查看
解决办法:本文下面
3、如果报错no link present Check cable
,那么可以在配置文件的最后一项加上 check_link_down(){ return 1; }
-
例如:
ONBOOT=yes #其他的改成no,这样service network restart 更快些 NM_CONTROLLED=yes BOOTPROTO=dhcp check_link_down(){ return 1; }
4、其他参考:《虚拟机ping不通网关之大坑》
1.4 查看操作系统版本
cat /etc/issue (适用所有发行版本) #如果是防火墙的话,那么可能会出现 CAPSHEAF_FIREWALL
cat /proc/version
uname -a
1.5 查看一台服务器的所有服务
netstat -nl
1.6 猜测所在房间网关ip
linux服务器是traceroute -d 10.0.22.2
windows主机是tracert -d 10.0.22.2
-d选项:不将IP地址解析成主机名,因此路由追踪速度快很多。
-h选项:说明路由的最大跳数,默认是30跳。
-w选项:说明等待每一个ICMP响应报文的时间,默认4s,如果接收超时,则显示星号*。跳数和等待时间,使用默认值即可,所以平时一般都不需要添加这两个选项。
-j选项:说明ICMP报文要使用IP头中的松散源路由选项,后面是经过的中间节点的地址或主机名字,最多9个,各个中间节点用空格隔开。
结果:
C:\Users\180>tracert -d 10.0.22.2
通过最多 30 个跃点跟踪到 10.0.22.2 的路由
1 7 ms 3 ms 3 ms 10.0.21.254 #这个就是网关
2 1 ms 1 ms <1 毫秒 10.0.22.2
跟踪完成。
2、 Ubuntu的网络配置(静态ipv4)
重要参考:《运维系列(亲测有效):如何在 Ubuntu 22.04 上配置静态IP地址?》
$ ip link # Step1. 检查您的网络接口名称
$ sudo vim /etc/netplan/00-installer-config.yaml #Step2.编辑网络配置文件 (可以先备份一份)
# This is the network config written by 'subiquity' Step3. 配置静态IP地址
network:
ethernets:
ens160:
dhcp4: false
addresses: [10.24.0.83/16]
gateway4: 10.24.254.254
version: 2
$ sudo netplan apply # Step4. 重启服务。类似centos的service network restart
$ ip address show ens160 # 查看ip地址,万一没有ifconfig命令的话
问题1:ping不通百度
参考:《Ubuntu 20.04 server不能ping,提示“Temporary failure in name resolution”的解决方法》
最终解决:修改/etc/netplan/00-installer-config.yaml
,添加上域名
# This is the network config written by 'subiquity'
network:
ethernets:
ens160:
dhcp4: false
addresses: [10.24.0.83/16]
gateway4: 10.24.254.254
nameservers:
addresses: [114.114.114.114,8.8.8.8] #注意‘:’和‘[’之间有个空格
version: 2
问题2:netplan apply时报错Error in network definition: expected mapping (check indentation) addresses:[114.114.114.114, 8.8.8.8]
最终解决:address:[空格]
[144…(冒号后面应该有个空格)
在ubuntu安装界面中配置ip地址:
subnet:确实是子网掩码,对应我们的,就是10.24.0.0/16
问题3:没有ping命令
重要参考:Linux下安装ping命令
sudo apt update
sudo apt install -y iputils-ping # ubuntu
sudo yum install -y iputils # centos
安装不起,可能是没有连外网。
问题4:没有ifconfig
命令
- 用
ip a
命令查看ip - 安装(重要参考)
sudo apt install net-tools # ubuntu安装
3、2024.6.14 解决ping不通网关
最近配置硬件防火墙,系统是centos系统。按照之前的配置方法进行配置,配置了eth0
的静态ip/动态ip,虽然ping得通自身,但是ping不通网关。(ping得通原来的br0
的ip地址)
查阅了些参考资料,发现原因在于br0
,br0
和eth0
绑定在了一起,导致配置了eth0
的ip还是没用。
解决办法1:配置其他没和br0
绑定的网卡,比如说配置eth1
的ip地址。
解决办法2:配置br0
的ip地址(配置成eth0
的ip地址)。下面有具体的图片
解决办法3:取消eth0
和br0
的绑定,配置eth0
的ip地址
接下来就是学习这篇重要参考:《Linux虚拟网络设备之bridge(桥)》
1、ping -c 1 -I veth0 192.168.3.102
这句命令是什么意思?
这个命令是使用
ping
工具来检测网络连接的。下面是对命令各部分的解释:
ping
:这是一个常用的网络诊断工具,用于检查与目标主机的网络连接是否正常。-c 1
:这个选项指定了ping
命令应该发送的echo请求(即ICMP请求)的数量。在这里,1
表示只发送一个请求。-I veth0
:这个选项指定了用于发送echo请求的网络接口。veth0
是一个虚拟网络接口,通常在Linux系统中用于容器或虚拟化环境。这个选项意味着echo请求将通过veth0
接口发送。192.168.3.102
:这是目标主机的IP地址。ping
命令将向这个IP地址发送echo请求。综上所述,
ping -c 1 -I veth0 192.168.3.102
这句命令的意思是,使用veth0
网络接口向IP地址为192.168.3.102
的目标主机发送一个echo请求,并等待回应。这个命令通常用于测试网络接口是否能够成功发送和接收数据包。如果目标主机响应,将显示回复的时间和相关的网络统计信息;如果目标主机不响应,可能会显示超时的错误信息。
2、sudo tcpdump -n -i veth1
这句命令是什么意思?
sudo
:这个前缀表示以超级用户(root)权限执行后面的命令。tcpdump
通常需要root权限来访问网络接口并进行数据包捕获。tcpdump
:这是一个强大的网络分析工具,用于捕获和显示通过网络接口传输的数据包。-n
:这个选项告诉tcpdump
不要将网络地址解析为主机名和端口号,而是以数字形式显示IP地址和端口号。这样可以加快捕获过程,并减少输出的冗余信息。-i veth1
:这个选项指定了tcpdump
应该监听的网络接口。veth1
是一个虚拟网络接口,通常在Linux系统中用于容器或虚拟化环境。这个选项意味着tcpdump
将监听veth1
接口上的数据包。综上所述,
sudo tcpdump -n -i veth1
这句命令的意思是,以root权限使用tcpdump
工具来捕获通过veth1
网络接口传输的所有数据包,并以数字形式显示这些数据包的源和目标IP地址以及端口号。这个命令常用于网络调试、监控和分析。
3、关于对网桥的理解:
-
bridge是一个虚拟网络设备,所以具有网络设备的特征,可以配置IP、MAC地址等;其次,bridge是一个虚拟交换机,和物理交换机有类似的功能。
-
br0和veth0相连之后,相当于bridge在veth0和协议栈之间插了一脚,将veth0本来要转发给协议栈的数据给拦截了,全部转发给bridge了,同时bridge也可以向veth0发数据。(谁和br0连上,谁的数据就要发给br0而不再发给协议栈)
-
veth0收到(veth1的)应答包后没有给协议栈,而是给了br0,于是协议栈得不到veth1的mac地址,从而通信失败。
4、和网桥相关的命令:
dev@debian:~$ sudo ip link add name br0 type bridge #创建1个网桥
dev@debian:~$ sudo ip link set br0 up #开启所创建的网桥
dev@debian:~$ sudo ip link set dev veth0 master br0 # 将veth0连上br0
dev@debian:~$ sudo bridge link #查看br0上连接了哪些设备
6: veth0 state UP : <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 master br0 state forwarding priority 32 cost 2
dev@debian:~$ sudo ip link add veth0 type veth peer name veth1 # 创建一对veth设备: veth0和veth1
dev@debian:~$ sudo ip addr add 192.168.3.101/24 dev veth0 # 给Device veth0 配置上IP
dev@debian:~$ sudo ip addr add 192.168.3.102/24 dev veth1 # 给Device veth1 配置上IP
dev@debian:~$ sudo ip link set veth0 up # 开启虚拟网卡veth0
dev@debian:~$ sudo ip link set veth1 up # 开启虚拟网卡veth1
dev@debian:~$ sudo ip addr del 192.168.3.101/24 dev veth0 #删除Device veth1的上ip
dev@debian:~$ sudo ip addr add 192.168.3.101/24 dev br0 #给网桥br0配置上ip
用ip link
命令,断开与eth0的连接:
ip link set veth0 nomaster br0
5、一个ping命令,会走哪些步骤? (协议栈、物理网卡、屏幕(和物理网卡对应)、外在设备)的关系?
参考:《网络是怎样连接的(二) – 协议栈与网卡是如何工作的》
- 发送时的数据包:应用程序 -> 协议栈 -> 网卡
- 接收时的数据包:网卡 -> 协议栈 -> 应用程序
6、核心问题:如果我不换网口,那么应该怎么配通网络?
-
应该配置
br0
的ip(把eth1的网络ip,配置到br0上)-
eth0不配置ip,但是
ONBOOT
要设置为on -
br0的配置,配置成eth0的配置
- 通过
vi ifcfg-br0
配置
- 或者通过
ip addr add 10.0.23.82/24 dev br0
配置
- 通过
-