network网卡常用命令介绍

network网卡常用命令介绍

cat /sys/class/net/enox


驱动升级方法
http://t.zoukankan.com/zhangmingda-p-14363854.html
解压后进到目录 ./mlnxofedinstall 假如说安装失败,--force后面加个这个强制安装
--nodeps
–add-kernel-sup

FW升级方法
https://www.cnblogs.com/seaBiscuit0922/p/9294541.html
flint -d /dev/mst/mt*** -i *.bin burn
先打mst start
flint -d /dev/mst/mt4117_pciconf0 -i fw-ConnectX4Lx-rel-14_23_1000-MCX4121A-ACA_Ax-UEFI 14.16.15-FlexBoot-3.5.504.bin burn


Cd /etc/sysconfig/network-scripts
cat /proc/net/bonding/bond0
Service network restart 重启网络 可以解决直连但是灯不亮,无速率,删除bond
/etc/init.d/network restart networking
systemctl stop NetworkManager cent/rhel的网络管理 重启网络
chkconfig NetworkManager off 开机启动或关闭
egrep -c '(vmx|svm)' /proc/cpuinfo //输出结果大于0即代表支持虚拟化
tcpdump -e -i enox ip src host 10.10.10.20 and dst net 10.10.10.10
tcpdump -i enox|grep -i "ICMP echo request" 查看mtu,字节长度吧
ethtool -S enox |egrep -i "dropped|error" 查看丢包
ifconfig ethX 抓软件层面丢包误码 ethtool -S ethX 抓硬件层面丢包误码


ping xxxx.xxxx.xxxx.xxxx -s 10000
cd /etc/netplan
vi 01-netcfg.yaml ubuntu专用修改ip方法

rpm -qa|grep kernel 查询rpm已安装的包
lsmod|grep -I xxx 查询某个模块是否被加载
rmmod xxx 卸载某个模块
insmod xxx 加载某个驱动?
modprobe -r driver_name 卸载驱动
modprobe driver_name 加载驱动

./mlnxofedinstall --add-kernel-support --distro rhel7.6alternate ARM BCLINUX7.6用 x86的redhat7.6的mellanox安装包
./mlnxofedinstall --distro rhel7.6alternate --skip-distro-check --add-kernel-support 安装方法2
MAC单播 原本MAC
组播 AABB
任意单播 0000
广播 六组全FF
mlxconfig -d /dev/mst/mt*_pciconf* s SRIOV_EN=1 NUM_OF_VFS=127 查询能创建多少个VF把
echo 127 > /sys/class/infiniband/mlx5_0/device/mlx5_num_vfs使能VFs
echo 6 > /sys/class/net/enp3s0f0/device/sriov_numvfs


ifconfig enp6s0 inet6 add fe80::2218:8ff:febc:1941/96
ifconfig enp6s0 del fe80::2218:8ff:febc:1941/64
ping6 -I ethx ipv6_address
ethtool -S enox | egrep -i 'drop|error'
ethtool -s enox speed 1000 duplex full autoneg off 会导致与交换机自协商不了灯不亮
ethtool -s enox autoneg on
./configure -build=arm
dmesg|egrep -i "error|fail|warn|wrong|bug|respond|pending|call trace"
Kill -9 xxxx 杀掉某一线程
Pkill -9 netperf 可以杀掉所有netperf进程
ip link show enox|grep -i link-state 主机上使用,查看VF口状态吧
ip link set enox vf 0 state enable 打开vf口吧
echo 8 > /sys/class/net/enox/device/sriov_numvfs
ethtool -G enox rx 8192 ethtool -g enox 修改rx和tx为最大
ethtool -L enox combined 8 修改combind为8
ifconfig enox mtu 9000 最大有9978,9702(SP332),9414(SF400HT)
ping -c 1000 -f -s 2048 [Server IP] mtu不能为9000,要改为1500
generic-receive-offload GRO 一般收到卸载
ethtool -K enox gro on
ethtool -K enox gro off
ethtool -k enox|grep gen

large-receive-offload LRO 大获得卸载
ethtool -K enox lro on
ethtool -K enox lro off
ethtool -k enox|grep lar

tcp-segmentation-offload TSO tcp分段卸载
ethtool -K enox tso on
ethtool -K enox tso off
ethtool -k enox|grep tcp

ethtool -k enox|grep gen
ethtool -k enox|grep lar
ethtool -k enox|grep tcp

ethtool -k enox
ethtool -K enox tx on

netperf -H 10.10.10.20 -l 120 -- -m 65150 -M 65150 发送端
tcpdump -i enox -nn src net 10.10.10.10 -c 500 接收端
netperf -H <Server IP> -t UDP_STREAM -l 300 -- -m pkt_length -M pkt_length (-s 4096000)

互信
ssh-keygen -R xx.xx.xxx.xx 报错,更新密钥就可以
ssh-keygen -t rsa 互信
scp .ssh/id_rsa.pub root@10.10.10.20:/root/.ssh/authorized_keys
ssh 10.10.10.20

sh_dispatch_run_fatal: Connection to 10.10.10.20 port 22: message authentication code incorrect
lost connection
acket_write_wait: Connection to 10.10.10.10 port 22: Broken pipe

ssh xx@xx.xx.xx.xx NCSI时
systemctl restart sshd.service 重启ssh服务,2条都是把
service sshd restart

vi /etc/ssh/sshd_config文件配置,是否可以密码认证 更改PasswordAuthentication yes
然后重启sshd服务 这个是解决只能用公私钥登录的

modprobe 8021q
ip link add link enox name enox.100 type vlan id 100
ip addr add 192.168.100.50/24 dev enox.100
ip link set enox.100 up
ifconfig enox.100

ip link delete eth0.1 type vlan 删除vlan

