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