Bootstrap

linux服务器网络配置

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命令显示结果中的UPDOWN/etc/sysconfig/network-scripts/配置文件里面的ONBOOT的值

2、配置的eth0和网桥br0绑定了起来(绑定了起来后,配置了eth0ip没用)

检查办法: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;
    }
    
  • 参考:《CentOS 6.5 自动获取IP设置》

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]

参考:《Ubuntu18.04配置静态ip遇到的报错》

最终解决: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命令

sudo apt install net-tools # ubuntu安装

3、2024.6.14 解决ping不通网关

最近配置硬件防火墙,系统是centos系统。按照之前的配置方法进行配置,配置了eth0的静态ip/动态ip,虽然ping得通自身,但是ping不通网关。(ping得通原来的br0的ip地址)

查阅了些参考资料,发现原因在于br0br0eth0绑定在了一起,导致配置了eth0的ip还是没用。

解决办法1:配置其他没和br0绑定的网卡,比如说配置eth1的ip地址。

解决办法2:配置br0的ip地址(配置成eth0的ip地址)。下面有具体的图片

解决办法3:取消eth0br0的绑定,配置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配置
;