ip link add link bond0 name bond0.1107 type vlan id 1107
ip addr add 192.168.100.50/24 dev bond0.1107
ip link set bond0.1107 up
ethtool -S enox | grep -I rx | grep -I packets
rpmbuild -tb i40e-2.15.9.tar.gz 驱动升级方法,先编译
rpm -e xxx 卸载需要卸载的东西

ip addr add xx.xx.xx.110/23 dev enp125s0f0 添加OA网IP和掩码
route add default gw xx.xx.xx.1 添加OA网关,这个应该是全部网口

while [ 1 ]; do esxcli network nic down -n vmnic5;sleep 1; esxcli network nic up -n vmnic5;sleep 10;done

NCSI不成功排查思路
关闭业务口,port口改为自动获取并开启网口
防火墙?

ifconfig查看网卡数量,使能后,可以用ifconfig|grep -I eth|wc -l

SFP是机架的KR是刀片和异构的
WOL Wake On Lan 网络唤醒 通过ethtool xxx,查到wake on : d d为不支持,g为支持

ethtool -m ens1f0 查询线缆信息


虚拟机添加使能网口后进不去 报错不支持 vi /etc/default/grub
intel_iommu=on iommu=pt #x86
iommu.passthrough=1 #armꟊ
grub2-mkconfig -o /boot/efi/EFI/系统/grub.cfg


Lspci
Lspci 显示所有的pci设备信息
lspci -v/-vv/-vvv:显示详细的pci设备信息,v越多,越详细,当然,上限3个。
Lspci -s(bdf) -vvv 显示网卡详细信息


Vmware ESXI

vi /etc/ssh/sshd_config 文件配置,是否可以密码认证 更改PasswordAuthentication yes
然后重启sshd服务 这个是解决只能用公私钥 publick key登录的
无需其他操作即可

Alt+f1 进入终端 Alt+f2 退出命令行
Ping不通,可以把网口开关都开关一下
vmware -v
vmware -l
esxcli system version get
esxcli software vib list,查看已安装的驱动列表
驱动安装方法:
esxcli software vib install -v /vib20/ixgben/INT_bootbank_ixgben_1.9.12.0-1OEM.700.1.0.15843807.vib
esxcli software vib install -v /vmfs/volumes/datastore1/vib20/nmlx5-core/MEL_bootbank_nmlx5-core_4.21.71.101-1OEM.702.0.0.17630552.vib
esxcli software vib install -v /vmfs/volumes/datastore1/vib20/nmlx5-rdma/MEL_bootbank_nmlx5-rdma_4.21.71.101-1OEM.702.0.0.17630552.vib
-d 升级zip包

固件安装方法:
Intel按照官方文档来进FusionServer Tools-FwUpgrade-V102执行install.sh升级固件

Esxcli network firewall get 查看防火墙状态
Esxcli network firewall set –enabled false 设置防火墙为false
dmesg|egrep -i "error|fail|warn|wrong|bug|respond|pending|call trace"
esxcli software vib remove -n ixgben 如果错误可以卸载
esxcli network nic list 列出当前ESXi主机上所有NICs的状态
esxcli network nic get -n vmnic4 查看网卡驱动版本及固件版本
vim-cmd hostsvc/maintenance_mode_enter 进入维护模式
esxcli network nic stats get -n vmnic4 查看是否丢包
lspci | grep 'Network controller' 查看一下 Intel Corporation 10-Gigabit 网卡驱动是否能被正确识别出来
esxcli network nic down -n vmnic4 down掉网口
esxcli network nic set -S=1000 -n=vmnic4 -D=full 设置速率1000m,全双工
esxcli network nic set -n=vmnic4 -a 设置网卡自适应
esxcli system settings advanced set -o /Net/UseHwTSO -i 0 关闭TSO
esxcli system settings advanced list -o /Net/UseHwTSO 查询是否成功
esxtop
esxcli software vib list 查看驱动安装情况
esxcli system settings advanced set -o /Net/Vmxnet3HwLRO -i 0 关闭虚拟网卡驱动模块LRO
esxcli system settings advanced list -o /Net/Vmxnet3HwLRO 查询是否成功
esxcli system settings advanced set -o /Net/TcpipDefLROEnabled -i 0 在主机上关闭LRO
esxcli system settings advanced list -o /Net/TcpipDefLROEnabled 查询是否成功
esxcli network nic up -n vmnic4
esxcli network nic down -n vmnic4 down掉网卡端口
esxcfg-module -u ixgben 卸载网卡驱动
esxcli software vib remove -n ixgben 卸载网卡驱动
esxcfg-module -s VMDQ=2 ixgben 加载网卡驱动
vmkload_mod nmlx5_core 加载迈络斯网卡驱动
进入维护模式:vim-cmd hostsvc/maintenance_mode_enter
退出维护模式:vim-cmd hostsvc/maintenance_mode_exit
暂定于用nic2去冲包,nic3来down
while [ 1 ]; do esxcli network nic down -n vmnic3;sleep 1; esxcli network nic up -n vmnic3;sleep 10;done
esxcli hardware memory get 查询内存
dmesg|grep -i msi

esxcfg-nics -l 查看ESXI上网口的信息、端口、速率、型号、Mac地址等信息
lspci | grep 'Network controller' 查看该网卡是否被识别
esxcli hardware memory get 查询内存大小
esxcli system module parameters set -m ixgben -p max_vfs=63,63 使能


vi /etc/ssh/sshd_config文件配置,是否可以密码认证 更改PasswordAuthentication yes
然后重启sshd服务 这个是解决只能用公私钥 publick key登录的
无需重启ssh服务,无需重启服务器,直接可以用


关于卡连接交换机后一直Down,无法up
先设置速率为正常速率/自协商速率,然后设置自协商,就可以了
esxcli network nic set -S=25000 -n=vmnic3 -D=full
esxcli network nic set -n=vmnic3 -a

网口使能

网页使能和命令使能是两码事,不要混用,用命令就一直用命令,用网页就一直用网页
否则就会导致命令无作用,只能靠网页

