Linux 网络配置 (nmcli)

  • Post author:
  • Post category:linux


注1:所有 [] 都是变量

资料大全:

https://manpages.debian.org/stretch/network-manager/


注2:



手动配置静态 IP

系统默认 /etc/netplan/xxx.yaml

# This is the network config written by 'subiquity'
network:
        version: 2
        renderer: NetworkManager #由 nmcli 管理网络
        ethernets:
                eth0:
                        dhcp4: no #关闭动态分配 IP  , no/yes
                        optional: no # no/yes
                        addresses: [192.168.192.5/24] #指定固定IP
                        gateway4: 192.168.1.1         #指定网关 - 可缺省
                        nameservers: #指定 DNS
                                addresses: [8.8.8.8,8.8.4.4]

sudo netplan apply #立即生效

#查看网关(方法一)
sr@colibri-imx8x:~$ route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.8.1     0.0.0.0         UG    600    0        0 wlp1s0
192.168.8.0     0.0.0.0         255.255.248.0   U     600    0        0 wlp1s0
192.168.192.0   0.0.0.0         255.255.255.0   U     100    0        0 eth1
#查看网关(方法二)
sr@colibri-imx8x:~$ netstat -r
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
default         _gateway        0.0.0.0         UG        0 0          0 wlp1s0
192.168.8.0     0.0.0.0         255.255.248.0   U         0 0          0 wlp1s0
192.168.192.0   0.0.0.0         255.255.255.0   U         0 0          0 eth1



永久禁用网卡(方法一)



查看驱动

lshw #查看所有驱动
lshw -c network #查看网卡驱动
#查看驱动名称: driver=iwlwifi 中的 iwlwifi 就是驱动名称
  *-network
       description: Wireless interface
       product: Dual Band Wireless-AC 3168NGW [Stone Peak]
       vendor: Intel Corporation
       physical id: 0
       bus info: pci@0000:02:00.0
       logical name: wlan0
       version: 10
       serial: 10:f0:05:2b:23:8e
       width: 64 bits
       clock: 33MHz
       capabilities: bus_master cap_list ethernet physical wireless
       configuration: broadcast=yes driver=iwlwifi driverversion=4.15.0-51-generic firmware=29.1044073957.0 ip=192.168.128.6 latency=0 link=yes multicast=yes wireless=IEEE 802.11



驱动加入黑名单

sudo vim /etc/modprobe.d/blacklist.conf
#添加黑名单
blacklist iwlwifi



关闭/开启网卡节能模式

sr@srs:~$ iw wlan0 set power_save off
sr@srs:~$ iw wlan0 set power_save on



网络配置



查看网络适配器

ifconfig    #可以查看所有网卡及网络连接分配的 IP



查看正在连接的wifi ssid 网卡名

iwconfig |grep ESSID



获取wifi列表(wlan0为网卡名称)

sudo iwlist [wlan0] scan | grep -E "ESSID|Quality|Encryption"



网卡低功耗开关

>iw wlan0 get power_save           #查看当前网卡是否开启了低功耗
>Power save: on
>sudo iw wlan0 set power_save on   #低功耗开(默认on)
>sudo iw wlan0 set power_save off  #低功耗关



添加一个静态 IP 连接

sudo nmcli connection add type wifi con-name "hu419087137" ifname wlan0 ssid "qq419087137" ipv4.method manual ipv4.addresses "192.168.4.162/24" ipv4.gateway "192.168.4.1" wifi-sec.key-mgmt wpa-psk wifi-sec.psk "nb@qq419087137"  connection.autoconnect true
sudo service network-manager restart  #重启网络



添加一个动态 IP 连接

sudo nmcli connection add type wifi con-name "hu419087137" ifname wlan0 ssid "qq419087137" ipv4.method auto wifi-sec.key-mgmt wpa-psk wifi-sec.psk "nb@qq419087137"  connection.autoconnect true
sudo service network-manager restart  #重启网络



