跳到主要内容

5. 网络连接及静态配置

ArmSoM系列产品都搭配了以太网口或WIFI模块,PCIE转以太网模块、 USB转以太网模块等,这样我们的网络需求就不止是上网这么简单了,可以衍生出多种不同的玩法。

1. 网络连接

连接互联网或者组成局域网都需要满足一个前提–设备需要获取到ip, ip可以理解为设备的名字,局域网内的设备在局域网内可以通过ip进行沟通。 如下 192.168.10.100

armsom@armsom-sige7:~$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
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
2: enP4p65s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 92:be:6d:d5:e7:b4 brd ff:ff:ff:ff:ff:ff permaddr 72:d3:55:ba:fe:0a
inet 192.168.10.100/24 brd 192.168.10.255 scope global dynamic noprefixroute enP4p65s0
valid_lft 34665sec preferred_lft 34665sec

1.1. ping命令

ping(Packet Internet Groper),因特网包探索器,用于测试网络连接量的程序。 它是用来检查网络是否通畅或者网络连接速度的命令

ping的原理: 向指定的网络地址发送一定长度的数据包,按照约定,若指定网络地址存在的话, 会返回同样大小的数据包,当然,若在特定时间内没有返回,就是“超时”,会被认为指定的网络地址不存在

1.2.局域通信

一个局域网中是必备网关(gateway)的, 我们可以通过ping网关来看自己的ip能不能成功使用,如果连网关都ping不通就证明这个局域网是没有连接起来。

#ping命令
sudo ping + ip地址
  • 成功联网就可以看到有一连串的数据,如下
armsom@armsom-sige7:~$ sudo ping 192.168.10.1
ping: socket: Address family not supported by protocol
PING 192.168.10.1 (192.168.10.1) 56(84) bytes of data.
64 bytes from 192.168.10.1: icmp_seq=1 ttl=64 time=0.649 ms
64 bytes from 192.168.10.1: icmp_seq=2 ttl=64 time=0.583 ms
64 bytes from 192.168.10.1: icmp_seq=3 ttl=64 time=0.571 ms
64 bytes from 192.168.10.1: icmp_seq=4 ttl=64 time=0.614 ms
64 bytes from 192.168.10.1: icmp_seq=5 ttl=64 time=0.583 ms
64 bytes from 192.168.10.1: icmp_seq=6 ttl=64 time=0.703 ms

1.3. 连接互联网

我们可以通过ping网站来查看产品是否连接互联网

#ping命令
sudo ping xxx.com
  • 以baidu.com为例,成功联网就可以看到有一连串的数据,如图下
armsom@armsom-sige7:~$ sudo ping www.baidu.com
ping: socket: Address family not supported by protocol
PING www.a.shifen.com (183.2.172.185) 56(84) bytes of data.
64 bytes from 183.2.172.185 (183.2.172.185): icmp_seq=1 ttl=52 time=7.83 ms
64 bytes from 183.2.172.185 (183.2.172.185): icmp_seq=2 ttl=52 time=7.80 ms
64 bytes from 183.2.172.185 (183.2.172.185): icmp_seq=3 ttl=52 time=8.36 ms
64 bytes from 183.2.172.185 (183.2.172.185): icmp_seq=4 ttl=52 time=8.39 ms

2. 命令行图形化连接

  • 进入图形配置
armsom@armsom-sige7:~$ sudo nmtui
  • 移动键盘方向键移动到 Active a connection 按 Enter键 进入wifi设置
  • 移动方向键到你要连接的wifi,按 Enter键
  • 如果是连接未连接的有密码的热点则进入输入密码界面
  • 如果想要断开wifi,在已连接的状态按下 Enter键 就可以断开连接

3. 命令行连接

  • 列出wifi列表
armsom@armsom-sige7:~$ nmcli dev wifi list
  • 连接wifi

以热点: armsom 密码:armsom88 使用接口wlan0为例