esxcli network nic list
esxcli system module parameters set -m nmlx5_core -p max_vfs=1,1
建议这条命令打完后,不要立马重启,而是等待10多秒在重启

1、在TC端开启server端,启动命令为:iperf –s –p 5001/ iperf –s –p 5002;发起测试命令taskset –c X iperf -c xxx.xxx.xxx.xxx -i 3 -t 60 -P 10 -p 5003/ taskset –c X iperf -c xxx.xxx.xxx.xxx -i 3 -t 60 -P 10 -p 5004
在SUT端开启server端,启动命令为:iperf –s –p 5003/ iperf –s –p 5004;发起测试命令taskset –c X iperf -c xxx.xxx.xxx.xxx -i 3 -t 60 -P 10 -p 5001/ taskset –c X iperf -c xxx.xxx.xxx.xxx -i 3 -t 60 -P 10 -p 5002


Citrix
必装Xencenter
CitrixHypervisor-8.2.0-XenCenter.msi 在安装包目录下
安装后可以图形化管理网口,虚拟机
Exit可以退出进入系统主页


使能Temp
https://blog.csdn.net/xnf1991/article/details/50063769
注意intel_iommu=on iommu=pt 不敲也可以

6.进入 XS 控制台, 查看此虚拟机的 PCI 映射情况:
xe vm-list uuid=UUID号 params=other-config
xe vm-list uuid=889f57ba-2e5c-6687-bd66-108065b01c6c params=other-config

echo 32 > /sys/class/net/eth2/device/sriov_numvfs


如果想清除 VM 对应的映射关系可使用此命令进行清除:
xe vm-param-clear param-name=other-config uuid=xxxxxxxxxx 关闭虚拟机,然后再开机.


Ifconfig查看网口数量
ifconfig -a |egrep -v 'lo|br|bond|vnet|vtap'|grep mtu |wc -l


调优
systemctl status firewalld
systemctl status irqbalance
关闭smmu
虚拟机的话记得加内存和CPU, 虚拟机最大只能加255G内存
1 开启lro ethtool -K enox lro on
2 修改combind为16 ethtool -L enox combined 16 186.195一改就死机
3 修改rx和tx为最大 ethtool -G enox rx 8192 ethtool -g enox
4 修改MTU为9000 ifconfig enox mtu 9978 能否更高9978
5 绑核


systemctl stop firewalld
systemctl stop irqbalance
ethtool -K enox lro on
ethtool -K enp1s0f1 lro on
ethtool -L enox combined 16
ethtool -L enp1s0f1 combined 16
ethtool -G enox rx 8192
ethtool -G enp1s0f1 rx 8192
ethtool -G enox tx 8192
ethtool -G enp1s0f1 tx 8192
ifconfig enox mtu 9978
ifconfig enp1s0f1 mtu 9978

ethtool -K bond0 lro on
ethtool -L bond0 combined 16
ethtool -G bond0 rx 8192
ethtool -G bond0 tx 8192
ifconfig bond0 mtu 9978


线的接口不一样,100G的IB卡线很粗,25G的线只有单根光模块和线,应该56G是双根光纤线
mlxfwreset -d/dev/mst/mt4117_pciconf0 reset 强刷固件,刷到想到的固件版本
关于link detected:no, 敲命令opensm

FC网卡:一般也叫光纤网卡,学名Fibre Channel HBA。传输协议为光纤通道协议,一般通过光纤线缆与光纤通道交换机连接。接口类型分为光口和电口。光口一般都是通过光纤线缆来进行数据传输,接口模块一般为SFP(传输率可达8Gb/s)和GBIC(1Gb/s),对应的接口为SC和LC。电口的接口类型一般为DB9针或HSSDC

以太网卡:学名Ethernet Adapter,传输协议为IP协议,一般通过光纤线缆或双绞线与以太网交换机连接。接口类型分为光口和电口。光口一般都是通过光纤线缆来进行数据传输,接口模块一般为SFP(传输率2Gb/s)和GBIC(1Gb/s),对应的接口为SC、ST和LC。电口目前常用接口类型为RJ45,用来与双绞线连接,也有与同轴电缆连接的接口,不过现在已经用的比较少了

Infinite band InfiniBand直译为“无限带宽”技术,缩写为IB)是一个用于高性能计算的计算机网络通信标准,它具有极高的吞吐量和极低的延迟,用于计算机与计算机之间的数据互连。InfiniBand也用作服务器与存储系统之间的直接或交换互连,以及存储系统之间的互连

HBA(Host Bus Adapter) 卡是将主机接入FC网络必不可少的设备, 主机总线适配器是网络与交换,是能插入计算机或大型主机的板卡

关于芯片厂商和网卡厂商
高速线缆(Direct Attach Cable)简称DAC,一般译为直接连接电缆或直连铜缆。是指在高速跳线的两端都装上光模块,通过将交换机连接到路由器或服务器上,广泛应用于存储区域网络、数据中心和高性能计算机连接,在网络通信中正逐渐崛起。
查询资料得知,高速线缆DAC的有优势如下:
1、高性能:适用于数据中心的短距离布线,使用范围广,集成方案交换能力强。
2、节能环保:高速线缆内部材质是铜芯,铜缆的自然散热效果好,节能环保。
3、低功耗:高速线缆功耗低。由于无源电缆不需要电源,耗电量几乎为0;有源电缆耗电量一般在440mW左右。


绑定
网卡冗余/绑定 务必要用交换机,出现down不切换的话 机x条DAC,机1条DAC
Nmtui绑定时,网口1和2会变为1个mac地址 是用service network restart 和active和重启 后出现
Mac地址变为一样,是正常现象,因为可以正常做和正常主备
建议用1根黄色和蓝色DAC线去插在卡上面


Cent 网口开关灰色动不了
不显示速率可以打开开关
怀疑是网线问题,普通的橙色25G线缆2端插在同一个网卡,可以正常使用,但是插在两张网卡会不通
换了25G线秒好