将动态 IP 连接改为静态

sudo nmcli connection modify "hu419087137" ipv4.method manual ipv4.addresses "192.168.4.162/24" ipv4.gateway "192.168.4.1" connection.autoconnect true
sudo service network-manager restart  #重启网络



将静态 IP 连接改为动态

sudo nmcli connection modify "hu419087137" ipv4.method auto
sudo service network-manager restart  #重启网络
#改完发现之前的静态IP依然可以使用, 动态分配的IP也可以使用
#禁止之前静态IP使用,需要/etc/NetworkManager/system-connections/连接的SSID
#文件中的[ipv4.address1].toList()是否有值,如果有则删除.



删除指定wifi连接

sr@srs:~$ nmcli connection show
NAME                          UUID                                  TYPE      DEVICE
Seer-Robotics-5G              543e820c-2589-431e-b9e9-e189c8fc21fb  wifi      wlan0
netplan-eth0                  75a1216a-9d1a-30cd-8aca-ace5526ec021  ethernet  eth0
netplan-eth1                  433e484b-3493-3640-9368-395c0c752304  ethernet  --
netplan-wlan0-Seer_2019_2.4G  dc54eeb8-7952-3fd0-b039-12e985be0702  wifi      --
netplan-wlan0-wifi            eeb90e44-3b38-3189-a6a9-731a5205e1f3  wifi      --
sr@srs:~$ sudo nmcli connection delete 543e820c-2589-431e-b9e9-e189c8fc21fb



连接指定隐藏网络

sudo nmcli dev wifi connect [SSID] password [password] hidden yes



让网卡自动连接上一次连接过的网络

sudo nmcli connection up ifname wlan0 #wlan0 为网卡名称
sudo nmcli device connect wlan0



查看网卡连接详细状态

nmcli device show wlan0 #wlan0 为网卡名称
nmcli device show wlan0 |grep "IP4.GATEWAY"

注:192.168.6.141/24中的24是按子网掩码规则计算出来

例如:

255.0.0.0为8

255.255.0.0为16

255.255.255.0为24

255.255.255.255为32

怎么计算的呢?

那么255.255.255.224为多少呢?

255的二进制11111111是8个1

则8+8+8=24 而224的二进制为1110 0000有3个1, 那么它的子网掩码就是24+3 = 27



查询连接详细信息

sr@colibri-imx8x:~$ nmcli c show
NAME                UUID                                  TYPE      DEVICE
SEER-IoT            ac6b990f-fe26-460b-bcd7-ebeba36d653c  wifi      wlp1s0
netplan-eth1        8bf25856-ca0b-388e-823c-b898666ab9d2  ethernet  eth1
static-AlxWired-IP  56133558-bc50-4a8f-8302-ef340b671620  ethernet  --
sr@colibri-imx8x:~$ nmcli c show ac6b990f-fe26-460b-bcd7-ebeba36d653c
connection.id:                          SEER-IoT
connection.uuid:                        ac6b990f-fe26-460b-bcd7-ebeba36d653c
connection.stable-id:                   --
connection.type:                        802-11-wireless
connection.interface-name:              wlp1s0
connection.autoconnect:                 yes
connection.autoconnect-priority:        0
connection.autoconnect-retries:         -1 (default)
connection.multi-connect:               0 (default)
connection.auth-retries:                -1
connection.timestamp:                   1682660112
connection.read-only:                   no
connection.permissions:                 --
connection.zone:                        --
connection.master:                      --
connection.slave-type:                  --
connection.autoconnect-slaves:          -1 (default)
connection.secondaries:                 --
connection.gateway-ping-timeout:        0
connection.metered:                     unknown
connection.lldp:                        default
connection.mdns:                        -1 (default)
connection.llmnr:                       -1 (default)
connection.wait-device-timeout:         -1
802-11-wireless.ssid:                   SEER-IoT
802-11-wireless.mode:                   infrastructure
802-11-wireless.band:                   --
802-11-wireless.channel:                0
802-11-wireless.bssid:                  --
802-11-wireless.rate:                   0
802-11-wireless.tx-power:               0
802-11-wireless.mac-address:            --
802-11-wireless.cloned-mac-address:     --
802-11-wireless.generate-mac-address-mask:--
802-11-wireless.mac-address-blacklist:  --
802-11-wireless.mac-address-randomization:default
802-11-wireless.mtu:                    auto
802-11-wireless.seen-bssids:            26:5A:4C:13:F1:E9,26:5A:4C:24:0A:27
802-11-wireless.hidden:                 no
802-11-wireless.powersave:              0 (default)
lines 1-40