# 第一次连接
armsom@armsom-sige7:~$ sudo nmcli dev wifi connect armsom password 'armsom88' ifname wlan0
Device 'wlan0' successfully activated with '7867c3af-dca2-4e9a-9721-a20f7a0e1b46'.

# 第一次连接成功后,再连接或切换wifi后
armsom@armsom-sige7:~$ sudo nmcli dev wifi connect armsom

4. 桌面端连接

使用有线上网时,请将网线插入RJ45接口。 桌面右上角会有一个网络连接图标,选择你要连接的网络,输入密码就可以上网了。

5. USB共享网络

todo

6. 静态网络配置

6.1. nmtui

  • 设置静态地址前的ip地址
armsom@armsom-sige7:~$ sudo ifconfig
enP4p65s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.10.100 netmask 255.255.255.0 broadcast 192.168.10.255
ether 92:be:6d:d5:e7:b4 txqueuelen 1000 (Ethernet)
RX packets 23758 bytes 1774543 (1.6 MiB)
RX errors 0 dropped 80 overruns 0 frame 0
TX packets 67013 bytes 3879463 (3.6 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
device interrupt 155

如果想要成功的设置静态地址需要留意你想要设置的ip地址是否被其他设备占用, 可以用ping 设置的静态地址,如果有数据返回证明ip是被其他设备占用的

信息

这里建议不懂网络配置的萌新可以把静态地址设为动态连接时获得的ip地址

以下为详细步骤

  • 进入图形配置
armsom@armsom-sige7:~$ nmtui 

移动键盘方向键移动到 Edit a connection 按 Enter键 进入wifi设置

选择你要编辑的网络,这里以eth0为例

  • 进入可以看到网络的默认配置
  • 需要将 IPV4 CONFIGURATION 设置为Manual
  • 然后移动光标到 show 按enter进入详细配置

这里以ip地址192.168.10.13 , 网关 192.168.10.1 为例

注意!

ip地址和网关需要根据自己的实际网络情况进行配置, 如果照抄这里的配置,很大机率会让你的产品连不上网, 初级开发者建议将静态ip修改为动态获取的ip
  • 网关的获得方式
#1.将网络设置为自动获取ip

#2.成功获取ip后,使用命令
route

#结果
root@armsom-w3:/home/armsom# route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
default 192.168.10.1 0.0.0.0 UG 100 0 0 enP4p65s0
192.168.10.0 0.0.0.0 255.255.255.0 U 100 0 0 enP4p65s0

#3.Gateway就是我们的网关,使用下列命令
route -n

#结果
root@lubancat:~# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
default 192.168.10.1 0.0.0.0 UG 100 0 0 enP4p65s0
192.168.10.0 0.0.0.0 255.255.255.0 U 100 0 0 enP4p65s0

#可以看到我们的网关地址 ---- 192.168.10.1
  • 192.168.10.13/24 其中/24表示为掩码255.255.255.0,
  • DNS servers 全国通用DNS–>114.114.114.114 全球通用DNS–>8.8.8.8
  • search domain 可沿用DNS servers设置,
  • DNS servers 和 search domain 可以设置多个。
  • 设置完后,就可以移动到后面点击ok完成设置
  • 完成设置后需要激活设置才能让网络生效,点击 Activate a connection 进入连接,按一次enter取消连接,再按一次enter键重新连接
  • 重新连接后的IP就变成了我们设置的ip了
root@armsom-w3:/home/armsom# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
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
2: enP4p65s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 92:be:6d:d5:e7:b4 brd ff:ff:ff:ff:ff:ff permaddr be:87:f6:b4:e5:ad
inet 192.168.10.13/24 brd 192.168.10.255 scope global noprefixroute enP4p65s0
valid_lft forever preferred_lft forever
3: wlP2p33s0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN group default qlen 1000
link/ether 2c:05:47:8e:4a:6c brd ff:ff:ff:ff:ff:ff
4: wlan1: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN group default qlen 1000
link/ether 2e:05:47:8e:4a:6c brd ff:ff:ff:ff:ff:ff

我们还可以使用 ping mi.com 来查看是否成功连接外部网络

root@armsom-w3:/home/armsom# ping mi.com
ping: socket: Address family not supported by protocol
PING sgp.ali.cdn.b2cop.lb.mi.com (161.117.94.231) 56(84) bytes of data.
64 bytes from 161.117.94.231 (161.117.94.231): icmp_seq=1 ttl=87 time=48.8 ms
64 bytes from 161.117.94.231 (161.117.94.231): icmp_seq=2 ttl=87 time=49.5 ms

6.1. nmcli

以 enP4p65s0 为例,这一步操作和在nmtui的编辑网络一样,只不过从图形界面变成命令行的操作, 命令行里还有各种各样的命名,这里只介绍部分,有兴趣的可以自行探索

#先列出连接的配置,eth0现在连接的是Wired connection 1

root@armsom-w3:/home/armsom# nmcli c s
NAME UUID TYPE DEVICE
Wired connection 1 e01f934d-7fae-344f-90bf-e2483db3f3e5 ethernet enP4p65s0
armsom d3d9a6ff-9c9c-44f8-a366-6a69af1edd1a wifi --
armsom 1 7867c3af-dca2-4e9a-9721-a20f7a0e1b46 wifi --

然后对Wired connection 1进行修改

#静态ip设置
sudo nmcli c modify 'Wired connection 1' [ + | - ]选项 选项值 # 或

sudo nmcli c m 'Wired connection 1' ipv4.address 192.168.10.13/24 # 修改 IP 地址和子网掩码
sudo nmcli c m 'Wired connection 1' ipv4.method manual # 修改为静态配置,默认是 auto
sudo nmcli c m 'Wired connection 1' ipv4.gateway 192.168.10.1 # 修改默认网关
sudo nmcli c m 'Wired connection 1' ipv4.dns 8.8.8.8 # 修改 DNS
sudo nmcli c m 'Wired connection 1' +ipv4.dns 114.114.114.114 # 添加一个 DNS
sudo nmcli c m 'Wired connection 1' ipv6.method disabled # 将 IPv6 禁用
sudo nmcli c m 'Wired connection 1' connection.autoconnect yes # 开机启动

注意,必须先修改 ipv4.address,然后才能修改 ipv4.method!
用空引号""代替选项的值,可将选项设回默认值(以 ipv4.method 为例):

#激活配置
sudo nmcli c up ifname eth0

配置完后,ip就改变了

armsom@armsom-sige7:~$ ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
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
2: enP4p65s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 92:be:6d:d5:e7:b4 brd ff:ff:ff:ff:ff:ff permaddr be:87:f6:b4:e5:ad
inet 192.168.10.14/24 brd 192.168.10.255 scope global noprefixroute enP4p65s0
valid_lft forever preferred_lft forever
3: wlP2p33s0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN group default qlen 1000
link/ether 2c:05:47:8e:4a:6c brd ff:ff:ff:ff:ff:ff
4: wlan1: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN group default qlen 1000
link/ether 2e:05:47:8e:4a:6c brd ff:ff:ff:ff:ff:ff

7. 创建WIFI热点

create_ap是一个帮助快速创建Linux上的WIFI热点的脚本,并且支持bridge和NAT模式,能够自动结合hostapd, dnsmasq和iptables完成WIFI热点的设置,避免了用户进行复杂的配置,github地址如下: https://github.com/oblique/create_ap

root@armsom-sige7:/home/armsom/create_ap# make install

7.1 create_ap 以 NAT 模式创建 WIFI 热点的方法

  1. 输入下面的命令以 NAT 模式创建名称为 armsom、密码为 armsom 的 WIFI 热点
armsom@armsom-sige7:~$ sudo create_ap -m nat wlan0 enP2p33s0 armsom armsom