驱动升级方法
解压后进到目录 ./mlnxofedinstall 假如说安装失败,--force后面加个这个强制安装
--nodeps

要先升级驱动,才能升级固件,但是一般驱动升级后,固件会更新的,一般也会同步升级
也可以 –add-kernel-sup

固件升级方法
flint -d /dev/mst/mt*** -i *.bin burn
先打mst start
Mst status可以查看mst的状况,

flint -d /dev/mst/mt4117_pciconf0 -i fw-ConnectX4Lx-rel-14_23_1000-MCX4121A-ACA_Ax-UEFI 14.16.15-FlexBoot-3.5.504.bin burn
burn不要忘了

正常安装并搭建本地源出现,yum install redhat-rpm-config kernel-devel-4.19.25-200.el7.bclinux.aarch64 安装不上
在bc7.6的镜像文件packages文件夹可以找到对应软件却装不上
rpm -qa|grep kernel 查询确实没装上
yum install kernel-bek-devel-4.19.25-200.el7.bclinux.aarch64 通过手动安装,可以安装上,看着不太一样,应该都一样
通过进入packages文件,强制rpm安装 redhat-rpm-config ,安装成功,不强制安装会报错 已安装
rpm -ivh redhat-rpm-config-9.1.0-87.el7.centos.noarch.rpm --nodeps –force
./mlnxofedinstall --distro rhel7.6alternate --skip-distro-check --add-kernel-support 安装方法1
./mlnxofedinstall --add-kernel-support --distro rhel7.6alternate 安装方法2
./mlnxofedinstall --distro openeuler20.03 --without-fw-update


rhel7.6+rhel7.6mellanox一直催你注册,vim /etc/yum/pluginconf.d/subscription-manager.conf 里面改为0
https://blog.csdn.net/oraoharu/article/details/106808108 这是rhel7.6的 yum install tcl gcc-gfortran tk

Intel安装驱动
注意:挂本地源yum install kernel*,不然会报错 kernel-devel 这个也可以试试
common.mk:82: *** Kernel header files not in any of the expected locations.
common.mk:83: *** Install the appropriate kernel development package, e.g.
common.mk:84: *** kernel-devel, for building kernel modules and try again. Stop.
方法:
Tar zxvf i40e-2.15.9.tar.gz
Cd i40e-2.15.9/src
Make
Make install
reboot
假如说要卸载驱动,进入src文件夹,make uninstall 执行后,重启就好了

方法2:
编译安装
rpmbuild -tb i40e-xxx.tar.gz 生成rpm驱动文件,在反馈中找到生成的驱动路径
rpm –ivh xxx.rpm 安装驱动
卸载驱动再加载驱动一次,查看驱动是否更改为目标版本


固件
可以用https://support.huawei.com/enterprise/zh/doc/EDOC1100240022/58f3b1f7
就是服务器挂载FusionServer Tools-FwUpgrade-V104.iso,然后通过DVD启动,进入迷你linux

说是用eeupdate64e去做升级固件动作 先用./eeupdate64 去确定nic是几,如果有多个,默认用第一个
./eeupdate64e /nic=x /D xxxx.bin

虚拟机驱动
I40e的网卡,要装iavf
iavf-4.1.1.tar.gz
挂本地源yum install kernel*,不然会报错 kernel-devel 这个也可以试试
目前X86 sles15.2 26-2大包是成功装过的,刚开始报错3行 后面挂本地源安装kernel-devel就可以
X86 cent8.3 26-2大包 kernel*和kernel-devel都不行

编译内核模块时出现:cc1: error: code model kernel does not support PIC mode
删除该模块目录下的 .cache.mk 文件就好了,重新 make 即可

安装kernel-devel和kernel*都不行,可以试试安装
Libelf-dev,libelf-devel,elfutils-libelf-devel
有可能是 kernel-devel没有安装
rpm -qa kernel-devel kernel-headers
如果没有找到,那就先安装
yum install kernel-devel kernel-headers
如果已经安装了,还出现以上错误,是因为在Makefile文件中,它连接的目录为/usr/src/linux
但是系统里面并没有这个目录,这个时候可以使用以下命令:
cd /usr/src
ln -s /kernels/2.6.32-4xx.11.2.el6.x86_64/ linux
创建一个软链接。
再执行:
make
最后成功编译!

IB报错
mst start
/etc/init.d/opensmd start
/etc/init.d/openibd start ibstat
lspci |grep -i mell
./mlnxofedinstall --add-kernel-support
Ibstat 可以查看linkup和state
Opensm 打开物理状态
Openibd 无效
Mst start 启动mst服务
Mst status 查看mst服务状态
Modinfo mlx5_core 查询驱动信息吧
ls /sys/class/infiniband/mlx5_0/device/sriov查看使能胡网口数量,注意假如使能127,那就只有127个,是从0开始

X8的Riser卡会限制网卡速率,限制X16的到X8


关于互信,一定要线操作机,确定可以免密后操作机,不然同时操作2台,会不成功
还有ssh 192.168.30.xx ,没有root@
ssh-keygen -t rsa
scp .ssh/id_rsa.pub root@192.168.30.40:/root/.ssh/authorized_keys

端口reset
Base lib + Number of ports
Base lib 为65535的话,是不对的,要去opensm

mst start
# 查看网卡模块型号
ibv_devinfo | grep vendor_part_id
# 如vendor_part_id: 4115
# 查看当前端口等信息
mlxconfig -d /dev/mst/mt4115_pciconf0 q | grep LINK_TYPE_
# LINK_TYPE_P1 1
# 1是指ib模式,2是指eth模式
#设置成eth模式,也就是2
mlxconfig -d /dev/mst/mt4115_pciconf0 set LINK_TYPE_P1=2 LINK_TYPE_P2=2