sr@colibri-imx8x:~$ nmcli device wlp1s0
Error: argument 'wlp1s0' not understood. Try passing --help instead.
sr@colibri-imx8x:~$ nmcli device show wlp1s0
GENERAL.DEVICE:                         wlp1s0
GENERAL.TYPE:                           wifi
GENERAL.HWADDR:                         EC:2E:98:86:83:33
GENERAL.MTU:                            1500
GENERAL.STATE:                          100 (connected)
GENERAL.CONNECTION:                     SEER-IoT
GENERAL.CON-PATH:                       /org/freedesktop/NetworkManager/ActiveConnection/2
IP4.ADDRESS[1]:                         192.168.9.172/21
IP4.GATEWAY:                            192.168.8.1
IP4.ROUTE[1]:                           dst = 0.0.0.0/0, nh = 192.168.8.1, mt = 600
IP4.ROUTE[2]:                           dst = 192.168.8.0/21, nh = 0.0.0.0, mt = 600
IP4.DNS[1]:                             10.255.253.1
IP6.GATEWAY:                            --



添加 802.1x 认证 wifi

WPA2 企业级加密的 WIFI 是通过 802.1x 认证的,通过 nmcli 需要特殊的配置。

扫描附近的 WiFi 热点,找到那个你想连接的

sudo nmcli d wifi

添加一个新连接

其实是添加了一个配置文件到 /etc/NetworkManager/system-connections,NetworkManager 从这个目录下读取网络配置,每个 wifi 配置都会有独立的配置文件。

sudo nmcli con add type wifi ifname <YOUR_WLAN> con-name <CUSTOM_CONNECTION_NAME> ssid <YOUR_SSID>


YOUR_WLAN

: 网卡名(如:wlan0)


CUSTOM_CONNECTION_NAME

:配置文件名,后面要编辑的时候以此为 id 指定要编辑的配置文件(建议与 wifi 的 SSID 同名)


YOUR_SSID

: wifi 的 SSID

或者直接执行 sudo nmcli con edit 后根据提示一步步走,最后保存也是一样的。

例如: 动态 IP 请求连接

sudo nmcli con edit id <CUSTOM_CONNECTION_NAME>
-> set ipv4.method auto
-> set 802-1x.eap peap
-> set 802-1x.phase2-auth mschapv2
-> set 802-1x.identity <YOUR_USERNAME>
-> set 802-1x.password <YOUR_PASSWORD>
-> set wifi-sec.key-mgmt wpa-eap
-> set connection.autoconnect true
-> save
-> activate
-> quit

例如: 静态 IP 请求连接

注: ssid: hu419087137

网卡:wlan0

sudo nmcli con add type wifi ifname wlan0 con-name hu419087137 ssid hu419087137
sudo nmcli con edit id hu419087137
-> set ipv4.method manual
-> set ipv4.addresses 10.192.22.171/27  #255.255.255.224=》27
-> set ipv4.gateway 10.192.22.161
-> set 802-1x.eap peap                 #认证协议(有3种基于TLS的EAP认证方法:peap,tls,ttls)
-> set 802-1x.phase2-auth mschapv2     #可扩展认证协议认证方式(md5, mschapv2,otp,gtc)
-> set 802-1x.identity admin123        #账户
-> set 802-1x.password admin12346578   #密码
-> set wifi-sec.key-mgmt wpa-eap       #密钥管理类型
-> set connection.autoconnect true     #开机自动连接
-> save
-> activate
-> quit
sudo service network-manager restart  #重启网络

