我刚刚在我的 mac (osx10.9.3 + virtualbox) 上安装了 CentOS7 作为虚拟机。运行ifconfig返回命令未找到。还运行sudo /sbin/ifconfig返回命令未找到。我是根。的输出
echo $PATH如下。
/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/robbert/.local/bin:/home/robbert/bin
Run Code Online (Sandbox Code Playgroud)
我的路径正常吗?如果没有,我该如何更改它?
另外,我还没有在虚拟机上连接互联网,也许这是一个因素。
在某些时候,在我遇到的一些关于 Linux 的教学材料(来自 Linux Foundation)中,提到了以下内容:
ipcommand 比ifconfig因为它使用netlink套接字而不是ioctl系统调用更通用和更有效。
任何人都可以详细说明这一点,因为我无法理解引擎盖下发生了什么?
PS 我知道关于这些工具的这个主题,但它没有解决它们如何操作的具体差异
经过大量研究,我仍然没有找到此查询的答案,如何修改命令“ifconfig”以显示我计算机的 MAC 地址?
我有一个带有两个 NIC 的系统。这台机器和一些随附的设备将被移动并连接到不同的局域网,有时它会使用拨号上网。
eth0:
- 10.x.x.x address space
- no internet gateway
- only a few devices
eth1 (when used):
- 172.16.x.x or 192.168.x.x or other address spaces
- access to the gateway from LAN to internet
ppp0 (when used):
- internet access through dialup using KPPP
Run Code Online (Sandbox Code Playgroud)
我正在使用 ifconfig 来启动或关闭接口(除了由 KPPP 处理的 ppp0)。
如果我首先启动 eth1,它会从其 DHCP 获取地址并获取网关,然后将其添加到路由中,因此访问 LAN 和 Internet 没有问题。
如果我首先或第二次启动 eth0,它会获取其地址并将默认网关设置在其地址空间内(在 10.xxx 范围内)。如果我先打开 eth0,然后再打开 eth1,默认网关仍然保持在 10.xxx 范围内。
所以无论我做什么,eth0 都会覆盖 eth1 并在路由中“声明”网关。
有什么方法可以阻止 eth0 声明网关,或者确保 eth1(如果是第二个)使用它的网关?或者我可以以某种方式优先考虑应该使用哪个接口的网关而不是其他接口?
我基本上想确保使用 eth1 的默认地址空间网关,如果它处于活动状态,如果不是,则使用 …
我正在尝试使用 ifconfig 在嵌入式 linux 上配置网络接口:
ifconfig eth0 192.168.0.101 netmask 255.255.255.0
Run Code Online (Sandbox Code Playgroud)
但我不知道如何将默认网关添加为 ifconfig 参数,
有任何想法吗?
该ifconfig命令会向您转储大量信息,尤其是当您有很多接口而您不知道它们来自哪里时。我已经通读了这个教程页面,它对ifconfig. 但它不包含我想要的所有信息(也可能过时 12 年)。
使用ip addr show eth0:
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 08:00:27:e2:80:18 brd ff:ff:ff:ff:ff:ff
inet 10.0.2.15/24 brd 10.0.2.255 scope global eth0 valid_lft forever preferred_lft forever
Run Code Online (Sandbox Code Playgroud)
我发现解析某些输出很困难。
eth0:
<...>描述...接口功能?不确定在哪里可以找到完整的选项集,不确定它们叫什么,不知道要谷歌什么。其他选项是什么?state UP- 我知道还有state DOWN和state RUNNING。这些都是软件结构,对吧?当我跑步时ip link set dev eth0 down,身体上没有任何变化,对吧?那么当这个状态发生变化时,内核会如何不同呢?这个状态会改变吗?group default- 接口组。他们解决的独特问题是什么?inet
scope global意思 - 私有 IP …有人可以详细说明输出中各个RX packets字段之间的区别ifconfig吗?
例如,假设我运行ifconfig并看到以下内容:
eth0 Link encap:Ethernet HWaddr AA:BB:CC:DD:EE:FF
inet addr:1.1.1.1 Bcast:1.1.1.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:202723544 errors:0 dropped:4959 overruns:0 frame:37
TX packets:158354057 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:4261083782 (3.9 GiB) TX bytes:1224803677 (1.1 GiB)
Interrupt:83 Memory:f6bf0000-f6c00000
Run Code Online (Sandbox Code Playgroud)
是有什么区别errors: dropped: overruns和frame:
我在这一点上的猜测(基于一些模糊的谷歌搜索)是frame:当 nic 分析传入帧时特别与 CRC 失败有关,这errors:是一个更广泛的通用类别。再说一遍……如果是这样,我希望这两个字段都显示数字。
我试图了解网络驱动程序在 Linux 下是如何工作的。此问答显示 Linux 中的网络设备不是由设备文件表示的。它指出网络驱动程序与sockets.
例如,这里参考了如何通过ioctl呼叫设置网络设备。ioctl但是需要一个文件描述符,因为没有用于网络驱动程序的设备文件,唯一可以传递的文件描述符是来自套接字的文件描述符。
这让我进入了问题的重点。到目前为止,网络接口似乎是物理网卡的软件表示,实际上是套接字的劣等对象。
但是这个抽象意义上的套接字是什么,它只是支持推送通知的设备文件的另一个名称吗?我从用户空间应用程序绑定到网络接口上的地址:端口对的连接点方面理解 TCP 套接字。我不明白套接字是设置网络接口的先决条件。
Linux 上的网络接口(如eth0由 列出ifconfig)可以在没有套接字的情况下存在吗?
是否ifconfig或某些网络管理器守护进程保持套接字打开以允许我们设置网络接口选项?
我想在 Bash 中创建一个包含所有活动网络接口的数组。
我设法创建了一个 for 循环打印它们,但是当我尝试创建数组时,它只包含最后一个lo接口而不包含另一个接口。这是我的代码:
#!/bin/bash
for iface in $(ifconfig | cut -d ' ' -f1| tr ':' '\n' | awk NF)
do
printf "$iface%s\n"
declare -a array_test=["$iface"]
done
for i in "${array_test[@]}"; do echo "$i"; done
Run Code Online (Sandbox Code Playgroud)
这是我的输出:
eno1
eno2
eno3
lo
[lo]
Run Code Online (Sandbox Code Playgroud)
另外,如何从数组中排除 lo localhost 接口?
如何捕获来自ifconfig命令的第一个IP地址?
ifconfig -a
enw178032: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 100.14.22.12 netmask 255.255.0.0 broadcast 100.14.255.255
inet6 fe80::250:56ff:fe9c:158a prefixlen 64 scopeid 0x20<link>
ether 00:10:56:9c:65:8a txqueuelen 1000 (Ethernet)
RX packets 26846250 bytes 12068811576 (11.2 GiB)
RX errors 0 dropped 58671 overruns 0 frame 0
TX packets 3368855 bytes 1139160934 (1.0 GiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
Run Code Online (Sandbox Code Playgroud)
预期结果:
IP=100.14.22.12
Run Code Online (Sandbox Code Playgroud) ifconfig ×10
networking ×6
linux ×5
bash ×2
centos ×2
awk ×1
command ×1
gateway ×1
ip ×1
ipv4 ×1
linux-kernel ×1
mac-address ×1
routing ×1
sed ×1
socket ×1