# 完成之后重启
ibdev2netdev
# 可以看到具体的端口状态 en开头是eth的意思,ib模式是ib开头的,名称(用来设置ip)
#mlx5_0 port 1 ==> ens5f0 (Down)
#mlx5_1 port 1 ==> ens5f1 (Down)

#也可以用ibv_devinfo来查看端口类型
link_layer:Ethernet 则为成功

关于执行重启网络命令报错解决方法

第四步:重启网络服务,正常情况下只有bond0网卡设备有IP地址等信息。
systemctl stop NetworkManager
systemctl start NetworkManager
实测,以上两句输入后可以解决

systemctl disable NetworkManager
systemctl restart network

这里需要先关闭NetworkManager,再重启network,否则会报下图中错误
重启网络服务命令:service network restart(centos8以上服务改为NetworkManager,命令参考 systemctl restart NetworkManager)

VF直通
cd /sys/class/infiniband/mlx5_0/device/sriov/ 只输一次

echo Follow > /sys/class/infiniband/mlx5_0/device/sriov/0/policy 每次都输啊,不然一直down
echo 11:11:11:11:22:22:22:11 > /sys/class/infiniband/mlx5_0/device/sriov/0/node
echo 11:11:11:11:22:22:22:12 > /sys/class/infiniband/mlx5_0/device/sriov/0/port

echo 0000:c3:00.1 > /sys/bus/pci/drivers/mlx5_core/unbind
echo 0000:c3:00.1 > /sys/bus/pci/drivers/mlx5_core/bind

cat /sys/class/infiniband/mlx5_0/device/sriov/0/node
cat /sys/class/infiniband/mlx5_0/device/sriov/0/port

Netperf -H 10.10.10.20 -t UDP_STREAM -l 600
报错send_omni:send_data failed:No route to host,但是TCP就不会报错


BIOS可以设置使能口数量
Network device list-----选中使能网口进去------Device level Configration-----设置数量


虚拟机添加使能网口后进不去 报错不支持 vi /etc/default/grub
intel_iommu=on iommu=pt #x86
iommu.passthrough=1 #armꟊ
grub2-mkconfig -o /boot/efi/EFI/系统/grub.cfg


Mellanoxz 查看使能数量
1. 先切到linux OS并安装Mallenox驱动(随便那个版本,不是inbox即可)
2. 开启mst服务,命令:mst start
3.可以看到那个MST device ,即:/dev/mst/mt4115_pciconf0
4.通过命令查看SR-IOV是否开启:mlxconfig -d /dev/mst/mt41139pciconf0 q|grep -i "SR"(过滤字符自己酌情修改) 5.通过命令修改SR-IOV数并开启SR-IOV命令:mlxconfig -d /dev/mst/mt41139pciconf0 set SRIOV_EN=1 NUM_OF_VFS=4(数量请根据实际情况填写)

查看可以使能的网口数量
cat /sys/class/net/eth4/device/sriov_totalvfs


Pxe Vlan
安全模式会导致进不了PXE!!!!!!!!!!!!!!!!!!!!!!!!
要选最新系统,否则没有网卡驱动报错超时

CentOS搭建本地源
[base-local]
name=iso
baseurl=file:///mnt
gpgcheck=0
enabled=1


vim /etc/modprobe.d/bond.conf
alias bond0 bonding
options bond0 miimon=100 mode=6


ping
cat /etc/sysconfig/network-scripts/ifcfg-ethx
ifconfig ethx xx.xx.xx.xx/16 up 这条命令并不会在network-scripts文件内生成配置文件
以下为手写网口配置文件配置IP等

DEVICE=ethx
BOOTPROTO=none
HWADDR=0:0C::29:8E:E4:BC
ONBOOT=yes
TYPE=Ethernet
NETMASK=255.255.0.0
IPADDR=192.168.1.33
USERCTL=yes
IPV6INIT=no
GATEWAY=192.168.1.3

设置好后使用:
service network restart
使网络设置生效。
注意:若ONBOOT设置为no,会导致service network restart启动错误
service network restart或/etc/init.d/network restart
以下为备注
DEVICE=ethx 设备/网口名称
BOOTPROTO=none
HWADDR=0:0C::29:8E:E4:BC 设备/网口MAC地址
ONBOOT=yes 开机自动启动
TYPE=Ethernet 设备/网口的类型为以太网
NETMASK=255.255.0.0 子网掩码
IPADDR=192.168.1.33 IP地址
USERCTL=yes
IPV6INIT=no
GATEWAY=192.168.1.3 默认网关

ifcfg-ech0文件中的内容包含以下信息
1. DEVICE: 网络接口名称
2. TYPE: 配置文件接口类型(Ethernet以太网)
3. UUID: 随机生成唯一标识符
4. ONBOOT: 是否在开机的时候启动网络连接(yes/no)
5. BOOTPROTO: 系统启动地址协议(也就是ip的生成方式,如果不想ip地址发生修改要使用static选项)
6. HWADDR: MAC地址
7. PEERDNS 是否允许DHCP获得的DNS覆盖本地的DNS
8. DEFROUTE 是否选择该接口为默认路由(yes/no)
9. PEERROUTES
10. IPV4_FAILURE_FATAL 如果ipv4配置失败禁用设备
11. IPV6INIT 是否启用ip6接口
12. NAME 网络连接名字

https://blog.csdn.net/qq_43386754/article/details/85xx6051
https://www.cnblogs.com/adforce/p/3363681.html
https://blog.csdn.net/weixin_30999777/article/details/116575050


2.5 卸载驱动
1显示已安装的驱动:
[root@SW ~]# lsmod | grep
ngbe
ngbe 208399 0
2卸载驱动: r mmod ngbe
[root@SW ~]# rmmod ngbe
3) 再次查看已安装的驱动,已经没有 ngbe 驱动。
[root@SW ~]# lsmod | grep ngbe