查看已保存的连接

nmcli c show



创建/删除热点

关键字 描述
ifname 无线网卡名称
con-name 热点的名称,可以在删除时使用
ssid 热点的ssid
band wifi的协议标准
channel 信道
password 热点的密码。如果不设置,nmcli会生成一个WPA或者WEP的密码。加入全局选项–show-secrets将会输出热点的密码
#执行后,将会创建一个名为MyHotspot的 wifi 连接
nmcli device wifi hotspot ifname wlan0 con-name MyHostspot ssid qq419087137 password 12345678

#删除该热点
sudo nmcli connection delete Myhostspot



获取当前网卡的 AP 列表

## 获取 SSID 列表及MAC地址等
sr@srs:~$ sudo wpa_cli -i wlan0 scan
[sudo] password for sr:
OK
sr@srs:~$ sudo wpa_cli -i wlan0 scan_results
bssid / frequency / signal level / flags / ssid
ec:89:14:f0:5a:e8       5765    -71     [WPA2-PSK-TKIP][ESS]    RTL8186-default
ec:89:14:20:5a:e8       5805    -63     [WPA2-PSK-CCMP][WPS][ESS]       AGV_TEST_5G
ec:89:14:20:5a:e5       2412    -41     [WPA2-PSK-CCMP][ESS]    \x00\x00\x00\x00\x00\x00\x                     00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00                     \x00\x00\x00
ec:89:14:20:5a:e4       2412    -43     [WPA2-PSK-CCMP][WPS][ESS]       AGV_TEST



切换AP

#iwconfig 中的切换AP需要网卡支持
sr@srs:~$ sudo wpa_cli -i wlan0 roam B4:FB:E4:75:76:74
OK



启动网卡AP功能



/etc/modprobe.d/

下新建文件

mwifiex.conf

,编辑内容:

options mwifiex driver_mode=0x3

重启即可,其中对应功能如下:

  • 0x01: station
  • 0x02: ap
  • 0x04: p2p



禁止启用网卡别名

由于在物理上mlan0和uap0是一张网卡,所以在挂载过程中只触发一次uevent事件,导致实际使用别名的网卡只有一张,具有随机性,所以需要禁止使用网卡别名。

删除网卡别名配置文件:

sudo rm /etc/modprobe.d/iwlwifi.conf



DHCP



安装dhcp服务

这里使用

isc-dhcp-server

来实现dhcp服务

sudo apt install isc-dhcp-server



配置dhcp服务

编辑

/etc/dhcp/dhcpd.conf

:

添加网段描述:

subnet 10.42.0.0 netmask 255.255.255.0 {
  range 10.42.0.10 10.42.0.200;
  option routers 10.42.0.1;
}

指定需要开启dhcp服务的网卡:

INTERFACESv4="uap0";



启动dhcp服务

使用systemd管理服务:

systemctl enable isc-dhcp-server.service



nmcli开启热点指令

sudo nmcli dev wifi hotspot ifname uap0 con-name test ssid myHotspot password 12345678

由于在该指令未配置网关地址,所以可以在

/etc/NetworkManager/system-connections/

中配置网卡的默认IP(需要和DHCP保持一致)



网卡配置


https://blog.csdn.net/u012020854/article/details/109638950



ubuntu18.04 安装


https://blog.csdn.net/u012020854/article/details/86551504



ubuntu18.04 卡死


https://blog.csdn.net/u012020854/article/details/106091636



ubuntu18.04 常用指令


https://blog.csdn.net/u012020854/article/details/101032734



ubuntu18.04添加自定义分辨率


https://blog.csdn.net/u012020854/article/details/103787492



版权声明:本文为u012020854原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。