当前位置:   article > 正文

RK3588网络调试记录---linux双网口以及WIF_rk3588 linux a/b

rk3588 linux a/b

一、RK3588 ip设置

rk3588 linux版本运行的是ubuntu20.04,自17.0以后的以Debian为基本的发行版(ubuntu即其中之一)中都集成了一种更加强大的网络管理工具NetworkManager,因此,至20.04版本,一般的文件系统中至少存在了三种网络配置工具:ifconfig/ip、ifupdown/netplan、NetworkManager/Systemd-Networkd

1.ifconfig/ip

ifconfig来自于net-tools工具集,官方已经不再推荐使用,但是在很多教程和学校里面还在使用这个工具,ip来自于iproute2,是官方推荐的用来平替ifconfig的工具,相比ifconfig更加强大。

2.ifupdown/netplan

ifupdown是更为古老的ip配置工具,同ifconfig差不多,他是通过/etc/network/interfaces文件来管理ip的,ubuntu18.04以后的版本都将不再使用ifupdown来配置网络,即/etc/network/interfaces文件中设置固定ip将不再起作用,取而代之的是netplan,通过读取/etc/netplan/*.yaml文件来配置网络。示例如下:

# Let NetworkManager manage all devices on this system
network:
  ethernets:
    eth0:
      addresses: [192.168.111.204/24]
      nameservers: 
        addresses: [192.168.8.200,61.177.7.1]
  version: 2
  renderer: NetworkManager
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

不可以用tab缩进,yaml文件对文件格式要求很严格。
其他的字段都很好理解,其中的renderer: NetworkManager是指定渲染器,简单来说就是将除了配置文件指定的内容以外的内容,交给指定的渲染器来管理,甚至可以是如下配置文件:

network:
  version: 2
  renderer: NetworkManager
  • 1
  • 2
  • 3

即将网络管理全部交给NetworkManager。注意如果renderer的值被修改了,需要运行

netplan generate
  • 1

重新配置,另外命令:

netplan get
  • 1

可以查看当前的netplan配置。
那么,neplan是怎么进行配置的呢?我尝试查找相关的资料,但是并没有找到详细的资料,
netplan只是作为一个生成配置文件的工具,他通读取/etc/netplan/*.yaml文件,在系统启动早期的时候,生成位于/run/systemd/network的配置文件,例如/etc/netplan/01-netcfg.yaml将会生成了run/systemd/network/10-netplan-eno1.network文件,然后将控制权交给特定的渲染器,所以真正对网络进行管理的并不是netplan,而是renderer: 渲染器,目前可以选择的是NetworkManagerSystemd-networkd,这两种网络管理工具都会去读取位于/run/systemd/network的配置文件。例如networkd的官方文件写到:

CONFIGURATION FILES T
he configuration files are read from the files
located in the system network directory /lib/systemd/network, the
volatile runtime network directory /run/systemd/network and the local
administration network directory /etc/systemd/network. Networks are
configured in .network files, see systemd.network(5), and virtual
network devices are configured in .netdev files, see
systemd.netdev(5).

NetworkManager的没有找到,应该也是类似的方式。

3.NetworkManager/Systemd-Networkd

这个两个是可以相互替换的东西。都是用于网络配置的。

1)NetworkManager

一般用于桌面GUI环境的网络配置,rk3588的官方文件系统中,无论是桌面版还是非桌面版使用的都是该系统来管理网络,并且,不知道什么原因,使用ifconfig的命令,例如设置IP:

ifconfig eth1 192.168.1.4 netmask 255.255.255.0 up
	或者:ifconfig eth0 192.168.1.4/24 
  • 1
  • 2

然后使用命令ifconfig查看ip,发现ip确实也被改动过来,但是实际上似乎并没有连通。所以在**rk3588上配置ip的时候,尽量不要使用ifconfig或者ip的指令。**而是使用nmtui
使用命令:

systemctl --type=service
  • 1

可以看到NetworkManager.service 是启动状态,这个就是NetworkManager的守护进程。并且Systemd-Networkd的服务并没有启用,一般情况下,我们只会使用一直网络管理工具,因为二者并不能很好的处理他们之间的冲突。
在这里插入图片描述
如果需要安装和启用NetworkManager可以使用以下的命令:

sudo apt install networkmanager
sudo systemctl enable NetworkManager
sudo systemctl disbale systemd-networkd
  • 1
  • 2
  • 3

另外NetworkManager还提供了两个非常好用的工具,nmcli(Network Manager Command line)nmtui( Network Manager Text User Interface),从英文全称也可以看出来,前者是基于命令行,后者是基于光标的文本用户界面。
对于rk3588,也是使用的这两个工具来进行网络配置的。

1.nmcli

连接wifi,命令:

sudo nmcli device wifi connect myRouter password 12345678	
  • 1

myRouter ssid12345678是密码
设置wifi的AP模式:

nmcli device wifi hotspot ifname wlan0 con-name MyHostspot ssid firefly password 12345678
  • 1

wlan0是无线网卡名,fireflyssid,12345678是密码。
另外,启用AP模式还可以通过以下的方式来启动:

1)安装工具集
sudo apt-get install hostapd
sudo apt-get install isc-dhcp-server
2)	编辑文件
sudo vi /etc/hostapd/hostapd.conf
	内容:
	interface=wlan0
	driver=nl80211
	ssid=eavision
	channel=10
3)启动hostapd
sudo service NetworkManager stop # 关闭NetworkManager ,防止管理权限冲突
sudo nmcli radio wifi off  # sudo nmcli nm wifi off
sudo rfkill unblock wlan
sudo ifconfig wlan0 192.168.1.1/24 up
sudo hostapd /etc/hostapd/hostapd.conf -B
4)开启dhcp
sudo vi /etc/dhcp/dhcpd.conf
	内容:
			subnet 192.168.1.0 netmask 255.255.255.0 {                        
				range  192.168.1.100 192.168.1.120;                         # ip 起始地址  
				option broadcast-address 192.168.1.255;                     # 广播地址  
				option routers 192.168.1.1;                                 # 网关 要写成这台机器的 wlan0 的ip  
			}  
5)启动:
sudo dhcpd   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26

即可创建ssdieavison的无密码ap

2.nmtui

直接输入nmtui,就会打开一个文件界面,通过方向键即可配置网络。rk3588调试双网口的时候就是使用的该工具。
在这里插入图片描述
关于用法就不再赘述,网上的资料很多。

2)Systemd-Networkd

在rk3588的firefly开发板上面,该服务并没有被启用! 如果仅是为了配置ip,这一节可以忽略。
systemd是用来替换init.d的,例如我们经常用到的开机自启动的功能,在ubuntu18.04版本以后,以前常用的在rc.local中添加启动脚本的方式已经被弃用了,转而代之的是注册一个系统服务。这个系统服务就是systemd管理的常见的以systemctl 开头的指令就是受此支持。
systemd 的其中一部分是 systemd-networkd,它负责 systemd 生态中的网络配置。使用 systemd-networkd,你可以为网络设备配置基础的 DHCP/静态 IP 网络。它还可以配置虚拟网络功能,例如网桥、隧道和 VLAN。systemd-networkd 目前还不能直接支持无线网络,但你可以使用 wpa_supplicant 服务配置无线适配器,然后把它和systemd-networkd联系起来。
他的守护进程是systemd-networkd
我们可以使用:

start/enable systemd-networkd.service.
  • 1

来启动该服务。
systemd-networkd 配置网络连接
要用 systemd-networkd 配置网络服务,你必须指定带.network 扩展名的配置信息文本文件。这些网络配置文件保存到 /etc/systemd/network 并从这里加载。当有多个文件时,systemd-networkd 会按照字母顺序一个个加载并处理。
举例说明:
设置网口eth0
编辑:/etc/systemd/network/10-eth0.network

[Match]
Name=eth0

[Network] 
Address=10.10.10.9/24
Gateway=10.10.10.1
DNS=9.9.9.9
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

设置无线wlan0
编辑/etc/systemd/network/20-wlan0.network

[Match]
Name=wlan0
SSID=Wifi-SSID

[Network]
DHCP=ipv4
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

如果不使用netplan,运行以下命令:

apt purge netplan.io
rm -rf /etc/netplan
  • 1
  • 2

启动服务:

systemctl unmask systemd-networkd
systemctl enable systemd-networkd
  • 1
  • 2

设置wifi密码:

wpa_passphrase Wifi-SSID Sweet-Password >> /etc/wpa_supplicant/wpa_supplicant-wlan0.conf
systemctl enable  wpa_supplicant@wlan0.service
  • 1
  • 2

前提要安装wpa套件。
如果遇到启动过程很慢的情况,可以看下systemd-networkd-wait-online是否被启用了。当启用systemd-networkd.service 的时候,默认的systemd-networkd-wait-online.service也会被启动,官网的描述如下:
在这里插入图片描述
可以按照官网的方式禁用该服务,或者使用以下指令:

systemctl disable systemd-networkd-wait-online.service
  • 1

即可加快启动速度。
与之相关的还有一个systemd服务systemd-resolved,该服务器是提供DNS域名解析的。之前曾经遇到过域名解析问题:域名解析问题 发现更改/etc/systemd/resolved.conf文件并不能正确设置dns,这是因为除了这里的resolved.config文件,该服务还会读取其他地方的配置文件例如:/etc/systemd/resolved.conf.d/*.conf,如果名字一样,还有优先级的区别,所以可能导致设置失败的情况发生。官网的说明如下:
在这里插入图片描述
systemd-resolved作为一个域名解析服务,和NetworkManager/Systemd-Networkd相比,是更加底层的存在,可以为上述两者相关联并提供服务。
例如,如果使用NetworkManager来管理网络(大多数发行版),那么需要编辑/etc/NetworkManager/NetworkManager.conf文件,添加如下内容:

[main]
dns = systemd-resolved
  • 1
  • 2

官方描述如下;
在这里插入图片描述
之后还需要重启服务:

sudo systemctl start systemd-resolved
sudo systemctl enable systemd-resolved
sudo systemctl restart NetworkManager
  • 1
  • 2
  • 3

如果不想使用systemd-resolved提供域名解析,则需要编辑/etc/systemd/resolved.conf文件:

[Resolve]
[Resolve]
DNS=127.0.0.1
FallbackDNS=1.0.0.1
MulticastDNS=no
DNSStubListener=no
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

另外如果发现即使已经使用命令sudo systemctl disable systemd-resolved.service来失能systemd-resolved,还是不生效,还需要确保systemd-resolved没有监听127.0.0.1DNSStubListener=no 或者 mDNS with MulticastDNS=no
这是因为,该服务会因为应用程序的请求而自启动。
另外还需要确保NetworkManager没有启用他。即/etc/NetworkManager/NetworkManager.conf

[main]
dns=none
systemd-resolved=false
  • 1
  • 2
  • 3

一般情况下,该配置文件下还有一个参数:

[main]
plugins=ifupdown,keyfile

[ifupdown]
managed=false

[device]
wifi.scan-rand-mac-address=no
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

[ifupdown]managed=false代表NetworkManager不负责管理ifupdown的接口,即/etc/network/interfaces中声明的网络接口。

二、RK3588 双网卡配置

对于独立的双网卡配置问题,分为几种情况:

1.桥接(不用路由器)

两个网口的时候,电脑A和电脑B都能ping通连两个linux网口。

1)两个网口同网段

将两个网卡设置为同一个网段的时候,默认到该网段的路由,通常会被设置为后启动的网卡,因此同时只能一个网口工作。如果必须设置同网段(不合理),那么我们需要为每个网口设置单独的路由表:

ifconfig eth0 192.168.1.100 netmask 255.255.255.0 up
ifconfig eth1 192.168.1.140 netmask 255.255.255.0 up
route del -net 192.168.1.0/24 dev eth1
route add -host 192.168.1.141 dev eth1
route del -net 192.168.1.0/24 dev eth0
route add -host 192.168.1.4 dev eth0
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

请注意,上面的ifconfig设置ip的方式在3588上面很可能无效!

2)两个网口配置不同段ip

不需要额外的设置,即可ping通。

2.路由功能

两个ARM板子有两个网口,eth0eth1,分别连了A电脑和B电脑,可以直接从A电脑 ping B电脑 互通。
需要使用brctl搭建网桥(未验证,来自其他博客):

brctl addbr br0      		#建立逻辑网段名称为br0
brctl addif br0 eth0		#让eth0成为br0的一个端口
brctl addif br0 eth1		#让eth1成为br0的一个端口
ifconfig eth0 0.0.0.0 		#eth0和eth1作为一个端口,就不需要ip了
ifconfig eth1 0.0.0.0
brctl show					# 查看现有的网桥设备,及该网桥上连接的设备(虚拟机网卡等)

ifconfig br0 192.168.1.1 netmask 255.255.255.0	#给br0的虚拟网卡配置IP:192.168.1.1(就相当于虚接口的ip地址)

brctl setageing br0 0
brctl setfd br0 0
echo "0" > /sys/devices/virtual/net/br0/bridge/multicast_snooping
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

三、带宽和吞吐量测试

测试工具iperf,测试平台:linux开发板和windows电脑网线直连,如果测试wifi的话,需要一个做AP一个做device;
linux下工具安装:

apt update
apt install iperf3
  • 1
  • 2

windows下直接官网下载:
iperf3 for windwos
服务器端(linux)运行以下指令:
指定端口8888,显示间隔1s,可能需要防火墙放行端口。

iperf3 -s -i 1 -p 8888 
  • 1

windows下,解压的iperf3目录下,运行cmd。

\iperf-3.1.3-win64> ./iperf3 -c 10.42.0.1 -p 8888 -i 1 -t 20
  • 1

其中-c的参数10.42.0.1是指linux端的ip地址;-t 的参数是测试的时间;

测试结果:
在这里插入图片描述
可以看到服务端和客户端显示的带宽都是72m。

参考资料

netpaln学习
systemd-networkd官方文档
stackExchanged
netplan官方文档
netplan官网
systemd-networkd官方文档
networkmanage/systemd-networkd/netplan简介
NetworkManager WiKI

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/229569
推荐阅读
相关标签
  

闽ICP备14008679号