在给ubuntu的有线网卡或者无线网卡设置静态ip之前,首先我们需要了解有关网卡命名的知识。
在unbuntu16.04之后,ifconfig会发现网卡名eth0变成了enp2s0,wlan0变成了enp3s0或者类似的名称。
这种改变可以参考Predictable Network Interface Names.
网卡命名更换的原因如文中所说:
内核应用的网络接口的经典命名方案是简单地将由“eth0”,“eth1”开头的名称分配给驱动程序探测到的所有接口。由于驱动程序探测通常对于现代技术来说是不可预测的,这意味着只要多个网络接口可用,名称“eth0”,“eth1”等的分配通常不再是固定的,并且很可能发生“ eth0“在一次启动时最终成为”eth1“。这可能具有严重的安全隐患,例如在为某些命名方案编码的防火墙规则中,因此对不可预知的更改名称非常敏感。我们认为推广“biosdevname”开创的方案是一个很好的默认选择。根据固件/拓扑/位置信息分配固定名称具有很大的优点,即名称是完全自动的,完全可预测的,即使添加或移除硬件(即不发生重新枚举),它们仍保持固定,并且可以替换损坏的硬件无缝连接。尽管如此,他们承认有时比每个人都习惯的“eth0”或“wlan0”更难阅读。例如:“enp5s0”
网卡命名的规则
在udev-builtin-net_id 中还提到了网卡的新命名规则
/* * Two character prefixes based on the type of interface: * en — Ethernet * sl — serial line IP (slip) * wl — wlan * ww — wwan * * Type of names: * b— BCMA bus core number * c */— CCW bus group name, without leading zeros [s390] * o [d ] — on-board device index number * s [f ][d ] — hotplug slot index number * x — MAC address * [P ]p s [f ][d ] * — PCI geographical location * [P ]p s [f ][u ][..][c ][i ] * — USB port number chain
上面一段是systemd源码的注释,意思是:
en代表以太网卡
p3s0代表PCI接口的物理位置为(3, 0), 其中横座标代表bus,纵座标代表slot
使用ifconfig命令,我们能看到以下有三个网卡的信息。
enp2s0 Link encap:以太网 硬件地址 20:1a:06:be:7b:ec
inet 地址:10.10.15.172 广播:10.10.15.255 掩码:255.255.255.0
inet6 地址: fe80::102c:6a2e:d483:1fe9/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 跃点数:1
接收数据包:8377 错误:0 丢弃:39 过载:0 帧数:0
发送数据包:3808 错误:0 丢弃:0 过载:0 载波:0
碰撞:0 发送队列长度:1000
接收字节:3530723 (3.5 MB) 发送字节:510433 (510.4 KB)
中断:16
lo Link encap:本地环回
inet 地址:127.0.0.1 掩码:255.0.0.0
inet6 地址: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:65536 跃点数:1
接收数据包:10307 错误:0 丢弃:0 过载:0 帧数:0
发送数据包:10307 错误:0 丢弃:0 过载:0 载波:0
碰撞:0 发送队列长度:1000
接收字节:33424684 (33.4 MB) 发送字节:33424684 (33.4 MB)
wlp3s0 Link encap:以太网 硬件地址 48:5a:b6:d7:2a:f3
UP BROADCAST MULTICAST MTU:1500 跃点数:1
接收数据包:0 错误:0 丢弃:0 过载:0 帧数:0
发送数据包:0 错误:0 丢弃:0 过载:0 载波:0
碰撞:0 发送队列长度:1000
接收字节:0 (0.0 B) 发送字节:0 (0.0 B)
中断:17
这三个网卡分别代表了有线网卡、本地环回和无线网卡。区分是有线网卡还是无线网卡,只需校验在使用网线连接时,哪个网卡有ip地址信息,有即为有线网卡。或者在使用wifi连接时,哪个网卡有ip地址信息,有即为无线网卡。
以下以给有线网卡enp2s0设置静态ip为例:
打开一个终端,在超级用户下使用如下命令:
vim /etc/network/interfaces
然后编辑网络的配置命令,先将原先的命令注释掉,然后添加新的命令:
#auto lo
#iface lo inet loopback
上面的注释之后,添加一下:
auto enp2s0其中需注意的是:
1、网关地址要根据自己的局域网来填写,每个人的都不一样。
可以用ip route show命令查看自己的网关地址
default via 10.10.15.1 dev enp2s0 proto static metric 100
10.10.15.0/24 dev enp2s0 proto kernel scope link src 10.10.15.172 metric 100
169.254.0.0/16 dev enp2s0 scope link metric 1000
由上可知,10.10.15.1为我的网关地址。
2、dns-nameserver尽量选择知名度较高的公共dns
可以在公共dns哪家强-知乎 选择你喜欢的公共dns
设置完重启电脑后,/etc/resolv.conf 文件中会自动添加 nameserver 223.5.5.5
参考:ubuntu linux设置静态ip的方法
给无线网卡设置静态ip
首先需要确保无线网卡驱动已安装,并且工作正常。
启动的的时候,udev会识别硬件,并加载相应的驱动。
有些芯片需要额外的firmware, 默认安装的linux-firmware提供了很多固件。
检查设备状态:
lspci -k
或者 lspci -v
检查设备驱动是否已经加载
例如:
1
2
3
4
|
05:00.0 Network controller: Realtek Semiconductor Co., Ltd. RTL8723BE PCIe Wireless Network Adapter
Subsystem: Lenovo Device b728
Kernel driver in use: rtl8723be
Kernel modules: rtl8723be
|
通过ip link
查看设备, 无线设备通常是wlp5s0这样的名称。
启用设备:
ip link set <设备名> up
如果设备加载正常,接口正常启用,则说明不需要安装额外的firmware.
如果显示错误信息: “SIOCSIFFLAGS: No such file or directory”, 那说明缺失firmware
查看已加载的firmware的kernel message信息
1
2
|
$ dmesg | grep firmware
[ 11.644190] Using firmware rtlwifi/rtl8723befw.bin
|
install driver/firmware:
RTL Wi-Fi的git地址: https://github.com/lwfinger/rtlwifi_new.git
管理方法 | 接口激活 | 无线连接管理 | IP地址分配 |
---|---|---|---|
手动设置 (无加密,或者WEP加密) | ip | iw | ip/dhcpd/dhclient/networkd |
手动设置 (WAP/WAP2 PSK加密) | ip | iw + wpa_supplicant | ip/dhcpd/dhclient |
自动管理 | netctl, Wicd, NetworkManger等 |
Just like other network interfaces, the wireless ones are controlled with ip from the iproute2
package
管理无线网络连接还需要安装一些软件包:
iw
只支持nl80211(netlink)标准, 不支持老的WEXT(Wireless EXTentions)标准, 如果iw没有显示网卡,可能是这个原因
wireless_tools
已经过时,但是依然广泛使用。 WEXT设备使用此工具
wpa_supplicant
提供WPA/WPA2加密支持,同时支持nl80211和WEXT
interface activation
在使用iw或者wireless_tools之前,有些网卡需要激活内核接口
$ ip link set wlp5s0 up
验证接口是否已经打开:
1
2
3
|
$ ip link show wlp5s0
3: wlp5s0:
link/ether 12:34:56:78:9a:bc brd ff:ff:ff:ff:ff:ff
|
UP表示接口已经打开
iw只能连接开放网络或者WEP网络.
示例中的wireless device interface是wlp5s0
your_essid 是要连接的热点ssid
获取接口名
1
2
3
4
5
6
7
8
|
$ iw dev
phy#0
Interface wlp5s0
ifindex 3
wdev 0x1
addr 12:34:56:78:9a:bc
type managed
channel 6 (2437 MHz), width: 20 MHz, center1: 2437 MHz
|
iw command | Description |
---|---|
iw dev wlp5s0 link | 获取连接状态 |
iw dev wlp5s0 scan | 扫描可用热点 |
iw dev wlp5s0 set type ibss | 设置操作模式为ad-hoc |
iw dev wlp5s0 connect your_essid | 连接到开放网络 |
iw dev wlp5s0 connect your_essid 2432 | 连接到开放网络的指定通道 |
iw dev wlp5s0 set power_save on | 启用省电模式 |
连接到WEP加密的网络
WEP的密码长度是固定的, key的格式如下:
1
2
3
4
5
6
|
[d:]index:data
'd:' means default (transmit) key
'index:' is a single digit (0-3)
'data' must be 5 or 13 ascii chars
or 10 or 26 hex digits
for example: d:2:6162636465 is the same as d:2:abcde
|
查看连接状态
1
2
3
4
5
6
7
8
9
10
11
12
|
$ iw dev wlp5s0 link
Connected to 7c:7d:3d:73:e6:03 (on wlp5s0)
SSID: MyESSID
freq: 2437
RX: 1256767 bytes (11788 packets)
TX: 4568 bytes (47 packets)
signal: -8 dBm
tx bitrate: 7.2 MBit/s MCS 0 short GI
bss flags: short-preamble short-slot-time
dtim period: 2
beacon int: 100
|
获取统计数据
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
$ iw dev wlp5s0 station dump
Station 12:34:56:78:9a:bc (on wlp5s0)
inactive time: 7813 ms
rx bytes: 1456449
rx packets: 13661
tx bytes: 4568
tx packets: 47
tx retries: 0
tx failed: 0
signal: -10 dBm
signal avg: -11 dBm
tx bitrate: 7.2 MBit/s MCS 0 short GI
rx bitrate: 1.0 MBit/s
authorized: yes
authenticated: yes
preamble: long
WMM/WME: yes
MFP: no
TDLS peer: no
|