网络地址配置
使用网络需要进行最基本的配置,保证 MAC 和 IP 地址有效,使设备能通过网络被访问,设备本身通过网络也可以访问局域网其他主机以及访问外网。MAC 地址要求至少在本局域网内不能有冲突,ip 地址可以动态分配或静态分配,最终要为同一局域网网段且地址不冲突。
一般情况下首次连接板卡,可能不知道板卡 IP 地址或地址没有正确设置,总之可能无法通过网络连接访问到设备,这时只能通过串口连接来进行访问,配置好网络地址后就可以通过 Telnet 远程连接或者 FTP 互传文件了。
查看网卡及地址信息
配置网络地址前要先查看当前网络配置。使用 ifconfig
命令不加任何参数即可查看系统所有网卡及网络地址信息。在Shell界面通过 help ifconfig
可以查看到该指令的实际使用方式。
[root@sylixos:/root]# help ifconfig
show or set net interface parameter.
if there are no arguments, it will show all interface parameter
ifconfig -u (show all interface with 'IFF_UP' state)
ifconfig -r (show all interface with 'IFF_UP' & 'IFF_RUNNING' state)
set interface like following:
ifconfig en1 inet 192.168.0.3
ifconfig en1 netmask 255.255.255.0
ifconfig en1 gateway 192.168.0.1
ifconfig en1 dns 0 192.168.0.2
ifconfig dns 0 192.168.0.2
ifconfig [ifname] [{inet | netmask | gateway}] [address]
[root@sylixos:/root]# ifconfig
en1 Link encap: Ethernet HWaddr: 08:09:0a:0b:aa:5a
Dev: dm9000 Ifidx: 2 DHCP: D4 D6 Spd: 100 Mbps
inet addr: 192.168.7.30 netmask: 255.255.255.0
gateway: 192.168.7.1 broadcast: 192.168.7.255
inet6 addr: fe80::a09:aff:fe0b:aa5a Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
collisions:0 txqueue:0 tcpaf:1 tcpwnd:8192
RX ucast packets:0 nucast packets:50 dropped:0
TX ucast packets:0 nucast packets:8 dropped:0
RX bytes:7047 (6.8 KB) TX bytes:580 (580.0 B)
lo0 Link encap: Local Loopback
Dev: N/A Ifidx: 1 DHCP: D4 D6 Spd: N/A
inet addr: 127.0.0.1 netmask: 255.0.0.0
P-to-P: 127.0.0.1 broadcast: N/A
inet6 addr: ::1 Scope:Loopback
UP LOOPBACK RUNNING MTU:0 Metric:1
collisions:0 txqueue:0 tcpaf:2 tcpwnd:262140
RX ucast packets:3 nucast packets:0 dropped:0
TX ucast packets:3 nucast packets:0 dropped:0
RX bytes:168 (168.0 B) TX bytes:168 (168.0 B)
dns0: 0.0.0.0
dns1: 0.0.0.0
dns2: 0.0.0.0
dns3: 0.0.0.0
default device is: en1
list net interface: 2
[root@sylixos:/root]#
en1 和 lo0 是网卡接口名称,每个接口对应一个网卡,右边是其具体信息。
dns0~3 是系统 DNS 服务器地址配置信息,用于域名解析,为 0.0.0.0 表示未设置。
后面是指示当前默认网卡,如果系统要访问外网则会通过默认网卡的对应的网关进行转发。
最后是当前系统总共的网卡数目。
ifconfig
-u
命令用于显示所有已使能的网卡信息, ifconfig
-r
命令用于显示所有使能且已连接的网卡信息。
[root@sylixos:/root]#
[root@sylixos:/root]# ifconfig -u
en1 Link encap: Ethernet HWaddr: 08:09:0a:0b:aa:5a
Dev: dm9000 Ifidx: 2 DHCP: D4 D6 Spd: 100 Mbps
inet addr: 192.168.7.30 netmask: 255.255.255.0
gateway: 192.168.7.1 broadcast: 192.168.7.255
inet6 addr: fe80::a09:aff:fe0b:aa5a Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
collisions:0 txqueue:0 tcpaf:1 tcpwnd:8192
RX ucast packets:0 nucast packets:58 dropped:0
TX ucast packets:0 nucast packets:8 dropped:0
RX bytes:7897 (7.7 KB) TX bytes:580 (580.0 B)
lo0 Link encap: Local Loopback
Dev: N/A Ifidx: 1 DHCP: D4 D6 Spd: N/A
inet addr: 127.0.0.1 netmask: 255.0.0.0
P-to-P: 127.0.0.1 broadcast: N/A
inet6 addr: ::1 Scope:Loopback
UP LOOPBACK RUNNING MTU:0 Metric:1
collisions:0 txqueue:0 tcpaf:2 tcpwnd:262140
RX ucast packets:3 nucast packets:0 dropped:0
TX ucast packets:3 nucast packets:0 dropped:0
RX bytes:168 (168.0 B) TX bytes:168 (168.0 B)
dns0: 0.0.0.0
dns1: 0.0.0.0
dns2: 0.0.0.0
dns3: 0.0.0.0
default device is: en1
list net interface: 2
[root@sylixos:/root]# ifconfig -r
en1 Link encap: Ethernet HWaddr: 08:09:0a:0b:aa:5a
Dev: dm9000 Ifidx: 2 DHCP: D4 D6 Spd: 100 Mbps
inet addr: 192.168.7.30 netmask: 255.255.255.0
gateway: 192.168.7.1 broadcast: 192.168.7.255
inet6 addr: fe80::a09:aff:fe0b:aa5a Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
collisions:0 txqueue:0 tcpaf:1 tcpwnd:8192
RX ucast packets:0 nucast packets:58 dropped:0
TX ucast packets:0 nucast packets:8 dropped:0
RX bytes:7897 (7.7 KB) TX bytes:580 (580.0 B)
lo0 Link encap: Local Loopback
Dev: N/A Ifidx: 1 DHCP: D4 D6 Spd: N/A
inet addr: 127.0.0.1 netmask: 255.0.0.0
P-to-P: 127.0.0.1 broadcast: N/A
inet6 addr: ::1 Scope:Loopback
UP LOOPBACK RUNNING MTU:0 Metric:1
collisions:0 txqueue:0 tcpaf:2 tcpwnd:262140
RX ucast packets:3 nucast packets:0 dropped:0
TX ucast packets:3 nucast packets:0 dropped:0
RX bytes:168 (168.0 B) TX bytes:168 (168.0 B)
dns0: 0.0.0.0
dns1: 0.0.0.0
dns2: 0.0.0.0
dns3: 0.0.0.0
default device is: en1
list net interface: 2
ifconfig
命令只添加网卡接口名称则只显示该网卡的具体信息。
[root@sylixos:/root]#
[root@sylixos:/root]# ifconfig en1
en1 Link encap: Ethernet HWaddr: 08:09:0a:0b:aa:5a
Dev: dm9000 Ifidx: 2 DHCP: D4 D6 Spd: 100 Mbps
inet addr: 192.168.7.30 netmask: 255.255.255.0
gateway: 192.168.7.1 broadcast: 192.168.7.255
inet6 addr: fe80::a09:aff:fe0b:aa5a Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
collisions:0 txqueue:0 tcpaf:1 tcpwnd:8192
RX ucast packets:0 nucast packets:58 dropped:0
TX ucast packets:0 nucast packets:8 dropped:0
RX bytes:7897 (7.7 KB) TX bytes:580 (580.0 B)
[root@sylixos:/root]#
网卡信息详细说明:
- Link encap: Ethernet 网络类型(Ethernet、LowPAN、LowPAN-BLE、Local Loopback、PPP Link、SLIP Link、Tunnel Link、General)
- HWaddr: 08:09:0a:0b:aa:5a 网卡物理地址
- Dev: dm9000 网卡设备名称
- Ifidx: 2 网卡接口索引号
- DHCP: D4 D6 此字段为 DHCP 状态,“D4 D6”表示 IPv4,IPv6 的 DHCP 功能都关闭。D 指 disable,E 指 enable,4 和 6 分别指 IPv4 和 IPv6。当 DHCP 功能使能是还附带对应开关状态,如 E4(On) E6(On)。
- Spd: 100 Mbps 当前连接速度
- inet addr: 192.168.7.30 IPv4 地址
- netmask: 255.255.255.0 IPv4 地址掩码
- gateway: 192.168.7.1 IPv4 网关地址
- broadcast: 192.168.7.255 IPv4 子网广播地址
- inet6 addr: fe80::a09:aff:fe0b:aa5a IPv6 地址
- Scope:Link IPv6 地址域(Global,Link,Site,Unique,Loopback,Unknown)
- UP BROADCAST RUNNING MULTICAST 当前网卡状态及属性(运行,广播,连接,组播)
- MTU:1500 网卡( Maximum Transmission Unit )最大传输单元
- Metric:1 netif metric (NOT support now)
- collisions:0 CSMA interface collisions counter
- txqueue:0 发送队列数
- tcpaf:1 TCP ACK Delay frequecy, 1~127
- tcpwnd:8192 TCP 接收窗口数
- RX ucast packets:0 nucast packets:58 dropped:0 接收帧统计(单播,多播或广播,丢失)
- TX ucast packets:0 nucast packets:8 dropped:0 发送帧统计(单播,多播或广播,丢失)
- RX bytes:7897 (7.7 KB) 接收字节数统计
- TX bytes:580 (580.0 B) 发送字节数统计
设置静态 IP 地址
用户可以通过Shell 命令临时配置板卡的网络 IP,也可以通过修改 ifparam.ini
文件进行永久修改。
临时修改网络地址
ifconfig
命令可以直接修改指定网卡的网络地址,且立即起效,但为临时修改,当板卡重启后配置的信息都会丢失。
修改网卡 IP 地址
进入设备的Shell界面,修改网络接口 en1 的 IP 地址为 192.168.0.3。
[root@sylixos:/root]# ifconfig en1 inet 192.168.0.3
修改网卡子网掩码
进入设备的Shell界面,修改网络接口 en1 的 子网掩码为 255.255.255.0。
[root@sylixos:/root]# ifconfig en1 netmask 255.255.255.0
修改网卡网关
进入设备的Shell界面,修改网络接口 en1 的 网关为 192.168.0.1。
[root@sylixos:/root]# ifconfig en1 gateway 192.168.0.1
永久修改网络地址
想要永久的修改网络配置,一个取巧的方式就是把 ifconfig 相关配置命令写到 /etc/startup.sh
文件中,这样系统每次启动都会自动重新配置一下网络地址。更正规的方式是通过系统提供的专用于配置网络地址的配置文件 ifparam.ini
来实现永久的修改网络配置。同时, ifparam.ini
提供唯一方式来配置网卡物理地址。
系统每次启动都会读取 ifparam.ini
文件,该文件存储着系统网络方面的配置信息且掉电不丢失。
该文件位于 /etc
目录下,格式如下所示。
[dw_0]
enable=1
ipaddr=192.168.0.3
netmask=255.255.255.0
gateway=192.168.0.1
default=1
mac=00:11:22:33:44:98
- [dw_0]:网卡名,可以在系统下通过
ifconfig
命令查看需要配置的网卡[Dev:]字段。 - enable:网络接口使能。
- ipaddr:IPv4 IP 地址配置。
- netmask:IPv4 子网掩码配置。
- gateway:IPv4 网关配置。
- default:是否设为默认网卡。
- mac:硬件地址,除非网卡没有 MAC 地址, 否则不建议设置 MAC。
ifparam.ini
文件配置完成后,可以通过重启板卡使之生效。
设置动态 IP 地址
SylixOS 支持 DHCP 协议,包括 IPV4 和 ipv6,当局域网中存在 DHCP 服务器时,设备可自动获取网络配置。
临时启用动态 ip 地址
使用 ifup ifname [-dhcp] [-dhcp6]
命令可以临时使用 DHCP 方式启动网卡。
[root@sylixos:/root]# ifconfig en1
en1 Link encap: Ethernet HWaddr: ce:63:a8:1e:22:5c
Dev: e1000_0 Ifidx: 2 DHCP: D4 D6 Spd: N/A
inet addr: 192.168.196.101 netmask: 255.255.255.0
gateway: 192.168.196.1 broadcast: 192.168.196.255
inet6 addr: fe80::cc63:a8ff:fe1e:225c Scope:Link
BROADCAST MULTICAST MTU:1500 Metric:1
collisions:0 txqueue:0 tcpaf:2 tcpwnd:65535
RX ucast packets:2 nucast packets:804 dropped:0
TX ucast packets:1 nucast packets:7 dropped:0
RX bytes:59412 (58.0 KB) TX bytes:612 (612.0 B)
[root@sylixos:/root]# ifup en1 -dhcp
DHCP client starting...
DHCP client start.
net interface "en1" set up.
[root@sylixos:/root]# ifconfig en1
en1 Link encap: Ethernet HWaddr: ce:63:a8:1e:22:5c
Dev: e1000_0 Ifidx: 2 DHCP: E4(On) D6 Spd: 1000 Mbps
inet addr: 192.168.196.101 netmask: 255.255.255.0
gateway: 192.168.196.1 broadcast: 192.168.196.255
inet6 addr: fe80::cc63:a8ff:fe1e:225c Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
collisions:0 txqueue:0 tcpaf:2 tcpwnd:65535
RX ucast packets:14 nucast packets:1179 dropped:0
TX ucast packets:1 nucast packets:23 dropped:0
RX bytes:89731 (87.6 KB) TX bytes:2940 (2.8 KB)
[root@sylixos:/root]#
永久设置动态 IP 地址
如果希望系统每次启动都选择DHCP方式获取IP地址,则可以通过 ifparam.ini
文件进行配置。
当配置文件中存在“dhcp=1”和“dhcp6=1”会使能 IPv4 和 ipv6 的DHCP功能,且会忽略前面的静态IP配置。
[e1000_0]
enable=1
ipaddr=192.168.196.88
gateway=192.168.196.1
netmask=255.255.255.0
dhcp=1
dhcp6=1
default=1
[root@sylixos:/root]# ifconfig en1
en1 Link encap: Ethernet HWaddr: ce:63:a8:1e:22:5c
Dev: e1000_0 Ifidx: 2 DHCP: E4(On) D6 Spd: 1000 Mbps
inet addr: 192.168.196.101 netmask: 255.255.255.0
gateway: 192.168.196.1 broadcast: 192.168.196.255
inet6 addr: fe80::cc63:a8ff:fe1e:225c Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
collisions:0 txqueue:0 tcpaf:2 tcpwnd:65535
RX ucast packets:19 nucast packets:12145 dropped:0
TX ucast packets:1 nucast packets:15 dropped:0
RX bytes:825462 (806.1 KB) TX bytes:1564 (1.5 KB)
[root@sylixos:/root]#
网络连通性检查
最简单的测试网络连通性的操作就是使用 ping
命令 ping 目标主机的 ip 地址。
[root@sylixos:/root]# ifconfig en1
en1 Link encap: Ethernet HWaddr: 00:11:22:33:44:98
Dev: dm9000 Ifidx: 2 DHCP: D4 D6 Spd: 100 Mbps
inet addr: 192.168.7.30 netmask: 255.255.255.0
gateway: 192.168.7.1 broadcast: 192.168.7.255
inet6 addr: fe80::211:22ff:fe33:4498 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
collisions:0 txqueue:0 tcpaf:2 tcpwnd:8192
RX ucast packets:6 nucast packets:1 dropped:0
TX ucast packets:5 nucast packets:39 dropped:0
RX bytes:702 (702.0 B) TX bytes:2220 (2.1 KB)
[root@sylixos:/root]#
[root@sylixos:/root]# ping 192.168.7.1
Pinging 192.168.7.1
Request time out.
Request time out.
Request time out.
Request time out.
Ping statistics for 192.168.7.1:
Packets: Send = 4, Received = 0, Lost = 4(100% loss),
[root@sylixos:/root]#
[root@sylixos:/root]# ping 192.168.7.199
Pinging 192.168.7.199
Reply from 192.168.7.199: bytes=32 time=0.664ms TTL=64
Reply from 192.168.7.199: bytes=32 time=0.253ms TTL=64
Reply from 192.168.7.199: bytes=32 time=0.332ms TTL=64
Reply from 192.168.7.199: bytes=32 time=0.348ms TTL=64
Ping statistics for 192.168.7.199:
Packets: Send = 4, Received = 4, Lost = 0(0% loss),
Approximate round trip times in milli-seconds:
Minimum = 0.253ms, Maximum = 0.664ms, Average = 0.399ms
[root@sylixos:/root]#
实际场景
Q:在某公司内部,局域网 IP 地址段使用 10.4.x.x ,现在有一台主机 A,IP 地址为 10.4.0.105,还有一台 SylixOS 设备 B,网络 IP 地址未知,如何通过实现网络进行交互呢?
A:
首先通过串口直连主机 A 和设备 B,配置好串口信息,通过串口调试助手进入Shell 命令界面,如下所示:
[[[[ [[[[ [[ [[[[ [[[[ [[ [[ [[ [[ [[ [[ [[ [[ [[ [[ [[ [[[[ [[ [[ [[ [[ [[ [[ [[ [[ [[ [[ [[ [[ [[ [[ [[ [[ [[ [[ [[ [[ [[[[ [[ [[ [[ [[ [[ [[ [[ [[ [[ [[ [[ [[ [[ [[ [[ [[ [[ [[[[ [[ [[ [[ [[ [[ [[ [[ [[ [[ [[ [[ [[ [[ [[ [[ [[[[ [[[[ [[[[[[ [[[[[[ [[ [[ [[[[ [[[[ [[ [[ KERNEL: LongWing(C) 3.0.0 [[[[ COPYRIGHT ACOINFO Co. Ltd. 2006 - 2023 SylixOS license: Commercial & GPL. SylixOS kernel version: 3.0.0 Code name: Enterprise CPU : RK3568(ARMv8-A, 4 Core, Up to 2.0GHz, Current 1.8GHz) CACHE : 64KBytes L1-Cache(D-32K/I-32K), 0 Bytes L2-Cache, 512KBytes L3-Cache PACKET : iTop-3568 Packet ROM SIZE: 0x00200000 Bytes (0x00000000 - 0x001fffff) RAM SIZE: 0x76bf0000 Bytes (0x09400000 - 0x7ffeffff) BSP : BSP Version 2.2.1 (Release) for Enterprise (Build May 9 2023 10:53:08) [root@sylixos:/root]#
输入
ifconfig
命令获取设备 IP 地址。[root@sylixos:/root]# ifconfig en1 Link encap: Ethernet HWaddr: 00:11:22:33:44:98 Dev: dw_0 Ifidx: 2 DHCP: D4 D6 Spd: 1000 Mbps inet addr: 192.168.7.36 netmask: 255.255.255.0 gateway: 192.168.7.1 broadcast: 192.168.7.255 inet6 addr: fe80::211:22ff:fe33:4498 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 collisions:0 txqueue:512 tcpaf:2 tcpwnd:65535 RX ucast packets:1326 nucast packets:1307004 dropped:0 TX ucast packets:1201 nucast packets:10 dropped:0 RX bytes:81043272 (77.2 MB) TX bytes:72441 (70.7 KB) lo0 Link encap: Local Loopback Dev: N/A Ifidx: 1 DHCP: D4 D6 Spd: N/A inet addr: 127.0.0.1 netmask: 255.0.0.0 P-to-P: 127.0.0.1 broadcast: N/A inet6 addr: ::1 Scope:Loopback UP LOOPBACK RUNNING MTU:0 Metric:1 collisions:0 txqueue:0 tcpaf:2 tcpwnd:262140 RX ucast packets:3 nucast packets:0 dropped:0 TX ucast packets:3 nucast packets:0 dropped:0 RX bytes:168 (168.0 B) TX bytes:168 (168.0 B) dns0: 0.0.0.0 dns1: 0.0.0.0 dns2: 0.0.0.0 dns3: 0.0.0.0 default device is: en1 list net interface: 2 [root@sylixos:/root]#
使用
ping
命令验证主机和设备是否在同一网段中。[root@sylixos:/root]# ping 10.4.0.105 Pinging 10.4.0.105 Request time out. Request time out. Request time out. Request time out. Ping statistics for 10.4.0.105: Packets: Send = 4, Received = 0, Lost = 4(100% loss), [root@sylixos:/root]#
如果步骤 3 ping 操作失败,则需要修改设备的网络 IP 地址,修改方式如下:
[root@sylixos:/root]# ifconfig en1 inet 10.4.120.211 [root@sylixos:/root]# ifconfig en1 netmask 255.255.0.0 [root@sylixos:/root]# ifconfig en1 gateway 10.4.0.1
输入
ifconfig
命令查询网络接口 en1 的网络地址是否已经修改成功。[root@sylixos:/root]# ifconfig en1 en1 Link encap: Ethernet HWaddr: 00:11:22:33:44:98 Dev: dw_0 Ifidx: 2 DHCP: D4 D6 Spd: 1000 Mbps inet addr: 10.4.120.211 netmask: 255.255.0.0 gateway: 10.4.0.1 broadcast: 10.4.255.255 inet6 addr: fe80::211:22ff:fe33:4498 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 collisions:0 txqueue:512 tcpaf:2 tcpwnd:65535 RX ucast packets:1354 nucast packets:1335976 dropped:0 TX ucast packets:1201 nucast packets:21 dropped:0 RX bytes:82845731 (79.0 MB) TX bytes:72903 (71.1 KB) [root@sylixos:/root]#
使用
ping
命令验证主机和设备是否在同一网段中[root@sylixos:/root]# ping 10.4.0.105 Pinging 10.4.0.105 Reply from 10.4.0.105: bytes=32 time=0.743ms TTL=64 Reply from 10.4.0.105: bytes=32 time=0.538ms TTL=64 Reply from 10.4.0.105: bytes=32 time=0.490ms TTL=64 Reply from 10.4.0.105: bytes=32 time=0.463ms TTL=64 Ping statistics for 10.4.0.105: Packets: Send = 4, Received = 4, Lost = 0(0% loss), Approximate round trip times in milli-seconds: Minimum = 0.463ms, Maximum = 0.743ms, Average = 0.558ms [root@sylixos:/root]#
此时,设备的网络 IP 地址信息已经配置完毕,并且可以和主机进行通信了,但是此时的系统网络信息只是临时配置,掉电之后都会丢失,所以需要固化系统网络信息。
使用系统自带的 vi 工具编写 ifparam.ini 文件。
[root@sylixos:/root]# vi /etc/ifparam.ini [dw_0] ipaddr=10.4.120.211 netmask=255.255.0.0 gateway=10.4.0.1 mac=00:11:22:33:44:98 default=1
重启设备,重新输入
ifconfig
命令获取网络接口 en1 的网络地址,发现网络地址信息已经固化完毕。打开PuTTY开源串口调试工具或其他的串口调试工具,选择Telnet 连接协议,Host Name 输入设备的网络 IP 地址 10.4.120.211,并单击 Open ,进入用户密码界面
- 用户名 login 输入 root(默认),password 输入 root(默认),进入系统Shell 界面。
- 成功进入 SylixOS 系统Shell界面,主机 A 成功与设备 B 进行远程交互通信。