ubuntu16.04 网卡命名

       在给ubuntu的有线网卡或者无线网卡设置静态ip之前,首先我们需要了解有关网卡命名的知识。

       在unbuntu16.04之后,ifconfig会发现网卡名eth0变成了enp2s0,wlan0变成了enp3s0或者类似的名称。

这种改变可以参考Predictable Network Interface Names
<https://www.freedesktop.org/wiki/Software/systemd/PredictableNetworkInterfaceNames/>
.

网卡命名更换的原因如文中所说:
内核应用的网络接口的经典命名方案是简单地将由“eth0”,“eth1”开头的名称分配给驱动程序探测到的所有接口。
由于驱动程序探测通常对于现代技术来说是不可预测的,这意味着只要多个网络接口可用,名称“eth0”,“eth1”等的分配通常不再是固定的,并且很可能发生“
eth0“在一次启动时最终成为”eth1“。这可能具有严重的安全隐患,例如在为某些命名方案编码的防火墙规则中,因此对不可预知的更改名称非常敏感。

为了解决这个问题,已经提出并实施了多种解决方案。 udev在较长时间内支持根据其MAC地址为特定接口分配永久“ethX”名称。
事实证明,这有许多问题:这需要一个通常不可用的可写根目录;由于在系统上引导OS映像会导致系统的无状态丢失,导致映像配置发生变化;
在很多系统上,MAC地址并没有实际的固定,比如在很多嵌入式硬件上,特别是在各种虚拟化解决方案上。
然而,最重要的是,用户空间组件尝试分配接口名称,与内核分配来自同一个“ethX”名称空间的新名称,这是一种具有各种奇怪效果的竞态条件,其中名称分配有时失败。
因此,在此之前已经从systemd / udev中删除了对此的支持。

另一个已经实现的解决方案是“biosdevname”,它尝试在某些固件接口中查找固定插槽拓扑信息,并使用它们将固定名称分配给包含其在主板上的物理位置的接口。
在某种程度上,这种命名方案类似于通过/ dev / * / by-path / symlinks为各种设备节点在udev中本地完成的命名方案。
在许多情况下,biosdevname不同于udev通常用于这些符号链接的低级内核设备标识方案,而是发明自己的枚举方案。

最后,许多发行版都支持将用户选择的名称重新命名为接口(认为:“internet0”,“dmz0”,...),将其MAC地址或物理位置作为其网络脚本的一部分。
这是一个非常好的选择,但确实存在这样的问题,即它意味着用户愿意并且能够选择和分配这些名称。


我们认为推广“biosdevname”开创的方案是一个很好的默认选择。
根据固件/拓扑/位置信息分配固定名称具有很大的优点,即名称是完全自动的,完全可预测的,即使添加或移除硬件(即不发生重新枚举),它们仍保持固定,并且可以替换损坏的硬件
无缝连接。尽管如此,他们承认有时比每个人都习惯的“eth0”或“wlan0”更难阅读。例如:“enp5s0”


 网卡命名的规则

在udev-builtin-net_id
<https://github.com/systemd/systemd/blob/master/src/udev/udev-builtin-net_id.c#L20>
  中还提到了网卡的新命名规则


<https://github.com/systemd/systemd/blob/master/src/udev/udev-builtin-net_id.c#L20>
/* * Two character prefixes based on the type of interface: * en — Ethernet *
sl — serial line IP (slip) * wl — wlan * ww — wwan * * Type of names: *
b<number> — BCMA bus core number * c<bus_id> — CCW bus group name, without
leading zeros [s390] * o<index>[d<dev_port>] — on-board device index number *
s<slot>[f<function>][d<dev_port>] — hotplug slot index number * x<MAC> — MAC
address * [P<domain>]p<bus>s<slot>[f<function>][d<dev_port>] * — PCI
geographical location *
[P<domain>]p<bus>s<slot>[f<function>][u<port>][..][c<config>][i<interface>] * —
USB port number chain*/
上面一段是systemd源码的注释,意思是:

*
en代表以太网卡

*
p3s0代表PCI接口的物理位置为(3, 0), 其中横座标代表bus,纵座标代表slot

给网卡设置静态ip

       使用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
iface enp2s0 inet static
address 10.10.15.172
netmask 255.255.255.0
gateway 10.10.15.1
broadcast 10.10.15.255
dns-nameserver 223.5.5.5






其中需注意的是:

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哪家强-知乎 <https://www.zhihu.com/question/32229915> 选择你喜欢的公共dns


 设置完重启电脑后,/etc/resolv.conf 文件中会自动添加 nameserver  223.5.5.5


参考:ubuntu linux设置静态ip的方法
<https://jingyan.baidu.com/article/f54ae2fc11d1f11e92b849b7.html>

给无线网卡设置静态ip



Wireless network configuration

wireless device driver

首先需要确保无线网卡驱动已安装,并且工作正常。

启动的的时候,udev会识别硬件,并加载相应的驱动。
有些芯片需要额外的firmware, 默认安装的linux-firmware提供了很多固件。

检查设备状态:

lspci -k 或者 lspci -v
检查设备驱动是否已经加载

例如:


123405: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信息

12$ dmesg | grep firmware[ 11.644190] Using firmware rtlwifi/rtl8723befw.bin
install driver/firmware:

Linux支持的无线网卡驱动

Linux Wi-Fi设备ID列表

RTL Wi-Fi的git地址: https://github.com/lwfinger/rtlwifi_new.git

manage the wireless connections

管理方法接口激活无线连接管理IP地址分配
手动设置 (无加密,或者WEP加密)ipiwip/dhcpd/dhclient/networkd
手动设置 (WAP/WAP2 PSK加密)ipiw + wpa_supplicantip/dhcpd/dhclient
自动管理 netctl, Wicd, NetworkManger等
Just like other network interfaces, the wireless ones are controlled with ip
from theiproute2 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

验证接口是否已经打开:

123$ ip link show wlp5s0 3: wlp5s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500
qdisc mq state UP mode DORMANT group default qlen 1000 link/ether
12:34:56:78:9a:bc brd ff:ff:ff:ff:ff:ff
<BROADCAST,MULTICAST,UP,LOWER_UP>
UP表示接口已经打开

iw usage

iw只能连接开放网络或者WEP网络.

示例中的wireless device interface是wlp5s0
your_essid 是要连接的热点ssid

获取接口名


12345678$ iw devphy#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 commandDescription
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的格式如下:


123456[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 digitsfor
example: d:2:6162636465 is the same as d:2:abcde
查看连接状态

123456789101112$ iw dev wlp5s0 linkConnected 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
获取统计数据


12345678910111213141516171819$ iw dev wlp5s0 station dumpStation
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

友情链接
KaDraw流程图
API参考文档
OK工具箱
云服务器优惠
阿里云优惠券
腾讯云优惠券
华为云优惠券
站点信息
问题反馈
邮箱:ixiaoyang8@qq.com
QQ群:637538335
关注微信