使用 ethtool f 命令升级网卡固件
1) 将待升级固件文件上传到操作系统对应目录 centos 为: :/usr/lib/firmware/ 、
Ubuntu 为: :/lib/firmware/ 、 SUSE 为: :/lib/ 。
2) 执行 ethtool -f 命令升级固件: ethtool -f [ 网口名称 ] 固件名称
PS:其中 enP2p233s0f0 为网口名称,每张网卡只需选取其中任意一个网口进行操作即
可; SF200T_10015.arm64.img 为步骤 1 中上传的固件文件名称。
3) 步骤 2 命令执行完成后,重启系统使固件生效。
4) 执行 ethtool i 网口名称 检查固件版本是否升级成功。(非必要步骤)


GRO LRO TSO MTU9000接受数据包不正常
具体为length小于mtu值解决方法
就是多接收几次,并且用下面这个命令接收
tcpdump -ni ens1f0 src host 50.50.50.20 -v -c 10 |grep -i length


组播,单播,广播

单播(unicast): 是指封包在计算机网络的传输中,目的地址为单一目标的一种传输方式。它是现今网络应用最为广泛,通常所使用的网络协议或服务大多采用单播传输,例如一切基于TCP的协议。

组播(multicast): 也叫多播, 多点广播或群播。 指把信息同时传递给一组目的地址。它使用策略是最高效的,因为消息在每条网络链路上只需传递一次,而且只有在链路分叉的时候,消息才会被复制。

广播(broadcast):是指封包在计算机网络中传输时,目的地址为网络中所有设备的一种传输方式。实际上,这里所说的“所有设备”也是限定在一个范围之中,称为“广播域”。


当unicast/multicast bit 位置1时就是 multicast,mac 地址为0x FFFFFFFFFFFF时就是broadcast.
1、单播 MAC 地址是指第一个字节的最低位是 0 的 MAC 地址;
2、组播 MAC 地址是指第一个字节的最低位是 1 的 MAC 地址;
3、广播 MAC 地址是指每个比特都是 1 的 MAC 地址。广播 MAC 地址是组播 MAC 地址的一个特例。

后面为前两位转换为二进制的第8位为 1 还是 0 来区分 单播和组播
要求
广播 ff ff ff ff ff ff/1111 1111 xxxxx
组播 ab bb cc dd ee ff/1010 1011/满足组播要求
网口MAC单播
非网口MAC单播/任意单播 00 00 00 00 00 00/满足单播要求

虚拟机克隆
virsh list –all 查看已经安装的虚拟机
virt-clone --original centos7.8 --name centos7.8-2 --file /home/centos7.8-2
--original //后面跟要克隆的虚拟机名字
--name //克隆后虚拟机的名字
--file //指定存放的路径
克隆完成后 用virsh list --all 查看并启动
virsh start sunhao-3 --console
进入到sunhao-3虚拟机后查看IP也克隆了
这时需要进入/etc/sysconfig/network-scripts/ 编辑配置文件
vim ifcfg-eth0 配置IP 然后重启
systemctl restart network

virt-clone --original centos7.8 --name centos7.8-2 --file /home/centos7.8-2
virt-clone --original Cent7.6 --name Cent7.6-6 --file /home/Cent7.6-6
一般就10秒内搞定,10-60秒内

While循环,可以替代简单的脚本操作

注意这个是没有次数的,会一直操作,要手动停止
while [ 1 ]; do ifconfig enox down;sleep 1;ifconfig enox up;sleep 10;done

pkt_length取1460
netperf -H <Server IP> -t UDP_STREAM -l 300 -- -m pkt_length -M pkt_length (-s 4096000)

修改MTU为9000
ifconfig ethx mtu 9000
pkt_length取8960
netperf -H <Server IP> -t UDP_STREAM -l 300 -- -m pkt_length -M pkt_length (-s 4096000)


https://zhuanlan.zhihu.com/p/652297549
https://zhuanlan.zhihu.com/p/640784575
SFP 最大2.5G
SFP+ 最大10G
SFP28 最大25G
SFP56 最大53G
QSFP+ 最大40G
QSFP28 最大100G

QSFP系列封装
四通道小型可热插拔(Quad Small Form-Factor Pluggable)

SFP是SMALL FORM PLUGGABLE(小型可插拔)的缩写


IP_FORWARD


https://blog.csdn.net/dillanzhou/article/details/127218408
linux服务器经常被用来提供防火墙、路由器、NAT等功能,在这些场景下,linux内核需要将网卡上收到的报文转发给其他网络设备。linux内核提供了ip_forward参数用于开关内核的报文转发功能,只有这个开关被打开时,内核才会执行报文的转发。网上能找到不少文章介绍ip_forward参数的基本用途和配置方式,但没有什么文章具体介绍这个参数配置后具体会对内核的网络行为产生哪些影响,以及在内核中是如何实现的。而这些问题的答案对转发功能的使用方式会产生很大的影响。

本文将详细分析ip_forward参数的配置方式和影响,以及这个参数在内核中的实现逻辑。分析基于5.9.11版本的内核
ip_forward功能的配置开关有三个位置:

1. /proc/sys/net/ipv4/ip_forward
2. /proc/sys/net/ipv4/conf/{all/default/devname}/forwarding
3. /proc/sys/net/ipv6/conf/{all/default/devname}/forwarding

其中第一个配置是许多文章中提到的ip报文转发开关,这个配置开关是linux早期版本中定义的,它只能控制IPv4报文的转发功能,其功能和取值都等价于/proc/sys/net/ipv4/conf/all/forwarding。此外,实际上真正决定报文能否被转发的,是conf/devname/forwarding,这个配置在每个网卡设备的粒度控制这个网卡上收到的ipv4/ipv6报文能否被转发

总结
本文详细分析了linux内核中常用的网络配置项ip_forward的用法、作用和实现。最后看一下相关问题是否已经被解答:

1、ip_forward配置在什么位置配置?能按什么粒度配置?
ip_forward相关配置在ipv4和ipv6的sysctl配置中有独立的配置项,按网络设备粒度配置生效。真正起影响的配置项为forwarding。

