linux网络调试(linux怎么连接网络)
其实linux网络调试的问题并不复杂,但是又很多的朋友都不太了解linux怎么连接网络,因此呢,今天小编就来为大家分享linux网络调试的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!
linux网络相关的调试命令
在Linux网络调试中,常用的一系列命令能够帮助我们快速定位和解决网络相关问题。本文将详细介绍如何使用这些命令进行网络故障诊断。
首先,查看网卡物理连接状态,可以使用`nmcli device status`命令获取网络设备的详细信息。这会展示当前连接的网络设备及其状态,帮助确认网络连接是否正常。
查看IP相关信息时,`ifconfig`命令是一个基础工具。它用于配置和显示网络接口的网络参数。例如,eth0、eth4、wlan0、eno17776、ens33、ens160、bond0、virbr0、br0和lo等,分别代表不同的网络接口,如以太网接口、无线接口、团队网卡绑定接口等。
要修改网卡IP地址,可以采用以下方法:
手动修改网卡配置文件:使用`vim/etc/sysconfig/network-scripts/ifcfg-ens33`命令打开并编辑ens33的配置文件,调整IP地址、子网掩码、网关、DNS等参数,然后使用`nmcli con reload`、`nmcli connection down ens33`、`nmcli connection up ens33`或`systemctl restart network`等命令使配置生效。
使用`nmtui-edit`命令进行字符界面配IP(建议了解,但不推荐使用)。
临时配置IP地址,可以通过命令`ifconfig ens38 192.168.1.90`或`ifconfig ens38 192.168.1.90 netmask 255.255.255.0`实现。
查看端口的监听状态,使用`netstat an ut p`命令,其中`-a`表示显示所有连接和监听端口,`-u`表示显示UDP协议连接,`-t`表示显示TCP协议连接,`-p`表示显示连接对应的PID与程序名。
了解网络连接状态,`netstat`命令提供了丰富的信息,如连接协议种类、接收/发送字节数、本地和远程地址等。
优化TCP连接快速释放,可以通过修改`/proc/sys/net/ipv4/tcp_fin_timeout`文件,缩短TIME_WAIT时间来快速释放链接。
配置主机名和IP与主机名(域名)的对应关系,编辑`/etc/hostname`和`/etc/hosts`文件,后者优先级高于DNS解析。
查看路由信息,使用`route-n`命令,输出包含目标网络、网关地址、子网掩码等信息的路由表。
添加/删除路由条目,使用`route add`或`route del`命令,根据需要添加或删除路由条目,实现特定网络数据走指定网卡。
网络调试时,`traceroute`命令有助于跟踪到目标网址经过的路由器,而`ping`命令用于测试网络连通性,`arping`则在IP冲突或网关冲突时用于检查网络状况。
最后,`watch`命令提供实时监控网络状态的功能,通过设置高亮显示变化的区域和指定执行间隔时间,实现网络数据包变化的实时监控。
ZYNQ+linux网口调试笔记(3)PL-ETH
在ZYNQ上使用gigE Vision协议的网络接口相机。
第一步:调通PS侧网口GEM0(Xilinx BSP默认配好)。
第二步:调通PS侧网口GEM1(见前一篇文档:开发笔记(1))。
第三步:调通PL侧网口(本文阐述)。
第四步:在PL侧网口上验证Jumbo Frame特性,并在应用层适配gigE Vision协议。
根据《xapp1082》可知,PL侧的PHY支持1000Base-X和SGMII两种配置,这两种配置对应两种不同的PHY引脚接口(连接到MAC)。而我们的hdf文件使用的是1000Base-X的配置。
关于网口的Linux驱动,我们在官网找到一份资料: Xilinx Wiki- Zynq PL Ethernet。资料很长,我们只看与我们相关的2.4.1 PL Ethernet BSP installation for 1000Base-X”这一章节就可以了。
首先导入FPGA设计同事提供的hdf文件:
在弹出的图形界面里,进入Subsystem AUTO Hardware Settings——Ethernet Settings——Primary Ethernet,确认可以看到PL侧网络设备axi_ethernet_0,说明hdf文件里已包含了必要的网口硬件信息:
上图中被选中的网口将成为Linux上的设备eth0。这里我们默认选择ps7_ethernet_0,即使用GEM0作为首选网口。
启用Xilinx AXI Ethernet驱动
进入Device Drivers-- Network device support–选中Xilinx AXI Ethernet(以及Xilinx Ethernet GEM,这是PS侧网口的驱动)
进入Networking support–选中 Random ethaddr if unset
进入Device Drivers-- Network device support-- PHY Device support and infrastructure–启用Drivers for xilinx PHYs
进入~~~~Device Drivers-- DMA Engine Support-–禁用~~~~Xilinx AXI DMAS Engine~~~(对应的配置项名为~~ CONFIG_XILINX_DMA~~~)
注意: Xilinx Wiki里对设备树节点的引用有误(&axi_ethernet),导致编译报错,应改为&axi_ethernet_0。
注:PL-ETH驱动所在路径:<project>/build/tmp/work-shared/plnx_arm/kernel-source/drivers/net/ethernet/xilinx/xilinx_axienet_main.c和xilinx_axienet_mdio.c。对应的内核配置项为CONFIG_NET_VENDOR_XILINX和CONFIG_XILINX_AXI_EMAC。
启用ethtool和tcpdump(调试用,非必须):
然后将生成的BOOT.BIN和image.ub拷贝到SD卡根目录下,将SD卡插入板子上,上电运行。
上电后,使用ifconfig eth1查看网口信息,观察MAC地址与设置的一致,且ifconfig eth1 192.168.1.11 up没有报错。
测试网络通路:ping PC是通的。说明网口工作正常。
Linux下eth1(即PL-ETH)的MAC地址有误
问题描述:
开机打印:
注意:
MAC地址是错的,驱动里解析出的是GEM0的MAC地址。
试验发现,即使在system-user.dtsi里不写local-mac-address,也照样解析出的是GEM0的MAC。
而将system-user.dtsi里的local-mac-address改名为pl-mac-address,并将驱动里解析的字符串也对应更改为pl-mac-address,则可以正确解析出来:
Passing MAC address to kernel via Device Tree Blob and U-Boot:
通过更改u-boot环境变量和设备树,为每个板子设置一个独特的MAC地址:
U-Boot里的环境变量ethaddr会覆盖掉设备树里pl-eth的local-mac-addr字段,从而影响Linux启动后的网卡MAC地址;
但U-Boot里的环境变量ipaddr不会对Linux启动后的配置产生任何影响。因为设备树里根本就没有关于IP地址的配置。
phy-mode怎么会是sgmii?查了下官方的提供的BSP里,也是“sgmii”。说明这个没问题。具体原因不清楚。
@TODO:设备树里的中断号的顺序如何影响功能?
为何读出来的IRQ号不对呢?这是因为这里读到的不是硬件的中断号,而是经过系统映射之后的软件IRQ number。两者不具有线性关系。
关于中断号的疑问:
Linux上的网口eth0、eth1的顺序,似乎是按照phy地址从小到大来排布的。
Xilinx xapp1082-zynq-eth.pdf(v5.0) July 16, 2018
Xilinx Wiki- Zynq PL Ethernet:
Xilinx Wiki- Linux Drivers:
Xilinx Wiki- Linux Drivers- Macb Driver:
Xilinx Wiki- Zynq Ethernet Performance:
查到关于Jumbo frame MTU的定义,当前值为9000,可否改大一些?
驱动源码里关于jumbo frame的说明:
设置MTU为9000,发现ping包最大长度只能设为ping 192.168.1.10-s 1472
【完】
Linux网络调试助手解决网络问题神器linux网络调试助手
随着网络技术的进步,使用Linux操作系统来构建复杂的网络环境,然而一些复杂的网络问题也随之而来,普通用户很难从中找出根本的原因以及解决之道。但是,Linux网络调试助手的出现,可以大大缩减这一调试网络的时间,为网络管理员提供了一定的便利。
Linux网络调试助手是一款以Linux操作系统环境为背景的工具,它可以有效地帮助用户解决Linux操作系统中的网络调试问题,有效地缩短调试时间,提高工作效率。它是一个完整的调试系统,具有故障定位、提供用户简洁的调试报告等功能,可以快速地定位网络问题的根本原因,方便用户进行网络调试。
Linux网络调试助手安装简单,可以使用C/C++编译器将其安装到Linux系统中,或者可以在Linux系统中直接安装,根据不同的用户需要进行选择。安装完毕后,首先在系统中建立一个指定的网络接口:
$ ip link add [LinkName] type veth\
peer name [PeerName]
可以使用ifconfig来查看和配置接口:
$ ifconfig [LinkName] 192.168.1.1/24
随后,再使用专业的Linux调试命令来检查网络连接状态:
$ ping [-c] [-s] [-m] [IP]
如果出现异常,Linux网络调试助手可以以指定的形式将调试报告发送出去,方便管理员进行分析:
$ diagreport [-d] [-o] [OUTFILE]
此外,Linux网络调试助手还可以使用tracepath命令,通过检查网络通路的路由情况,更快地定位网络故障,使网络管理员能够更快地解决网络问题:
$ tracepath [IP]
总而言之,Linux网络调试助手能够快速有效地为Linux网络管理员带来便利,它具有准确定位故障、完善调试报告、可控制路由跟踪等等多种功能,简化网络调试操作,为用户提供了一个安全可靠、快速有效的联网服务。