Linux 网络管理

2023-11-13

网络管理

1、网卡命名方式

1.1 网卡名称的组成格式

  • 前两个字母标识固件
    • 以太网卡以 en 开头
    • 无线网卡以 wl 开头
  • 后一个字母标识设备结构
    • o:主板上集成的设备的设备索引号
    • s:扩展槽的索引号
    • p s:基于拓扑的命名。如enp2s1,表示PCI总线上第2个总线的第1个插槽的设备索引号
    • x:基于MAC地址的命名

1.2 传统网卡命名方式

传统的网卡命名方式:
以太网卡 eth [0,1,2,...]
无线网卡 wlan [0,1,2,...]

1.3 Redhat7网卡命名机制

Systemd对网卡的命名方式:

  • 规则1:如果从BIOS中能够取到可用的,板载网卡的索引号,则使用这个索引号命名。例如:eno1
  • 规则2:如果从BIOS中能够取到可以用的,网卡所在的PCI-E热插拔插槽的索引号,则使用这个索引号命名。例如:ens1
  • 规则3:如果硬件接口的位置信息可用,则根据此信息进行命名。例如:enp2s0
  • 规则4:根据MAC地址命名,默认不开启。例如:enx2387a1dc56
  • 规则5:上述均不可用时,则使用传统命名机制。

注意:网卡的命名方式有dell的biosdevname和systemd的net.ifnames两种命名规范;在此主要使用systemd的net.ifnames方案。

1.5 回归传统网卡命名

//修改网卡配置文件
[root@hzz ~]# cd /etc/sysconfig/network-scripts/
[root@hzz network-scripts]# mv ifcfg-ens33 ifcfg-eth0
[root@hzz network-scripts]# vim ifcfg-eth0
TYPE=Ethernet
BOOTPROTO=dhcp
DEFROUTE=yes
NAME=eth0                   //此处要把ens33改成eth0
UUID=03be31f5-a3c1-4f8d-88b3-aea6e85c869f
DEVICE=eth0                 //此处要把ens33改成eth0
ONBOOT=yes

//编辑/etc/default/grub配置文件,在以GRUB_CMDLINE_LINUX开头的行内rhgb的前面加上net.ifnames=0 biosdevname=0
[root@hzz ~]# vim /etc/default/grub
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=rhel/root rd.lvm.lv=rhel/swap net.ifnames=0 biosdevname=0 rhgb quiet"
GRUB_DISABLE_RECOVERY="true"

//为grub2生成其配置文件
[root@hzz ~]# grub2-mkconfig -o /etc/grub2.cfg
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-3.10.0-693.el7.x86_64
Found initrd image: /boot/initramfs-3.10.0-693.el7.x86_64.img
Found linux image: /boot/vmlinuz-0-rescue-fd0bcf5782d24ba5b903b175c35f328e
Found initrd image: /boot/initramfs-0-rescue-fd0bcf5782d24ba5b903b175c35f328e.img
done

//重启系统
[root@hzz ~]# reboot

2、网络管理常用命令

2.1 ifconfig命令

ifconfig命令,查看当前处于活动状态的所有网络接口(网卡)的信息,也可以临时修改网络接口(网卡)的配置。