2、ip_forward打开或关闭会对内核的网络处理流程产生哪些影响?
ip_forward配置开关会对内核网络处理的多处逻辑产生影响,其中最重要的影响是决定目的地址不是本地设备的报文能否被转发。具体影响的逻辑参见上文。

3、ip_forward配置除了影响转发功能外,是否还会对其他网络配置或功能产生副作用?
除了影响内核转发功能开关,ip_forward的开关还会影响accept_redirects功能和LRO功能的开关,需要注意对相关功能和网络性能的影响。此外,ipv6的forwarding开关还会影响accept_ra的功能。

4、ip_forward的配置开关在内核中是如何实现的?
每个sysctl配置项都有对应的处理函数,由sysctl文件系统的read/write实现函数来调用。ip_forward的处理函数为devinet_sysctl_forward,这个函数主要通过读写设备的forwarding配置项来使配置生效

sysctl
sysctl命令 被用于在内核运行时动态地修改内核的运行参数,可用的内核参数在目录/proc/sys中。它包含一些TCP/ip堆栈和虚拟内存系统的高级选项, 这可以让有经验的管理员提高引人注目的系统性能。用sysctl可以读取设置超过五百个系统变量
-n:打印值时不打印关键字;
-e:忽略未知关键字错误;
-N:仅打印名称;
-w:当改变sysctl设置时使用此项;
-p:从配置文件“/etc/sysctl.conf”加载内核参数设置;
-a:打印当前所有可用的内核参数变量和值;
-A:以表格方式打印当前所有可用的内核参数变量和值。


https://blog.csdn.net/whatday/article/details/106003836
出于安全考虑,Linux系统默认是禁止数据包转发的。所谓转发即当主机拥有多于一块的网卡时,其中一块收到数据包,根据数据包的目的ip地址将数据包发往本机另一块网卡,该网卡根据路由表继续发送数据包。这通常是路由器所要实现的功能。

要让Linux系统具有路由转发功能,需要配置一个Linux的内核参数net.ipv4.ip_forward。这个参数指定了Linux系统当前对路由转发功能的支持情况;其值为0时表示禁止进行IP转发;如果是1,则说明IP转发功能已经打开。
使用 sysctl 指令配置
sysctl 命令的 -w 参数可以实时修改Linux的内核参数,并生效。所以使用如下命令可以开发Linux的路由转发功能。
sysctl -w net.ipv4.ip_forward=1

内核参数在Linux文件系统中的映射出的文件:/proc/sys/net/ipv4/ip_forward中记录了Linux系统当前对路由转发功能的支持情况。文件中的值为0,说明禁止进行IP转发;如果是1,则说明IP转发功能已经打开。可使用vi编辑器修改文件的内容,也可以使用如下指令修改文件内容:
echo 1 > /proc/sys/net/ipv4/ip_forward


Iptables
https://blog.csdn.net/wangquan1992/article/details/100534543
iptables的前身叫ipfirewall (内核1.x时代),这是一个作者从freeBSD上移植过来的,能够工作在内核当中的,对数据包进行检测的一款简易访问控制工具。但是ipfirewall工作功能极其有限(它需要将所有的规则都放进内核当中,这样规则才能够运行起来,而放进内核,这个做法一般是极其困难的)。当内核发展到2.x系列的时候,软件更名为ipchains,它可以定义多条规则,将他们串起来,共同发挥作用,而现在,它叫做iptables,可以将规则组成一个列表,实现绝对详细的访问控制功能。

他们都是工作在用户空间中,定义规则的工具,本身并不算是防火墙。它们定义的规则,可以让在内核空间当中的netfilter来读取,并且实现让防火墙工作。而放入内核的地方必须要是特定的位置,必须是tcp/ip的协议栈经过的地方。而这个tcp/ip协议栈必须经过的地方,可以实现读取规则的地方就叫做 netfilter.(网络过滤器)
-F: FLASH,清空规则链的(注意每个链的管理权限)
iptables -t nat -F PREROUTING
iptables -t nat -F 清空nat表的所有链
-t nat:显示所有的关卡的信息
-P :设置默认策略的(设定默认门是关着的还是开着的)
默认策略一般只有两种
iptables -P INPUT (DROP|ACCEPT) 默认是关的/默认是开的

规则管理命令
-A:追加,在当前链的最后新增一个规则
-I num : 插入,把当前规则插入为第几条。
-I 3 :插入为第三条
-R num:Replays替换/修改第几条规则
格式:iptables -R 3 …………
-D num:删除,明确指定删除第几条规则

查看管理命令 “-L”
附加子命令
-n:以数字的方式显示ip,它会将ip直接显示出来,如果不加-n,则会将ip反向解析成主机名。
-v:显示详细信息
-vv
-vvv :越多越详细
-x:在计数器上显示精确值,不做单位换算
--line-numbers : 显示规则的行号
-t nat:显示所有的关卡的信息

详解匹配标准
5.1、通用匹配:源地址目标地址的匹配
-s:指定作为源地址匹配,这里不能指定主机名称,必须是IP
IP | IP/MASK | 0.0.0.0/0.0.0.0
而且地址可以取反,加一个“!”表示除了哪个IP之外
-d:表示匹配目标地址
-p:用于匹配协议的(这里的协议通常有3种,TCP/UDP/ICMP)
-i eth0:从这块网卡流入的数据
流入一般用在INPUT和PREROUTING上
-o eth0:从这块网卡流出的数据
流出一般在OUTPUT和POSTROUTING上

相关新闻

A100 40GB与80GB租用选型:显存余量与成本的深度博弈

A100 40GB与80GB租用选型:显存余量与成本的深度博弈

这段时间陆续有几个团队来问我同一件事&#xff1a;同样标着 A100 的加速卡&#xff0c;80GB 和 40GB 在租用平台上差价不小&#xff0c;到底该怎么选&#xff1f;很多人第一反应是“显存翻倍当然选大的”&#xff0c;可一旦把任务负载、推理并发、训练方式和账单放在一起算&am…

