我想知道如何获取网络接口的掩码。用ifconfig它很简单,但我必须使用该ip工具,并且ip addr show没有向我展示我想要的东西。
下面是一个输出示例ip addr:
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
Run Code Online (Sandbox Code Playgroud)
另外,那个 brd 字段是什么?
我实际上喜欢可预测的接口名称,我只想在 Debian dist-upgrade 后重新启动之前知道它们,以便我可以相应地更改它们/etc/network/interfaces。知道如何预测它们吗?
我正在基于 Atmel Sama5d2 的定制板上运行 buildroot 定制 Linux(内核 4.9.87)。
我正在尝试仅在热插拔时使用 dhcp 在 eth0 接口上配置网络。
最初,该接口是在启动时使用auto eth0into配置的/etc/network/interfaces
我将其更改为allow-hotplug eth0具有以下文件
# cat /etc/network/interfaces
auto lo
iface lo inet loopback
allow-hotplug eth0
iface eth0 inet dhcp
Run Code Online (Sandbox Code Playgroud)
进行此更改后,udhcpc 不会在启动时运行,并且如果未插入电缆,也不会再阻止 linux 启动 30 秒。
但是,当我插入或拔出电缆时,没有任何反应。
如果我手动运行,ifup -a我会在接口上获得一个 IP 地址eth0。
从这个结果来看,我认为问题不是来自网络配置,而是更多来自处理低级事件。
我尝试使用 udevadm 监视电缆的插入/拔出,但在插入和拔出电缆时看不到任何内核事件(但我可以看到来自 USB 子系统的事件)。
我还编写了一条 udev 规则来记录事件,以防 udevadm 未中继此子系统事件。
# cat /etc/udev/rules.d/20-network.rules
SUBSYSTEM=="net", ACTION=="add", RUN+="/test.sh add"
SUBSYSTEM=="net", ACTION=="remove" , RUN+="/test.sh remove"
Run Code Online (Sandbox Code Playgroud)
然而,这条规则也不会触发任何事情。
所以现在我认为我在检测网络电缆热插拔时遇到问题。
我可能是内核配置错误以及硬件接线错误。
我真的不知道如何在硬件级别检测插入/拔出事件,但我认为该事件要么由驱动程序本身直接发送到 udev,要么由部署它的众多内核框架之一发送到 …
Netplan.io是一个相对较新的网络接口配置工具。它引起了我的注意,因为它已成为在 Ubuntu 上配置接口的“默认”方式。
Debian 本身呢?是否有计划集成 netplan.io 并替换/etc/network/interfaces像在 Ubuntu 中所做的那样?我可以看到 netplan.io包含在 Debian Buster 中。会默认安装吗?
我ssh编辑了我的流浪机器。
System load: 0.13 Processes: 169
Usage of /: 6.6% of 61.80GB Users logged in: 0
Memory usage: 76% IP address for eth0: 10.0.2.11
Swap usage: 16% IP address for eth1: 192.100.0.12
Run Code Online (Sandbox Code Playgroud)
这两个私有IP有什么区别?
我有一台带有两个网络接口和两个不同互联网连接的机器。我知道有多个路由表之类的东西。不过我有一个非常简单的场景。传出 ssh 应用程序应始终通过 wlan0。那么为什么要做这么复杂的事情呢?
第一次使用curl 进行测试,它的工作非常完美:
curl --interface wlan0 ifconfig.me
185.107.XX.XX
curl --interface eth0 ifconfig.me
62.226.XX.XX
Run Code Online (Sandbox Code Playgroud)
因此,无需为两个接口设置任何特殊的路由规则,它就完全按照我想要的方式工作。eth0 是默认路由
ip route
default via 192.168.178.1 dev eth0 proto dhcp src 192.168.178.21 metric 202
default via 172.16.1.1 dev wlan0 proto dhcp src 172.16.1.88 metric 303
172.16.1.0/24 dev wlan0 proto dhcp scope link src 172.16.1.88 metric 303
192.168.178.0/24 dev eth0 proto dhcp scope link src 192.168.178.21 metric 202
Run Code Online (Sandbox Code Playgroud)
现在尝试用 wget 做同样的事情。Wget 非常适合调试,因为它具有与--bind-addressssh 相同的选项-b。
wget -O- --bind-address=192.168.178.21 ifconfig.me 2> /dev/null
62.226.XX.XX …Run Code Online (Sandbox Code Playgroud) 尝试配置具有两个具有不同 IP 地址但位于同一子网上的 NIC 的计算机。只有一个ip可达,另一个ip不可达
ifconfig 显示以下内容
eno1 ip 192.168.0.100 netmask 255.255.0.0
eno2 ip 192.168.0.101 netmask 255.255.0.0
gateway 192.168.0.1
Run Code Online (Sandbox Code Playgroud)
我需要设置ip表吗?如果是的话,这是怎么做到的?