//查看当前处于活动状态的所有网络接口
[root@hzz ~]# ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.52.156  netmask 255.255.255.0  broadcast 192.168.52.255
        inet6 fe80::dbd:1db2:658d:30ab  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:ab:61:83  txqueuelen 1000  (Ethernet)
        RX packets 3286  bytes 273792 (267.3 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 4677  bytes 615915 (601.4 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1  (Local Loopback)
        RX packets 72  bytes 5560 (5.4 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 72  bytes 5560 (5.4 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

//仅查看eth0网卡状态
[root@hzz ~]# ifconfig eth0
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.52.156  netmask 255.255.255.0  broadcast 192.168.52.255
        inet6 fe80::dbd:1db2:658d:30ab  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:ab:61:83  txqueuelen 1000  (Ethernet)
        RX packets 4932  bytes 410142 (400.5 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 7576  bytes 944073 (921.9 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

//查看所有网卡状态信息, 包括禁用和启用
[root@hzz ~]# ifconfig -a
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.52.156  netmask 255.255.255.0  broadcast 192.168.52.255
        inet6 fe80::dbd:1db2:658d:30ab  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:ab:61:83  txqueuelen 1000  (Ethernet)
        RX packets 5834  bytes 484471 (473.1 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 9030  bytes 1113649 (1.0 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1  (Local Loopback)
        RX packets 72  bytes 5560 (5.4 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 72  bytes 5560 (5.4 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

ifconfig输出结果

//第一行网卡基本信息:
<UP,BROADCAST,RUNNING,MULTICAST>
        UP                      表示接口已启用
        BROADCAST               表示支持广播
        RUNNING                 表示接口在工作中
        MULTICAST               表示支持组播
        MTU                     1500(最大传输单元):1500字节

//第二行IPv4地址信息:
inet 192.168.52.156             网卡的IP地址
netmask 255.255.255.0           IP地址掩码
broadcast 192.168.52.255        广播地址。

//第三行IPv6地址信息:
inet6 fe80::dbd:1db2:658d:30ab  网卡的IPv6地址。
prefixlen 64                    IPv6地址掩码长度。
scopeid 0x20<link>              作用域,link表示仅该接口有效。

//第四行mac地址信息:
ether 00:0c:29:ab:61:83         网卡接口的MAC地址。
txqueuelen 1000                 传输队列长度。
(Ethernet)                      接口类型为Ethernet。

//第五,六行接收报文信息:
RX packets 5834                 表示此接口正确接收数据包的个数。
bytes 484471 (473.1 KiB)        表示此接口正确接收数据包的总字节数。
RX errors 0                     接收时,产生错误的数据包的个数
dropped 0                       接收时,丢弃的数据包的个数。
overruns 0                      接收时,由于速度过快而丢失的数据包的个数。
frame 0                         接收时,发生frame错误而丢失的数据包的个数。

//第七,八行发送报文信息:
TX packets 9030                 表示此接口正确发送的数据包的个数。
bytes 1113649 (1.0 MiB)         表示此接口正确发送的数据包的总字节数。
TX errors 0                     发送时,产生错误的数据包的个数。
dropped 0                       发送时,丢弃的数据包的个数。
overruns 0                      发送时,由于速度过快而丢失的数据包的个数。
carrier 0                       发送时,发生carrier错误而丢失的数据包的个数。
collisions 0                    发送时,冲突的数据包的个数。

2.2 ip命令

ip命令,查看所有网络接口的信息,也可临时修改网卡配置。

//语法:ip [ OPTIONS ] OBJECT { COMMAND | help }
OBJECT:
    link   网络设备
    addr   协议地址(IPv4/IPv6)
    route  路由表

OPTIONS
-s         查看详细信息

COMMAND
show       显示信息
set        设置
add        添加
del        删除

ip link show

//查看网络设备属性
[root@hzz ~]# ip link show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT qlen 1000
    link/ether 00:0c:29:ab:61:83 brd ff:ff:ff:ff:ff:ff

//显示报文统计信息
[root@hzz ~]# ip -s link show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    RX: bytes  packets  errors  dropped overrun mcast   
    5560       72       0       0       0       0       
    TX: bytes  packets  errors  dropped carrier collsns 
    5560       72       0       0       0       0       
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT qlen 1000
    link/ether 00:0c:29:ab:61:83 brd ff:ff:ff:ff:ff:ff
    RX: bytes  packets  errors  dropped overrun mcast   
    8447543    103002   0       0       0       0       
    TX: bytes  packets  errors  dropped carrier collsns 
    19165672   155011   0       0       0       0 

ip link set 网卡名 {up | down}

//启用或禁用网络设备
[root@hzz ~]# ip link set lo down
[root@hzz ~]# ip link set lo up

ip addr show

//查看网络接口协议地址(IPv4/IPv6)信息
[root@hzz ~]# ip addr show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:ab:61:83 brd ff:ff:ff:ff:ff:ff
    inet 192.168.52.156/24 brd 192.168.52.255 scope global dynamic ens33
       valid_lft forever preferred_lft forever
    inet6 fe80::dbd:1db2:658d:30ab/64 scope link
       valid_lft forever preferred_lft forever

//ip addr show输出结果
<BROADCAST,MULTICAST,UP,LOWER_UP>
        BROADCAST                     表示该接口支持广播
        MULTICAST                     表示该接口支持多播
        UP                            表示该网络接口已启用
        LOWER_UP                      表示网络电缆已插入,设备已连接至网络
mtu 1500                              最大传输单位(数据包大小)1500字节
qdisc pfifo_fast                      用于数据包排队
state UP                              网络接口已启用
qlen 1000                             传输长度
link/ether 00:1e:4f:c8:43:fc          接口的MAC(硬件)地址
brd ff:ff:ff:ff:ff:ff                 MAC广播地址
inet 192.168.52.156/24                IPv4地址
brd 192.168.52.255                    IPv4广播地址
scope global                          允许所有人访问此ip地址
dynamic eth0                          地址是动态分配的
valid_lft forever(永久)              IPv4地址的有效使用期限
preferred_lft forever(永久)          IPv4地址的首选生存期
inet6 fe80::dbd:1db2:658d:30ab/64     IPv6地址
scope link                            仅在允许此设备上访问此ip地址
valid_lft forever(永久)              IPv6地址的有效使用期限
preferred_lft forever(永久)          IPv6地址的首选生存期

ip addr add IP地址 dev 网卡名

//给网卡添加IP地址
[root@hzz ~]# ip addr add 192.168.52.157/24 dev eth0
[root@hzz ~]# ip addr show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:ab:61:83 brd ff:ff:ff:ff:ff:ff
    inet 192.168.52.156/24 brd 192.168.52.255 scope global ens33
       valid_lft forever preferred_lft forever
    inet 192.168.52.157/24 scope global secondary ens33
       valid_lft forever preferred_lft forever
    inet6 fe80::dbd:1db2:658d:30ab/64 scope link 
       valid_lft forever preferred_lft forever

ip addr del IP地址 dev 网卡名

//删除网卡的IP地址
[root@hzz ~]# ip addr del 192.168.52.157/24 dev eth0
[root@hzz ~]# ip addr show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:ab:61:83 brd ff:ff:ff:ff:ff:ff
    inet 192.168.52.156/24 brd 192.168.52.255 scope global ens33
       valid_lft forever preferred_lft forever
    inet6 fe80::dbd:1db2:658d:30ab/64 scope link 
       valid_lft forever preferred_lft forever

ip route show

[root@hzz ~]# ip route show
default via 192.168.52.2 dev eth0 proto static metric 100
192.168.52.0/24 dev eth0 proto kernel scope link src 192.168.52.156 metric 100

//输出结果
default                   默认路由
via 192.168.52.2          下一跳
dev eth0                  网卡
proto static              路由的协议,kernel是指由内核判断自动设定
metric 100                度量值
scope link                有效范围本地,global全局,site站点。

ip route add 目的地址 via 下一跳 dev 网卡名

[root@hzz ~]# ip route add 192.168.1.0/24 via 192.168.52.2 dev eth0
[root@hzz ~]# ip route show
default via 192.168.52.2 dev eth0 proto static metric 100 
192.168.1.0/24 via 192.168.52.2 dev eth0 
192.168.52.0/24 dev eth0 proto kernel scope link src 192.168.52.156 metric 100 

ip route del 目的地址 dev 网卡名

[root@hzz ~]# ip route del 192.168.1.0/24 dev eth0
[root@hzz ~]# ip route show
default via 192.168.52.2 dev eth0 proto static metric 100 
192.168.52.0/24 dev eth0 proto kernel scope link src 192.168.52.156 metric 100 

2.3 route命令

route命令和ip route命令类似。

//查看当前路由表
[root@hzz ~]# route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         gateway         0.0.0.0         UG    100    0        0 eth0
192.168.52.0    0.0.0.0         255.255.255.0   U     100    0        0 eth0

以数字方式显示路由表
[root@hzz ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.52.2    0.0.0.0         UG    100    0        0 eth0
192.168.52.0    0.0.0.0         255.255.255.0   U     100    0        0 eth0

//输出结果
Flags标志说明:
    U         Up表示此路由启动状态
    H         Host,表示此网关为一主机
    G         Gateway,表示此网关为一路由器
    R         Reinstate Route,使用动态路由重新初始化的路由
    D         Dynamically,动态路由
    M         Modified,此路由已被修改
    !         表示此路由当前为关闭状态
Ref           该路由的引用数
Use           该路由被使用的次数
Iface         接口,也就是网卡

route命令添加或删除路由

route命令添加的路由是临时的,重启之后就会失效。

//语法:route add或del [-net或-host] 目的地址 gw 网关地址 dev 网卡名

-net          表示目的地址是一个网段
-host         表示目的地址是一个具体的ip

//增加网段路由
[root@hzz ~]# route add -net 192.168.1.0/24 gw 192.168.52.2 dev eth0
[root@hzz ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.52.2    0.0.0.0         UG    100    0        0 eth0
192.168.1.0     192.168.52.2    255.255.255.0   UG    0      0        0 eth0
192.168.52.0    0.0.0.0         255.255.255.0   U     100    0        0 eth0

//增加主机路由
[root@hzz ~]# route add -host 192.168.2.1 gw 192.168.52.2 dev eth0
[root@hzz ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.52.2    0.0.0.0         UG    100    0        0 eth0
192.168.1.0     192.168.52.2    255.255.255.0   UG    0      0        0 eth0
192.168.2.1     192.168.52.2    255.255.255.255 UGH   0      0        0 eth0
192.168.52.0    0.0.0.0         255.255.255.0   U     100    0        0 eth0

//删除路由
[root@hzz ~]# route del -net 192.168.1.0/24
[root@hzz ~]# route del -host 192.168.2.1
[root@hzz ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.52.2    0.0.0.0         UG    100    0        0 eth0
192.168.52.0    0.0.0.0         255.255.255.0   U     100    0        0 eth0

3、网络相关配置文件

3.1 网卡配置文件

网卡(网络接口),其配置文件的路径是 /etc/sysconfig/network-scripts/ifcfg-INTERFACE_NAME。

[root@hzz ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=Ethernet
BOOTPROTO=static
NAME=eth0
UUID=03be31f5-a3c1-4f8d-88b3-aea6e85c869f
DEVICE=eth0
ONBOOT=yes
IPADDR=192.168.52.156
NETMASK=255.255.255.0
GATEWAY=192.168.52.2
DNS1=192.168.52.2
DNS2=8.8.8.8

网卡配置说明
TYPE                        接口类型。常见的接口类型有:Ethernet,bond,team,Bridge。
BOOTPROTO=static            启动的协议,获取IP的方式。可选值有{static|none|dhcp|bootp}。如果要使用静态地址,使用static或none都可以。
NAME="eth0"                 连接名称
UUID                        设备的唯一标识,全局唯一的IEEE机器识别号,可以不写
DEVICE="eth0"               关联的设备名称,要与文件名的后半部"INTERFACE_NAME"保持一致
ONBOOT=yes                  在系统引导时是否自动激活此网络接口,可选值有{ yes | no }
IPADDR=192.168.52.156       固定IP地址
PREFIX=24                   子网掩码,生产环境中不建议用
NETMASK=255.255.255.0       子网掩码
GATEWAY=192.168.52.2        默认网关
DNS1=192.168.52.2           第一个DNS服务器指向
DNS2=8.8.8.8                第二个DNS服务器指向

HWADDR                      硬件地址(mac地址),要与硬件中的地址保持一致,可不写。
DEFROUTE={yes|no}           将接口设定为默认路由{yes|no}
USERCTL={yes|no}            是否允许普通用户控制此接口的启用与禁用
PEERDNS={yes|no}            是否在BOOTPROTO为dhcp时接受由dhcp服务器指定的DNS地址,此项设为yes时获得的DNS地址将直接覆盖至/etc/resolv.conf文件中
NM_CONTROLLED={yes|no}      NM是NetworkManager的简写,NM是由RHEL研发的在RHEL6中取代network脚本来实现网络管理、配置的服务脚本.可选值有{ yes | no },此项是设定此网卡是否接受NM控制。CentOS6建议设为“no”

3.2 添加一块网卡

//添加一块物理网卡,新增加的网卡名称是根据你网卡命名机制来决定。
//但是新增加的物理网卡是没有配置文件的, 需要我们手动新增网络连接配置文件
//复制网卡eth0的配置文件,改为eth1的配置文件。
[root@hzz ~]# cp /etc/sysconfig/network-scripts/{ifcfg-eth0,ifcfg-eth1}

//编辑网卡配置文件
[root@hzz ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth1
TYPE=Ethernet
BOOTPROTO=static
NAME=eth1
DEVICE=eth1
ONBOOT=yes
IPADDR=192.168.52.158
NETMASK=255.255.255.0
GATEWAY=192.168.52.2
DNS1=192.168.52.2

//7.0重启network网络服务加载网络并设置开机启动
[root@localhost ~]# systemctl restart network
[root@localhost ~]# systemctl enable network

//8.0重启NetworkManager网络服务加载网络并设置开机启动
[root@localhost ~]# systemctl restart NetworkManager
[root@localhost ~]# systemctl enable NetworkManager
[root@localhost ~]# nmcli connection up eth1

3.3 路由配置文件

路由配置文件的路径是 /etc/sysconfig/network-scripts/route-INTERFACE_NAME ,该配置文件默认不存在。

//添加格式一:DEST via NEXTHOP
[root@hzz ~]# vim /etc/sysconfig/network-scripts/route-eth0
192.168.1.0/24 via 192.168.52.2

//添加格式二:三行为一条,序号不一样。
[root@hzz ~]# vim /etc/sysconfig/network-scripts/route-eth0
ADDRESS0=192.168.2.0
NETMASK0=255.255.255.0
GATEWAY0=192.168.52.2
ADDRESS1=192.168.3.0
NETMASK1=255.255.255.0
GATEWAY1=192.168.52.2

3.4 DNS配置文件

DNS服务器配置文件的路径是 /etc/resolv.conf 。

//前面的nameserver固定,后面写DNS服务器地址。
[root@hzz ~]# vim /etc/resolv.conf
nameserver DNS_IP_1
nameserver DNS_IP_2
nameserver DNS_IP_3
  • 本地DNS解析配置文件路径是 /etc/hosts 。
[root@hzz ~]# vim /etc/hosts
127.0.0.1       localhost localhost.localdomain localhost4 localhost4.localdomain4
::1             localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.52.156  hzz

3.5 主机名配置文件

生产环境中必须配置主机名,同时主机名也需要遵循一定的规范, 例如:公有云中主机名就以 ”地区-项目-业务-服务-节点-地址“ 这种方式命名。

公有云: 地区-项目-业务-服务-节点-地址
wh-shop-register-nginx-node1-192.168.56.13
wh-med-pay-mysql-master01-192.168.56.11
wh-med-pay-mysql-slave01-192.168.56.12

//主机名配置文件为/etc/hostname
[root@localhost ~]# cat /etc/hostname
localhost.localdomain

//hostname查看主机名
[root@localhost ~]# hostname
localhost.localdomain

//hostname临时修改主机名
[root@localhost ~]# hostname hzz
[root@localhost ~]# cat /etc/hostname
localhost.localdomain
//注意:修改主机名后需要重新加载shell才会显示效果

//rhel7系统建议使用hostnamectl修改和查看主机名
//设定永久名称
[root@localhost ~]# hostnamectl set-hostname hzz
[root@localhost ~]# cat /etc/hostname
hzz

//查看主机信息
[root@localhost ~]# hostnamectl
   Static hostname: hzz
         Icon name: computer-vm
           Chassis: vm
        Machine ID: fd0bcf5782d24ba5b903b175c35f328e
           Boot ID: a060e3a2882f4d2c92884eee9db702bc
    Virtualization: vmware
  Operating System: Red Hat Enterprise Linux Server 7.4 (Maipo)
       CPE OS Name: cpe:/o:redhat:enterprise_linux:7.4:GA:server
            Kernel: Linux 3.10.0-693.el7.x86_64
      Architecture: x86-64

注意:在Linux中以命令方式修改网络配置大部分情况只在当前状态有效,重启后将失效。故若想使修改的配置重启后依然有效,则必须编辑配置文件进行配置的修改。

4、NetworkManager管理网络

RHEL/CentOS7系统默认使用NetworkManager来提供网络服务,这是一种动态管理网络配置的守护进程,能够让网络设备保持连接状态。

NetworkManager提供了命令行和图形配置工具对网络进行设定, 设定保存的配置文件在/etc/sysconfig/network-scripts目录下, 工具有 nmcli, nmtui。它可以管理网卡硬件设备;也可以管理网络的连接类型(网卡的配置文件)。

NetworkManager管理连接(connection)的特点:

  • 1.一个物理设备可以配置多种网络连接类型,但是同一时间只能应用其中某一个网络连接类型。
  • 2.针对物理网络接口, 设定不同的网络连接, 在不同的使用环境中激活相应的网络连接,就可以实现网络配置信息的自动切换了

4.1 nmcli命令管理网卡配置信息

//查看网卡使用的配置文件
[root@hzz ~]# nmcli connection show
NAME   UUID                                  TYPE            DEVICE
eth0   03be31f5-a3c1-4f8d-88b3-aea6e85c869f  802-3-ethernet   eth0

//查看指定网卡配置文件详细信息
[root@localhost ~]# nmcli connection show eth0
connection.id:                          eth0
connection.uuid:                        03be31f5-a3c1-4f8d-88b3-aea6e85c869f
connection.stable-id:                   --
connection.interface-name:              eth0
connection.type:                        802-3-ethernet
connection.autoconnect:                 yes
connection.autoconnect-priority:        0
connection.autoconnect-retries:         -1 (default)
connection.timestamp:                   1530455962
connection.read-only:                   no
connection.permissions:                 --
connection.zone:                        --
connection.master:                      --
connection.slave-type:                  --
connection.autoconnect-slaves:          -1 (default)
connection.secondaries:                 --
connection.gateway-ping-timeout:        0
......

//开启连接名称为eth0的连接(启用指定网卡配置文件)
nmcli connection up eth0

//关闭连接名称为eth0的连接(关闭指定网卡配置文件)
nmcli connection down eth0

//修改连接名称为eth0的配置(修改指定网卡配置文件)
nmcli connection modify eth0 ...

//为eth0网卡添加一个连接名称eth0_hzz的以太网连接(为eth0网卡新增一个名为eth0_hzz的配置文件)
nmcli connection add type ethernet ifname eth0 con-name eth0_hzz ...

//删除连接名称为eth0_hzz的连接(删除名为hzz的网卡配置文件)
nmcli connection delete eth0_hzz

//操作示例及解释:
nmcli connection add type ethernet ifname eth0 con-name eth0_hzz ipv4.addresses 192.168.52.157/24 ipv4.gateway 192.168.52.2 ipv4.dns 192.168.52.2 ipv4.method manual autoconnect yes

add 			添加
type 			连接类型
ifname 			设备名称
con-name 		连接名称(名称随意,一般凸显此连接所应用的设备)
ipv4.addresses		指定ipv4地址
ipv4.gateway		指定ipv4网关
ipv4.dns 		指定ipv4的DNS地址
ipv4.method 		指定IP地址的获取方式 manual表示手动设置
autoconnect yes		开启开机自启(自动连接)

//修改连接名称为eth0_hzz的连接,修改IP地址为192.168.52.157/24
nmcli connection modify eth0_hzz ipv4.addresses 192.168.52.157/24

//修改连接名称为eth0_hzz的连接,添加一个IP地址192.168.52.158/24
nmcli connection modify eth0_hzz +ipv4.addresses 192.168.52.158/24

4.2 聚合网卡配置

//链路聚合两种类型:bond,team
bond:最多支持2块网卡
team:最多支持8块网卡

bond:负载轮询模式bond0(balance-rr),主备模式bond1(active-backup)

//添加bond类型网卡,设置网卡模式工作于负载轮询模式,创建一个bond0的网卡设备,设置连接名称为con-bond0,设置ipv4地址为192.168.52.140/24,设置网关为192.168.52.2,设置dns为192.168.52.2,选择IP地址获取方式为手动获取,设置连接开机自启
nmcli connection add type bond mode balance-rr ifname bond0 con-name con-bond0 ipv4.addresses 192.168.52.140/24 ipv4.gateway 192.168.52.2 ipv4.dns 192.168.52.2 ipv4.method manual autoconnect yes

//添加一个类型为bond-slave的连接,连接名为bond-slave0,将设备eth0添加至bond0网卡
nmcli connection add type bond-slave con-name bond-slave0 ifname eth0 master bond0

//添加第二个类型为bond-slave的连接,连接名为bond-slave1,将设备eth1添加至bond0网卡
nmcli connection add type bond-slave con-name bond-slave1 ifname eth1 master bond0

//查看bond0状态
cat /proc/net/bonding/bond0

team:主备模式activebackup,负载轮询模式roundrobin,负载均衡loadbalance,广播容错broadcast,lacp 需要交换机支持lacp协议

//添加team类型网卡,创建一个team0的网卡设备,设置连接名称为con-team0,设置网卡模式工作于主备模式,设置ipv4地址为192.168.52.140/24,设置网关为192.168.52.2,设置dns为192.168.52.2,选择IP地址获取方式为手动获取,设置连接开机自启
nmcli connection add type team ifname team0 con-name con-team0 config '{"runner":{"name":"activebackup"}}' ipv4.addresses 192.168.52.140/24 ipv4.gateway 192.168.52.2 ipv4.dns 192.168.52.2 ipv4.method manual autoconnect yes

//添加一个类型为team-slave的连接,连接名为team0-port1,将设备eth0添加至team0网卡
nmcli connection add type team-slave con-name team0-port1 ifname eth0 master team0

//添加一个类型为team-slave的连接,连接名为team0-port2,将设备eth1添加至team0网卡
nmcli connection add type team-slave con-name team0-port2 ifname eth1 master team0

//查看team0网卡工作状态
teamdctl team0 state

5、Centos7.0回归原生network管理网络

Centos7.0中原生network和NetworkManager程序都是使用 /etc/sysconfig/network-scripts 下的配置文件,只不过原生network管理网络需要修改配置文件,而NetworkManager则是使用nmcli命令。

//设置NetworkManger开机不启动, 同时停止NetworkManager服务
[root@hzz ~]# systemctl disable NetworkManager
[root@hzz ~]# systemctl stop NetworkManager

//NetworkManger服务停止就使用传统network管理网络,也就是使用配置文件。

6、网络检测工具与故障排查

6.1 ping命令

ping命令的目的在于测试另一台主机是否可达, 如果ping不到某台主机,就说明对方主机已经出现了问题, 但是不排除由于链路中的防火墙、ping被丢弃等原因造成ping不通的情况。

//ping命令常用选项:
    -c 指定ping的次数
    -i 指定ping包的发送间隔
    -w 指定ping的时间

//ping 3次后退出
[root@hzz ~]# ping -c 3 192.168.52.2
PING 192.168.52.2 (192.168.52.2) 56(84) bytes of data.
64 bytes from 192.168.52.2: icmp_seq=1 ttl=128 time=0.126 ms
64 bytes from 192.168.52.2: icmp_seq=2 ttl=128 time=0.235 ms
64 bytes from 192.168.52.2: icmp_seq=3 ttl=128 time=0.255 ms

--- 192.168.52.2 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2000ms
rtt min/avg/max/mdev = 0.126/0.205/0.255/0.057 ms

//每隔两秒ping一次,一共ping3次。
[root@hzz ~]# ping -c 3 -i 2 192.168.52.2
PING 192.168.52.2 (192.168.52.2) 56(84) bytes of data.
64 bytes from 192.168.52.2: icmp_seq=1 ttl=128 time=0.135 ms
64 bytes from 192.168.52.2: icmp_seq=2 ttl=128 time=0.249 ms
64 bytes from 192.168.52.2: icmp_seq=3 ttl=128 time=0.163 ms

--- 192.168.52.2 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 4000ms
rtt min/avg/max/mdev = 0.135/0.182/0.249/0.049 ms

//一共ping3秒,3秒后退出
[root@hzz ~]# ping -w 3 192.168.52.1
PING 192.168.52.1 (192.168.52.1) 56(84) bytes of data.
64 bytes from 192.168.52.1: icmp_seq=1 ttl=128 time=0.495 ms
64 bytes from 192.168.52.1: icmp_seq=2 ttl=128 time=0.374 ms
64 bytes from 192.168.52.1: icmp_seq=3 ttl=128 time=0.297 ms

--- 192.168.52.1 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2001ms
rtt min/avg/max/mdev = 0.297/0.388/0.495/0.084 ms

6.2 host与nslookup

host和nslookup命令用于查询DNS记录。

//host和nslookup命令需要安装
yum -y install bind-utils

//使用host命令查询看DNS解析记录
[root@hzz ~]# host www.baidu.com
www.baidu.com is an alias for www.a.shifen.com.
www.a.shifen.com has address 36.152.44.95
www.a.shifen.com has address 36.152.44.96
www.a.shifen.com has IPv6 address ::1

//使用nslookup命令查询看DNS解析记录,nslookup命令可以看到查询DNS解析的流程
[root@hzz ~]# nslookup www.baidu.com
Server:         192.168.52.2
Address:        192.168.52.2#53

Non-authoritative answer:
www.baidu.com   canonical name = www.a.shifen.com.
Name:   www.a.shifen.com
Address: 36.152.44.96
Name:   www.a.shifen.com
Address: 36.152.44.95

6.3 traceroute命令

traceroute命令用于路由跟踪, 检测网络故障出现在ISP运营商或是对端服务无法响应。

//traceroute命令需要安装
yum -y install traceroute

//traceroute命令只追踪内网路由
[root@hzz ~]# traceroute www.baidu.com
traceroute to www.baidu.com (220.181.38.150), 30 hops max, 60 byte packets
 1  * * *
 2  11.220.137.109 (11.220.137.109)  7.620 ms 11.220.137.45 (11.220.137.45)  6.852 ms  7.284 ms
 3  11.220.136.54 (11.220.136.54)  3.305 ms 11.220.136.122 (11.220.136.122)  2.326 ms 11.220.136.58 (11.220.136.58)  2.092 ms

6.4 netstat命令

netstat命令用于显示与IP、TCP、UDP和ICMP协议相关的统计数据,一般用于检验本机各端口的网络连接情况。

//语法:netstat [options]
//常用的options:
    -a:所有
    -n:数字格式
    -l:listen状态的连接
    -t:tcp协议连接
    -u:udp协议连接
    -p:相关的程序及pid

//常用组合
[root@hzz ~]# netstat -anltup
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1093/sshd           
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      1325/master         
tcp        0      0 192.168.52.156:22       192.168.52.1:50250      ESTABLISHED 3927/sshd: root@pts 
tcp6       0      0 :::22                   :::*                    LISTEN      1093/sshd           
tcp6       0      0 ::1:25                  :::*                    LISTEN      1325/master         
udp        0      0 0.0.0.0:20009           0.0.0.0:*                           7632/dhclient       
udp        0      0 0.0.0.0:68              0.0.0.0:*                           7632/dhclient       
udp        0      0 127.0.0.1:323           0.0.0.0:*                           749/chronyd         
udp6       0      0 :::53754                :::*                                7632/dhclient       
udp6       0      0 ::1:323                 :::*                                749/chronyd         

6.5 ss命令

ss是一种网络状态查看工具,取代netstat。

//语法:ss [options]
//常用的options:
    -a:所有
    -n:数字格式
    -l:listen状态的连接
    -t:tcp协议相关
    -u:udp协议相关
    -p:相关的程序及pid


//常见的state:
    //tcp finite state machine:有限状态机
        LISTENING:监听
        ESTABLISHED:已建立的连接

//常用组合:以数字格式查看监听的tcp和udp端口以及进程pid
[root@hzz ~]# ss -anltup
Netid State      Recv-Q Send-Q      Local Address:Port                     Peer Address:Port              
udp   UNCONN     0      0               127.0.0.1:323                                 *:*                   users:(("chronyd",pid=749,fd=1))
udp   UNCONN     0      0                     ::1:323                                :::*                   users:(("chronyd",pid=749,fd=2))
tcp   LISTEN     0      128                     *:22                                  *:*                   users:(("sshd",pid=1093,fd=3))
tcp   LISTEN     0      100             127.0.0.1:25                                  *:*                   users:(("master",pid=1325,fd=13))
tcp   LISTEN     0      128                    :::22                                 :::*                   users:(("sshd",pid=1093,fd=4))
tcp   LISTEN     0      100                   ::1:25                                 :::*                   users:(("master",pid=1325,fd=14))

//常见端口
http    80/tcp 
https   443/tcp 
ssh     22/tcp 
ftp     20,21/tcp
mysql   3306/tcp

7、 网络故障排查

  • 网络故障分为硬件/软件故障
    • 网卡损坏
    • 链路故障
    • 网卡驱动不兼容
  • 网络排查思路
    • ping本地回环口, 确定本机TCP/IP协议栈是否正常
    • ping本机IP地址, 确定本地设备以及驱动是否正常
    • ping同网段主机, 确定二层网络是否正常工作
    • ping网关地址, 确定本地与网络是否正常
    • ping公网地址, 确定本地路由是否正常
    • ping公网域名, 确定DNS客户端是否正常
  • 服务故障排查思路
    • 使用telnet检测端口是否开放
    • 检查服务端防火墙以及SElinux
    • 检查相应的权限是否配置正常
    • 检查日志是否有异常
    • 检查完毕后持续测试

建议:所有的排查思路都从OSI七层模型由下往上逐一进行排查(学会看日志)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Linux 网络管理 的相关文章

  • 如何在shell中输出返回码?

    我正在尝试通过调用自定义 shell 脚本sh bin sh c myscript sh gt log txt 2 gt 1 echo 该命令的输出是创建的后台进程的 PID 我想指导 bin sh保存返回码myscript sh到某个文件
  • 使用 sh 运行 bash 脚本

    我有 bash 脚本 它需要 bash 另一个人尝试运行它 sh script name sh 它失败了 因为 sh 是他的发行版中 dash 的符号链接 ls la bin sh lrwxrwxrwx 1 root root 4 Aug
  • iptables通过注释删除特定规则

    我需要删除一些具有相同评论的规则 例如 我有带有 comment test it 的规则 所以我可以像这样获得它们的列表 sudo iptables t nat L grep test it 但是我怎样才能删除所有带有注释 测试它 的 PR
  • C语言中如何通过内存地址映射函数名和行号?

    如何用 GCC 中的内存地址映射回函数名称和行号 即假设一个 C 语言原型 void func Get the address of caller maybe this could be avoided MemoryAddress get
  • SSE:跨页边界的未对齐加载和存储

    我在页面边界旁边执行未对齐加载或存储之前读过某处 例如使用 mm loadu si128 mm storeu si128内在函数 代码应首先检查整个向量 在本例中为 16 个字节 是否属于同一页 如果不属于同一页 则切换到非向量指令 我知道
  • 将 jar 作为 Linux 服务运行 - init.d 脚本在启动应用程序时卡住

    我目前正在致力于在 Linux VM 上实现一个可运行的 jar 作为后台服务 我已经使用了找到的例子here https gist github com shirish4you 5089019作为工作的基础 并将 start 方法修改为
  • jq中如何分组?

    这是 json 文档 name bucket1 clusterName cluster1 name bucket2 clusterName cluster1 name bucket3 clusterName cluster2 name bu
  • 如何使用 GOPATH 的 Samba 服务器位置?

    我正在尝试将 GOPATH 设置为共享网络文件夹 当我进入 export GOPATH smb path to shared folder I get go GOPATH entry is relative must be absolute
  • CoAP数据包的大小是多少?

    我是这项技术的新手 有人可以帮助我了解一些疑问吗 Q 1 CoAP数据包的大小是多少 我知道有 4 字节固定标头 但是包括标头 选项和负载在内的最大大小限制是多少 Q 2 有像MQTT那样的Keep Alive的概念吗 它在UDP上工作 它
  • 内核模式下的线程(和进程)与用户模式下的线程(和进程)有什么区别?

    我的问题 1 书中现代操作系统 它说线程和进程可以处于内核模式或用户模式 但没有明确说明它们之间有什么区别 2 为什么内核态线程和进程的切换比用户态线程和进程的切换花费更多 3 现在 我正在学习Linux 我想知道如何在LINUX系统中分别
  • Linux 上的用户空间能否实现本机代码的抢占式多任务处理?

    我想知道是否可以在 Linux 用户空间的单个进程中实现本机代码的抢占式多任务处理 也就是说 从外部暂停一些正在运行的本机代码 保存上下文 交换到不同的上下文 然后恢复执行 所有这些都由用户空间精心安排 但使用可能进入内核的调用 我认为这可
  • Linux - 从第二个选项卡获取文本

    假设我们有这样的文件 一些文本11 一些文本12 一些文本13 一些文本21 一些文本22 一些文本23 文本由制表符分隔 我们知道第 1 列中的一些文本 但希望从第 2 列中获取文本 我知道我可以通过以下方式获取线路 grep somet
  • 如果在等待“read -s”时中断,在子进程中运行 bash 会破坏 tty 的标准输出吗?

    正如 Bakuriu 在评论中指出的那样 这基本上与BASH 输入期间按 Ctrl C 会中断当前终端 https stackoverflow com questions 31808863 bash ctrlc during input b
  • Urwid:使光标不可见

    我正在使用 urwid 它是一个用于在 ncurses 中设计终端用户界面的 Python 框架 但有一件事我在 urwid 中无法做到 而这在 Curses 中很容易做到 使光标不可见 现在 选择按钮时光标是可见的 而且看起来很丑 有办法
  • Windows CE 与嵌入式 Linux [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 现在我确信我们都清楚 Linux 与 Windows 桌面的相对优点 然而 我对嵌入式开发世界的了解却少得多 我主要对行业解决方案感兴
  • 在 C++ linux 中将 STRINGS 写入串口

    我知道这个问题遍布互联网 但仍然没有任何东西能让我完全解决这个问题 我想用 C linux 将数据写入 Propeller 板的串行端口 从控制台获取输入时程序运行良好 但是当我向它写入字符串时总是返回 ERROR Invalid comm
  • 从 systemd bash 内联脚本创建 filename_$(date %Y-%m-%d)

    我正在尝试执行systemd计时器并希望将执行脚本的输出保存在每个日期的文件中 这是我的ExecStart脚本中的 service file ExecStart bin bash c echo date Y m d gt gt home u
  • Awk - 计算两个文件之间的每个唯一值和匹配值

    我有两个文件 首先 我尝试获取第 4 列中每个唯一字段的计数 然后匹配第二个文件的第二列中的唯一字段值 File1 第 4 列的每个唯一值和 File2 第 2 列包含我需要在两个文件之间匹配的值 所以本质上 我试图 gt 如果 file2
  • 每个命令都返回“bash:<命令>:找不到命令...”[关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 我刚刚安装了 Scala 并添加了路径gedit bashrc export SCALA HOME home avijit sca
  • 让 TeXstudio 在 linux mint 中工作:找不到文件“url.sty”。

    刚刚切换到 Linux Mint 以前的顽固 Windows 用户 我在尝试安装 TeXstudio 时遇到一些问题 Sudo apt get install texstudio 给了我一个正确的安装 至少 我是这么认为的 但是当我尝试构建

随机推荐

  • 彻底搞清“SVM”

    文章目录 前言 一 SVM是什么 概述 二 线性SVM 2 1 决策面 方程 2 2 约束条件 以下可以证明 有约束条件和没约束条件的公式是一样的 2 3 线性SVM优化 三 非线性分类 3 1 核函数 总结 前言 分类分析 概念 通过构造
  • 3D点云重建原理及Pytorch实现

    3D点云重建原理及Pytorch实现 Pytorch Learning Efficient Point Cloud Generation for Dense 3D Object Reconstruction 一种Pytorch实现方法 学习
  • maven学习笔记--常用插件(plugins)和目标(goals)

    Maven 的核心其实不做什么实际的事情 除了解析一些 XML 文档 管理生命周期与插件之外 Maven 被设计成将主要的职责委派给一组 Maven 插件 这些插件可以影响 Maven 生命周期 提供对目标的访问 绝大多数 Maven 的动
  • “阿里巴巴官方终极版Java八股文开源,Java学习利器首次揭晓!“

    铜三铁四已经结束了 但还是有很多Java程序员没有找到工作或者成功跳槽 跳槽成功的也只是从一个坑中 跳入另一个坑中 在LZ看来 真正有意义的就业与跳槽 是要进入到一个有绝对潜力的行业或者薪资能实现爆炸式增长的 这件事不容易 但也没有想象的遥
  • Word文档误删怎样恢复?6种实用方法分享给你

    如果您曾经因为没有保存微软Word文档而丢失了所有工作 那么您就会明白疼痛是多么明显 幸运的是 自从在软盘上备份文件的黑暗时代以来 Word已经走过了漫长的道路 如今 如果您丢失了未保存的Word文档 可能仍然有一种方法可以恢复它 这个过程
  • Nodejs学习

    本周我们主要学习了Nodejs相关知识 我也整理了一些相关知识点 首先呢 我们要了解Nodejs不是一门语言 也不是库 不是框架 而是一个JavaScript运行时环境 也就是说它可以解析和执行JavaScript代码 我们知道 浏览器中的
  • ARTS挑战打卡第三周

    ARTS挑战 Algorithm 一周至少一道算法题 Review 阅读并点评至少一篇英文技术文章 Tip 学习至少一个技术技巧 总结和归纳在日常工作中所遇到的知识点 Share 分享一篇有观点和思考的技术文章 01 Algorthm le
  • 输出具有n个结点的所有不同的二叉树-增强前序遍历形式输出-C++

    我们知道具有n个结点的不同的二叉树的数量是个 这是一个卡塔兰数 那么如何确定这些二叉树是什么样子的呢 下面是博主的思路 我们还知道一个入栈序列的不同出栈序列的数量也是个 于是博主就想 这不是巧了么 既然他们的数量是一样的 而且均不相同 那么
  • unity 控制物体旋转的角度

    using System Collections using System Collections Generic using UnityEngine public class Main MonoBehaviour public float
  • 为“广东数字工商”保驾护航——Apusic应用服务器在广东省工商局的应用

    互联网经济时代 信息技术的变革改变了人们传统的工作 学习 生活和娱乐方式 同时对工商部门的信息化建设提出了挑战 如何利用信息技术改进工商工作 形成新的工作方式 已成为工商系统所关心的问题 数字工商 的提出 便是其中的佐证之一 数字工商 是指
  • 从ping和ping6说起

    1 Windows中的ping ping6 发送ICMP ECHO REQUEST到网络主机 ping6是ICMPv6版的ping实现 t 不停地ping指定的主机 要查看统计信息并继续ping 按Ctl Break 要停止按Ctl C a
  • 垂直广告是什么意思_广告新趋势——内容为王 垂直细分

    广告的变革 曾经的广告投放四大媒介 电视 报纸 杂志 广播 在如今看来早已式微 除了曝光率特别高的综艺节目 影视剧 电影等大屏幕广告以外 其余资源的广告部门或者传统广告代理公司都在纷纷转型 媒体结构变革也意味着广告形式的变革 作为经历传统广
  • 如何配置Git工具

    安装Git 首先确保你已经在计算机上安装了Git 你可以从Git官方网站Git Downloads git scm com 配置用户信息 在命令行终端中 使用下面的命令来配置你的用户名和电子邮件地址 git config global us
  • 如何快速找到paper 提到算法的源码(计算机领域)??

    1 如果该算法有开源的话 首先推荐网站 https paperswithcode com 比较高效 不需要VPN 2 如果算法比较新的话 最好去作者的主页 大佬 去逛一下 3 使用Google 搜索 paper 名字 source code
  • Spring Boot注入Servlet、Filter、Listener 注解方式和使用RegistrationBean二种方式 加源码分析

    目录 Spring Boot 注入Servlet Filter Listener 官方文档 基本介绍 应用实例1 使用注解方式注入 创建 Servlet java 修改Application java 加入 ServletComponent
  • MacBook M1 安装配置conda与python3.9注意事项

    macOS 版本 1 python 3 9 才支持m1 所以需要下载3 9之上的版本 https www python org downloads macos 2 如果需要安装Anaconda 可省略单独安装python anaconda自
  • 苹果CMS V10 后台一键采集豆瓣API获取资料(最新版)

    进入苹果CMS根目录后 找到如下文件 application admin view vod info html 大约在718行左右 照图修改两处位置即可 同时列出关键代码如下 修改后一键采集入库资料示例 相关AJAX请求核心代码如下 aja
  • 元宇宙(四)人机接口

    1 VR AR MR 现在的VR AR MR一定程度上试图解决把虚拟世界 展示 给我们的问题 先不说效果如何 这个接口的也只能提供视觉和听觉信息 虽然视觉和听觉为我们提供了大部分信息量 但其它感知能力 触觉 嗅觉 味觉也虚拟世界能让我们有真
  • 华为实习生2022机考、技术面及主管面试

    第一题 第一种情况 a坐标比b坐标小 a的坐标更新为b 1 第二种情况 a坐标比b坐标大 直接加1 对于B来说也是一样 按照这个原则来更新坐标 最后返回即可 第二题 动态规划求地图障碍物的题 不同路径https leetcode cn pr
  • Linux 网络管理

    网络管理 1 网卡命名方式 1 1 网卡名称的组成格式 前两个字母标识固件 以太网卡以 en 开头 无线网卡以 wl 开头 后一个字母标识设备结构 o 主板上集成的设备的设备索引号 s 扩展槽的索引号 p s 基于拓扑的命名 如enp2s1