190. Linux中的网络相关
防火墙
查看防火墙状态
1 | $ firewall-cmd --state |
显示running,则表示防火墙正在运行。另外,还可以使用systemctl status firewalld来查看防火墙是否开启:
1 | $ systemctl status firewalld |
查看防火墙所有已开放的端口
1 | $ firewall-cmd --zone=public --list-ports |
开放端口
1 | # 开放5612端口 |
关闭防火墙
在测试环境或者开发环境中,有时候为了测试方便,可以临时关闭防火墙。但是要注意,只有在保证安全前提下才可关闭防火墙。关闭防火墙的命令为:
1 | $ systemctl stop firewalld.service |
此外,还可以使用:
1 | $ systemctl stop firewalld |
若开启则将 stop 改为 start
重启防火墙
防火墙端口策略改变后,需要重启才能生效:
1 | $ firewall-cmd --reload |
查看监听的端口
1 |
|
检查端口被哪个进程占用
1 | $ netstat -lnpt |grep 8080 |
中止进程
当由于某种原因,按正常方法无法关掉进程的时候,可以强制关闭(关掉端口):
1 | $ kill -9 8080 |
其他相关命令
1 | firewall-cmd --get-zones ##列出支持的zone |
tcpdump
tcpdump 是分析网络和排查网络问题的一个很好用的工具,它通过抓取数据包,显示网络的实时情况,并将结果输出到标准输出(STDOUT)上,也可以存储在文件中。关于它的具体使用,它有很多可用的选项,本文我们介绍关于此命令常用的几个核心选项。
检查可用网口(interfaces)
查询所有可用的网口,使用 -D 选项:
1 | sudo tcpdump -D |
上述命令将会列出系统中所有可用的网络接口,包括有线和无线接口,使用 --list-interfaces 选项也可以达到相同的目的:
1 | sudo tcpdump --list-interfaces |
运行结果如下图所示:
抓取某个网口的数据包
不适用任选项的情况下,tcpdump 将会扫描所有网口,使用 -i 选项可抓取某个特定网口的数据:
1 | tcpdump -i <target-interface> |
在上述命令中 <target-interface> 表示网口名称。假如我们要抓取网口 eth0 的数据,可使用如下命令:
1 | sudo tcpdump -i eth0 |
注:为了方便演示,我们后文中将会使用 eth0 或者 eth1 作为目标网口。
预设抓包数量
使用 -c 选项可以预设抓包的数量。比如,下面命令将会抓取 4 个数据包:
1 | sudo tcpdump -c 4 -i eth0 |
如果没有预设抓包数量,需要使用 ctrl+c 或者 ctrl+z 手动停止抓包操作。
获取详细输出
使用 -v 选项可以获取详细输出,如下命令:
1 | sudo tcpdump -c 6 -v -i eth0 |
详情的输出,有个详细程度的区别,换句话说,可以使用更多的 -v 标志,比如 -vv 或者 -vvv,这将会在终端上产生更加详细的输出:
1 | sudo tcpdump -vv -i eth0 |
以 ASCII 格式打印抓取到的数据
有时候我们希望数据以 HEX 或者 ASCII 格式展现,这里可以使用 -A 选项来表示以 ASCII 格式,-XX 选项表示以 ASCII 和 HEX 格式展示数据:
1 | sudo tcpdump -XX -i eth0 |
抓取从某个源 IP 发送的数据包
要抓取来自某个特定源 IP 的数据包,可使用如下命令:
1 | sudo tcpdump -i eth0 src <source-ip-address> |
比如,我们查看来自 IP 为 192.168.56.11 的数据:
1 | sudo tcpdump -i eth1 -c 5 src 192.168.56.11 |
上面例子中的计数 5 为只抓取5个数据包。
抓取发送到特定目标 IP 的数据包
如果要检查发送到特定目标 IP 地址的流量,可使用以下命令:
1 | sudo tcpdump -i eth0 dst <source-ip-address> |
比如我们将目标 IP 设为 192.168.56.11,查看流量的详细信息:
1 | sudo tcpdump -i eth1 -c 5 dst 192.168.56.11 |
在 tcpdump 中使用过滤选项
tcpdump 命令提供了一些过滤选项,以缩小抓包数据的范围,这样可以过滤掉一些不必要的数据,以便于分析数据。过滤方式包括主机地址、端口、协议或者其他过滤条件。下面我们来举例说明。
端口号
如果要执行端口号(比如端口22)过滤,可参照如下方式执行 tcpdump 命令:
1 | sudo tcpdump -i eth0 port 22 |
此命令将抓取 TCP 和 UDP 数据流。
协议
与端口号类似,proto 指令根据特定流量过滤数据包捕获。在这里,你可以使用协议名称或协议编号作为参数值:
1 | sudo tcpdump -i eth0 proto tcp |
或者:
1 | sudo tcpdump -i eth0 proto 6 |
上面两个命令是相同的,因为 6 是 TCP 的协议号。
主机过滤
host 参数使用特定主机的IP,筛选来自该主机的数据流:
1 | sudo tcpdump -i eth0 host 192.168.56.10 |
这将捕获来自此主机的所有流量。此外,还可以对主机应用多个过滤条件,以针对特定类型的数据包流量。
比如:
1 | sudo tcpdump -i eth1 -c 50 “(host 192.168.56.11) and (port 443 or port 80)" |
上面例子中,我将多个过滤条件合并到一个规则中,过滤 http 和 https 数据流,这两个协议的端口分分别为 80 和 443。我们之前分享过一篇常见网络端口的文字,感兴趣的朋友可以参考:Linux中常见的网络端口号
保存抓取到的数据
如果要保存抓取到的数据,可参考如下命令:
1 | sudo tcpdump -i eth0 -c 10 -w my_capture.pcap |
这里需要注意的是,最好将要抓取的数据包预设一个最小的值,否则需要手动停止该进程。
读取抓取到的数据
我们可以使用 Wireshark或者其他图形网络分析工具分析抓取到的数据(上个例子中保存到.pcap文件中的数据)。此外,也可以使用 tcpdump 本身来读取:
1 | tcpdump -r my_capture.pcap |
当你进行数据包抓取的时候,这是一个很好用的工具。如果你想用更直观的方式来分析数据包,可以试试 Wireshark。
查找 IP 地址
fconfig 是 Linux 中最受欢迎的查询本机 IP 地址的方法。但是现如今 ifconfig 命令已经被启用了。在某些 Linux 发行版上已经不用了:
1 | command not found: ifconfig |
那么,除此以外还有什么别的方式来查询 IP 地址呢?今天我们就来了解一下这个问题。
在 Linux 命令行中查找 IP 地址
现在,可以使用 ip 命令来查询 IP 地址。ip 命令是通用的,可以用于网络相关的其他一些事情。
不过,要显示 IP 地址,可以使用 ip addr,ip a 或者 ip address,如下所示命令:
1 | $ ip address |
输出如下:
1 |
|
在上面的输出中,你可以忽略第一个名为lo(loopback)的输出,除此以外,可以看到 IP 地址显示为192.168.1.20。它后面的24是子网掩码。
如上所示,可以使用 ip 命令获取主机的 IP 地址。除此以外,还可以通过 bash 脚本获取 IP 地址。
获取 IP 地址的其他方法
除了使用 ip 命令以外,还有其他的几个方法来获取 IP 地址。
使用 hostname 命令查看IP地址
hostname 命令通常用于显示系统的主机名,也可以用于显示主机的IP地址:
1 | $ hostname -I |
上述命令会显示主机的 IP 地址:
1 | $ hostname -I |
使用 nmcli 工具显示 IP 地址
大多数 Linux 发行版都有一个 Network Manager 的工具,该工具有一个名为 nmcli 的命令行界面,可以使用此 nmcli 工具来查看网络配置。比如可以使用如下命令查看 IP 地址:
1 | $ nmcli -p device show |
那么,ifconfig 呢?
实际上,我们仍然可以使用 ifconfig 命令。如果系统中不存在这个命令,我们可以手动安装,它存在于网络工具包中。
在基于 Ubuntu 的 Linux 中,可以使用如下命令安装网络工具:
1 | $ sudo apt install net-tools |
安装完成后,就可以使用 ifconfig 命令来查询 IP 地址了:
1 | $ ifconfig -a |
输出如下:
1 | lo: flags=73 mtu 65536 |
不过,因为 ifconfig 命令已经被弃用,所以我们还是不鼓励使用网络工具,建议使用 ip 命令。
查询公网IP地址
上面我们介绍的都是查询本地内网IP地址的方法,也就是局域网的 IP 地址。
内网 IP 地址是局限在局域网中的地址,用于与局域网中的其他设备进行通信。局域网之外的其他设备无法通过这个 IP 地址找到你。我们所说的公网地址一般是指路由器的IP地址,路由器通过内网 IP 与你的设备通信。
那么,如何获取公网IP地址呢?这就需要借助于第三方工具了。
比如,可以使用 OpenDNS 的 host 命令来获取公网 IP 地址。
1 | host myip.opendns.com resolver1.opendns.com |
其输出如下:
1 | Using domain server:Name: resolver1.opendns.comAddress: 208.67.222.222#53Aliases:myip.opendns.com has address 202.91.87.117Host myip.opendns.com not found: 3(NXDOMAIN)Host myip.opendns.com not found: 3(NXDOMAIN) |
查询默认网关
网关是两个网络之间的入口,路由器就是网关的一个例子。你的网络中所有的流量都是流向路由器,然后再通过路由器流向互联网。
有时候你需要知道路由器的 IP 地址,网关 IP 其实就是正常设置中路由器的 IP 地址。
下面我们使用 ip 命令在命令行中显示网关 IP,打开一个终端,然后输入如下命令:
1 | ip route |
会看到如下输出:
1 | default via 192.168.0.1 dev wlp58s0 proto dhcp metric 600 |
上面的输出中,注意 default 开头的那一行,后面跟的就是默认网关 IP 地址。
或者,可以将上述命令与 grep 结合使用:
1 | ip route | grep default |
这个命令的输出只会给出默认网关 IP:
1 | default via 192.168.0.1 dev wlp1s0 proto dhcp metric 600 |
如上所示,192.168.0.1 即为我们例子中的默认网关 IP。
查找网关IP地址的其他方法
Linux 中的 ip 命令提供了大多数网络相关的操作,如果用过一段时间的 Linux 系统,我们可能就会注意到,要完成某件事情,一般会有多种不同的方法。所以,要查看默认网关,还有其他的一些方法,比如使用其他网络命令行工具,接下来我们就来看一下。
使用 route 命令查询网关地址
我们可以在 route 命令中使用 -n 选项来显示包含 IP 地址的路由表,如下所示:
1 | route -n |
输出如下所示:
1 | Kernel IP routing table |
注意到其中的 U 和 G 标志了吗?U 表示路由“向上”,G 表示它是网关。
使用 netstat 命令查询网关
我们还可以使用 netstat 命令显示组成网关的路由表,以此来获取网关地址。看如下命令:
1 | netstat -r -n |
其输出与 route 命令的输出相同:
1 | Kernel IP routing table |
可以通过 G 标志来找到网关地址。
端口占用情况
netstat
1 | netstat -tunlp |
用于显示 tcp,udp 的端口和进程等相关情况。
netstat 查看端口占用语法格式:
1 | netstat -tunlp | grep 端口号 |
- -t (tcp) 仅显示tcp相关选项
- -u (udp)仅显示udp相关选项
- -n 拒绝显示别名,能显示数字的全部转化为数字
- -l 仅列出在Listen(监听)的服务状态
- -p 显示建立相关链接的程序名
例如查看 8000 端口的情况,使用以下命令:
1 | # netstat -tunlp | grep 8000 |
更多命令:
1 | netstat -ntlp //查看当前所有tcp端口 |
lsof
不管你是直接登录的系统,还是使用 ssh 连接的,都可以使用 lsof 命令来检查端口:
1 | sudo lsof -i -P -n |
该命令用于查找用户使用的文件和进程。上述命令中的选项,包括:
| 选项 | 说明 |
|---|---|
-i |
如果没有指定IP地址,那么此选项就会选择所有网络文件的列表; |
-P |
禁止将网络文件的端口号转换为端口名; |
-n |
禁止将网络文件的网络编号转为主机名。 |
但是,这也会展示许多计算机并没有监听的其他端口。
我们可以通过管道将此输出传输到 grep,并匹配模式 “LISTEN”,如下所示:
1 | sudo lsof -i -P -n | grep LISTEN |
这样就只显示计算机正在监听的,以及正在运行的服务所占用的端口。
netcat
nc(Netcat) 是一个命令行实用程序,使用TCP和UDP协议在网络计算机之间读取和写入数据。
以下是nc命令的语法:
1 | nc [options] host port |
这个工具有一个很实用的 -z 选项,它会让 nc 命令扫描正在监听的守护进程,但是不会向端口发送任何数据。
将其与 -v 选项结合,启动详细信息,会有详细信息的输出。
如下是使用 nc 命令扫描开放的端口:
1 | nc -z -v <IP-ADDRESS> 1-65535 2>&1 | grep -v 'Connection refused' |
将上面的<IP-ADDRESS> 替换为你要检查的 Linux 系统的IP地址。
至于为什么我会选择 1 到 65535,那是因为端口的范围是 1 到 65535。
最后,通过管道将输出传到grep,使用 -v 选项可以排除“拒绝连接( Connection refused)”的端口。
这样就会扫描到计算机上所有开放的端口,这些端口可以被网络上的其他机器访问。
以上两种方法中,lsof 比 nc 速度要快。但是使用 lsof 需要先登录到系统中,并且具有 sudo 访问权限。所以,如果你扫描的是你已经登录到的系统,可以优先选择 lsof。
nc 命令可以很灵活的扫描端口,而不需要登录。
netstat
Linux下网络连接分析指令:netstat
netstat指令主要用于显示与IP、TCP、UDP和ICMP协议相关的统计数据及网络相关信息,可以用于检验本机各端口的网络连接情况,哪个端口被哪个程序占用、TCP连接状态、统计网络连接信息等。
Linux系统终端输入netstat命令,会输出以下内容显示tcp相关的信息:
1 | [root@localhost ~]# netstat |
从整体上看,netstat指令的输出分为以下两个部分:
1)Active Internet connections (w/o servers) 部分
这一部分称为有源的tcp连接,其中Recv-Q和Send-Q分别指接受队列和发送队列,这些数字一般都是为0。如果不为0,则表示数据包正在队列中堆积。
2)Active Unix domain sockets (w/o servers) 部分
这一部分称为有源的Unix域套接口(和网络套接字一样,但是只能用于本机通信,性能可以提高一倍)。proto显示连接用的协议,RefCnt表示连接到本套接口上的进程号,Types显示套接口的类型,State显示套接口当前的状态,Path表示连接到套接口的其他进程使用的路径名。
了解了netstat指令的这些含义后,再配合一些常用的选项,可以让netstat指令输出更丰富有用的信息,netstat指令常用的选项如下:
| 参数 | 说明 |
|---|---|
-a/-all |
显示所有选项,默认不显示listen相关; |
-t/-tcp |
仅显示tcp传输协议的连接状况; |
-u/-udp |
仅显示udp传输协议的连接状况; |
-n/-numeric |
拒绝显示别名,能显示数字的全部转化成数字; |
-l/-listening |
仅列出在listen(监听)状态的socket; |
-p/-programs |
显示正在使用socket的程序识别码和程序名称; |
-r/-route |
显示路由信息; |
-s/-statistice |
显示网络工作信息统计表; |
-c/-continuous |
每隔指定时间执行netstat指令。 |
提示:listen和listening的状态只有使用 -a 或 -l 选项才能看到。
例子
列出所有端口信息
netstat -a 指令列出当前操作系统的所有端口。
1 | [root@localhost ~]# netstat -a|more |
列出所有tcp端口信息
netstat -at指令列出所有处于监听状态的sockets
1 | [root@localhost ~]# netstat -at |
列出所有udp端口
1 | #列出所有udp端口 |
只显示监听端口
1 | [root@localhost ~]# netstat -l |
显示tcp或udp端口的统计信息
netstat -st 或 -su 指令输出tcp或udp端口的统计信息
1 | [root@localhost ~]# netstat -st |
显示特定程序
netstat -p 指令可以与其他开关一起使用,可以添加pid/进程名称 到netstat输出中,debug系统时可以很方便的发现特定端口运行程序。
1 | [root@localhost ~]# netstat -pt |
在输出中显示pid和进程名称 netstat -p
在netstat指令输出中不显示主机名、端口和用户信息
可以使用 netstat -n 指令使用数字代替名称加速输出显示结果:
1 | $ netstat -an |
持续输出netstat信息
每隔1秒输出网络信息:
1 | $ netstat -ntpl -c |
显示核心路由信息
使用 netstat -rn 显示数字格式,不查询主机名称
1 | $ netstat -r |
找出程序运行的端口
netstat -ap|grep ssh 指令并不是所有的进程都能找到,没有权限的会不显示,使用root权限查看所有的信息。
找出运行在指定端口的进程
使用 netstat -ntpl 指令过滤出端口为22的程序
1 | [root@localhost ~]# netstat -ntpl | grep ':22' |
显示网络接口列表
netstat -i指令查看当前主机网络接口信息
1 | [root@localhost ~]# netstat -i |
使用 netstat -ie 可以显示网络接口的详细信息。
ip和tcp状态分析
统计当前系统连接服务22端口的前20个ip地址:
1 | $ netstat -nat | grep "192.168.1.56:22" | awk '{pring $5}'|awk -F: '{print $1}'|sort|uniq -c|sort -nr|head -20 |
tcp各种状态列表
1 | $ netstat -nat |awk '{print $6}' |
tcp状态信息统计
1 | $ netstat -nat |awk '{print $6}'|sort|uniq -c|sort -rn |
代码实现思路:先把状态全部取出来,然后使用uniq -c统计,再进行排序。
分析ip地址
1 | $ awk '{print $1}' /data/app/nginx/logs/access.log|sort|uniq -c|sort -nr|head -10 |
如上代码分析了web服务器access.log获得访问前10位的ip地址。
traceroute
Linux 中使用 traceroute 命令跟踪目标地址
traceroute 类似于 ping 命令,但是提供了更详细的信息输出,它跟踪从原点到目标系统的路由。当你连接到某个远程系统时,数据会经过几个中间节点(比如你的路由器,ISP路由等等)的传输。
traceroute 一般为系统管理员或者网络管理员用于对网络进行故障排除。
在 Linux 中安装 traceroute
在大多数 Linux 发行版中,traceroute 都没有被预安装,所以需要我们手动安装。
如果你用的是 Ubuntu,可以使用如下命令安装:
1 | sudo apt install traceroute |
如果你用的是 Fedora,可以使用如下命令:
1 | sudo yum install traceroute |
下面,我们介绍几个使用 traceroute 的例子。
使用 traceroute 命令
我们先来介绍一个最基本的例子,使用 traceroute 命令跟踪一个主机名,它将显示到达目的地所需的路由器列表(带IP):
1 | traceroute google.com |
如上图所示,它需要7个路由器才能到达目的地,默认情况下,它向每个路由器发送3个包,并返回响应所需的时间。
下面我们来看看其他几个例子。
配置等待时间
traceroute 中的默认等待时间为3秒,要修改这个时间,可以使用 -w 选项。比如,我们将等待时间改为 1 秒:
1 | traceroute -w 1 google.com |
更改收发包的数量
默认情况下,traceroute 为一个跃点(hop)发送3个包,如果想更改此行为,可使用 -q 选项。
比如,我们我们将其改为4个数据包:
1 | traceroute -q 4 google.com |
指定最大跃点数
在traceroute中,单个查询的默认最大跳数为30,可以扩展到255。使用 -m 选项:
1 | traceroute -m 4 google.com |
指定 TTL
默认情况下,traceroute 将以第一个 TTL 开始,但您可以使用 -f 选项更改此行为。
如下例子,我们从第5个TTL开始跟踪 google:
1 | traceroute -f 5 google.com |
添加备用源IP地址
使用 -s 选项添加备用 IP 地址:
1 | traceroute -s 192.168.1.7 google.com |
跟踪时禁用主机名映射到IP地址
如果出于某种原因希望在跟踪时禁用主机名映射,可以使用 -n 选项:
1 | traceroute -n google.com |
通过网关路由包
可以在要跟踪路由的域时,使用 -g 选项指定网关地址。
比如,我们添加 192.168.1.7 作为网关地址:
1 | traceroute -g 192.168.1.7 google.com |
更改目标端口
可以使用 -p 来指定要跟踪的目标端口:
1 | traceroute -p 29879 google.com |
设置最大数据包长度
默认情况下,traceroute 跟踪的数据包长度为 60 字节(bytes),可以在目标地址后跟一个数字(即包大小)来修改:
1 | traceroute google.com 100 |
禁用探测数据包碎片(probe packet fragmentation)
如果你不想允许探测数据包碎片化,有一种简单的方法来实现这个目的,使用 -F 选项:
1 | traceroute -F google.com |
如果你想要了解 traceroute 是如何工作的,可以参考另一篇指南,这个指南解释了 traceroute 的工作原理,点击这里
设置静态IP
fedora
NetworkManager
查看并记录Linux实例的网卡信息: IP地址、子网掩码、网关信息
1
ifconfig
查看实例的路由表和网关信息
1
route -n
查看DNS
1
$ nmcli device show | grep DNS
如:
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42root@localhost:/etc/sysconfig/network-scripts# nmcli device show
GENERAL.DEVICE: ens18
GENERAL.TYPE: ethernet
GENERAL.HWADDR: FE:FC:FE:7E:DB:51
GENERAL.MTU: 1500
GENERAL.STATE: 100 (connected)
GENERAL.CONNECTION: ens18
GENERAL.CON-PATH: /org/freedesktop/NetworkManager/ActiveConnection/2
WIRED-PROPERTIES.CARRIER: on
IP4.ADDRESS[1]: 10.10.32.10/16
IP4.GATEWAY: 10.10.0.1
IP4.ROUTE[1]: dst = 10.10.0.0/16, nh = 0.0.0.0, mt = 100
IP4.ROUTE[2]: dst = 0.0.0.0/0, nh = 10.10.0.1, mt = 100
IP4.DNS[1]: 10.10.0.1
IP4.DNS[2]: 223.5.5.5
IP6.ADDRESS[1]: 240c:c983:5:a569::e27/128
IP6.ADDRESS[2]: 240c:c983:5:a569:fcfc:feff:fe7e:db51/64
IP6.ADDRESS[3]: fe80::fcfc:feff:fe7e:db51/64
IP6.GATEWAY: fe80::266e:96ff:fe19:972
IP6.ROUTE[1]: dst = fe80::/64, nh = ::, mt = 1024
IP6.ROUTE[2]: dst = 240c:c983:5:a569::/64, nh = ::, mt = 100
IP6.ROUTE[3]: dst = ::/0, nh = fe80::266e:96ff:fe19:972, mt = 100
IP6.ROUTE[4]: dst = 240c:c983:5:a569::e27/128, nh = ::, mt = 100
IP6.DNS[1]: 2400:3200::1
IP6.DNS[2]: 2001:da8:8000:1:202:120:2:100
GENERAL.DEVICE: lo
GENERAL.TYPE: loopback
GENERAL.HWADDR: 00:00:00:00:00:00
GENERAL.MTU: 65536
GENERAL.STATE: 100 (connected (externally))
GENERAL.CONNECTION: lo
GENERAL.CON-PATH: /org/freedesktop/NetworkManager/ActiveConnection/1
IP4.ADDRESS[1]: 127.0.0.1/8
IP4.GATEWAY: --
IP6.ADDRESS[1]: ::1/128
IP6.GATEWAY: --
root@localhost:/etc/sysconfig/network-scripts# nmcli device show | grep DNS
IP4.DNS[1]: 10.10.0.1
IP4.DNS[2]: 223.5.5.5
IP6.DNS[1]: 2400:3200::1
IP6.DNS[2]: 2001:da8:8000:1:202:120:2:100修改 /etc/NetworkManager/system-connection/<网卡名>.nmconnection
- method: manual
- address: 静态IP地址 (通过
ifconfig获得) - gateway: 网关(通过
route -n获得) - dns: 通过
nmcli device show | grep DNS得到的
效果如下:
1 | root@localhost:/etc/NetworkManager/system-connections# cat ens18.nmconnection |
nmcli
连接 802.1x
Authenticating with a username and password
(This section was helpfully added by a contributor editing the post:)
Or if you use a username/password auth (likely via RADIUS) you can use the command below to add it (use the correct 802-1x.eap option for your network, the example of ttls as below doesn’t require a certificate to be defined) and then use –ask the first time you go to connect to save the password into the connection file.
1 | nmcli connection add \ |
con-name "MySSID": 连接名称ifname wlp3s0: 网卡名称, 可以通过ip addr查看, 如下:
ssid "MySSID": wifi 名
If using the username/password option you should add –ask after nmcli the first time you bring it up to save the password without leaving it in your command history.
It will give you an error message saying as much when you attempt to bring it up otherwise.
You will probably get prompted about additional wireless settings when using –ask, you can type no for them unless you need to specify a static IP, in which case answer yes for that option and set the correct information, and in the future you shouldn’t need to use –ask unless your password changes.
连接
1 | nmcli con up --ask "MySSID" |
参考资料
示例
WPA2 802.1X 需要的命令()
1 | nmcli connection add type wifi con-name NAME ifname wlan0 ssid SSID -- wifo-sec.key-mgmt wpa-eap 802-1x.eap ttls 802-1x.phase2-auth mschapv2 802-1x.identity USERNAME |
第一次登录的时候需要额外使用 --ask 参数输入密码
1 | nmcli --ask connection up NAME |