2026/10/20 10:26:07 阅读更多 →
医疗器械EMC整改外包设计:从测试失败到过检的实战路径

医疗器械EMC整改外包设计:从测试失败到过检的实战路径

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 10:25:06 阅读更多 →
AI辅助综述写作全流程:从文献整理到学术化改写的实操指南

AI辅助综述写作全流程:从文献整理到学术化改写的实操指南

“综述不会写”是每年毕业季最常被问的一句话&#xff0c;也是我在科研写作里见过最多人卡住的地方。文献读了二三十篇&#xff0c;摘要复制了一堆&#xff0c;真动手写正文却不知道先讲概念还是先讲方法&#xff0c;也不知道该按年份排还是按主题分。这两年我试过不少AI写作工…

2026/10/20 10:25:06 阅读更多 →

最新新闻

蒙特卡洛法在电力系统状态估计与风险评估中的MATLAB实现

蒙特卡洛法在电力系统状态估计与风险评估中的MATLAB实现

简介&#xff1a;已有307人学习的这份Matlab资源&#xff0c;聚焦蒙特卡洛法在电力系统状态估计与风险评估中的应用&#xff0c;适合电力系统研究人员、运行工程师及电气专业高年级学生使用。资源从建模出发&#xff0c;覆盖节点电压、线路潮流等状态量的最可能估计&#xff0c…

2026/10/20 11:08:03 阅读更多 →
KernelSU meta-overlayfs 元模块快速安装与验收清单:让模块覆盖 system 真正生效

KernelSU meta-overlayfs 元模块快速安装与验收清单:让模块覆盖 system 真正生效

KernelSU meta-overlayfs 元模块快速安装与验收清单&#xff1a;让模块覆盖 system 真正生效 【免费下载链接】KernelSU A Kernel based root solution for Android 项目地址: https://gitcode.com/GitHub_Trending/ke/KernelSU 给 KernelSU 装上元模块&#xff08;负责…

2026/10/20 11:08:03 阅读更多 →
Bonsai-demo:llama.cpp 定制 fork 跑 2-bit 三值 27B 推理的完整解析

Bonsai-demo:llama.cpp 定制 fork 跑 2-bit 三值 27B 推理的完整解析

Bonsai-demo&#xff1a;llama.cpp 定制 fork 跑 2-bit 三值 27B 推理的完整解析 【免费下载链接】Bonsai-demo Bonsai Demo 项目地址: https://gitcode.com/GitHub_Trending/bo/Bonsai-demo Bonsai-demo 是一套让 Bonsai 2 27B 这类 2-bit 级三值量化模型在本地机器上高…

2026/10/20 11:08:03 阅读更多 →
极化码MATLAB仿真:编码、SC译码与误码率统计实战

极化码MATLAB仿真:编码、SC译码与误码率统计实战

简介&#xff1a;PCode.zip 是一份面向通信工程学习者与科研人员的极化码 MATLAB 仿真源码包&#xff0c;聚焦 Erdal Arikan 提出的极化码编解码原理与性能验证&#xff0c;适合具备一定 MATLAB 与信道编码基础、希望深入理解 5G 极化码实现细节的读者。压缩包共 32 个文件&…

2026/10/20 11:08:03 阅读更多 →
用Python搞定库存管理:ABC分类、安全库存、预警系统一站式实现

用Python搞定库存管理:ABC分类、安全库存、预警系统一站式实现

做电商或零售的朋友应该都经历过这种场景&#xff1a;仓库里堆了几百个SKU&#xff0c;哪些该多备货、哪些该清仓、什么时候该补货&#xff0c;全靠拍脑袋。月底一盘点&#xff0c;有的货积压半年卖不动&#xff0c;有的爆款三天就断货。这篇文章不讲大道理&#xff0c;直接用P…

2026/10/20 11:08:03 阅读更多 →
REA 逆向工程工具:1 行命令接入 AI,看懂任意 App 的底层实现

REA 逆向工程工具:1 行命令接入 AI,看懂任意 App 的底层实现

REA 逆向工程工具&#xff1a;1 行命令接入 AI&#xff0c;看懂任意 App 的底层实现 【免费下载链接】rea Reverse engineer anything with agents, from app behavior down to native binaries. 项目地址: https://gitcode.com/GitHub_Trending/rea2/rea 想在自家产品里…

2026/10/20 11:07:02 阅读更多 →

日新闻

CLRC663芯片Pin-to-Pin替代实战:从评估到量产全记录

CLRC663芯片Pin-to-Pin替代实战:从评估到量产全记录

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:01:30 阅读更多 →
ESP32舵机控制指南:原理、多路驱动与避坑实战

ESP32舵机控制指南:原理、多路驱动与避坑实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:01:30 阅读更多 →
位移法实现一阶低通滤波:单片机ADC采样降噪实战

位移法实现一阶低通滤波:单片机ADC采样降噪实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:01:30 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型&#xff08;GMM&#xff09;的语音识别系统&#xff0c;很多人第一反应就是一堆数学公式&#xff0c;觉得门槛很高。但如果你真的在MATLAB里把它落地跑通&#xff0c;会发现核心其实就是三件事&#xff1a;把声音变成特征向量&#xff0c;用GMM给每个类别…

2026/10/20 10:02:13 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人&#xff0c;但落到具体操作上&#xff0c;无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程&#xff1a;对图像做反白、改调色板、彩色转灰度&#xff0c;最后把像素数据导出成txt文件。单看每一…

2026/10/19 17:32:41 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词&#xff0c;你会发现一个很有意思的现象&#xff1a;每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型&#xff0c;有人指的是运动控制系统&#xff0c;还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/20 2:50:50 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 10:02:08 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 9:50:17 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 9:50:45 阅读更多 →