我正在尝试识别大约 20 个远程服务器上的 NIC(每台服务器上有 2-6 个 NIC)。首先,我想确定那些可以使用的和免费的。如何检查物理介质的状态?我知道一些方法,其中包括ifconfig|grep RUNNING,ethtool,cat /sys/class/net/eth0/carrier,但它们都需要接口启动。我不想调出所有接口。不知道为什么,但我不喜欢在网络中启用但未配置的接口。有什么办法可以避免这种情况吗?
或者我只是错了,所有接口都启动(并且未配置)并没有什么不好?即使它们已插入?
在 Linux 下,如果您将数据包发送到其网络接口之一的地址,则该数据包将在内部路由,永远不会通过网络发送。这在 99.99% 的情况下都是正确的。
有时,在测试网络配置时,从机器本身通过本地链接发送数据包很有用,机器本身作为目标。我怎样才能做到这一点?如果不是点对点链接,至少对于总线类型的链接,例如以太网。我只对 IP 数据包(IPv4 和 IPv6)感兴趣。
我有一台需要通过 SSH 连接的设备。该设备通过直接以太网连接连接到我的工作站。我正在尝试以某种方式为连接的设备分配一个 IP 地址,我可以通过 SSH 连接到该地址,但是我发现的所有指南都让用户从他们正在使用的任何设备(即 Raspberry Pi 等)配置 IP . 这不是我可以用这个设备做的事情,因为我没有物理接口可以使用。
有人建议我在我的工作站上设置一个 DHCP 服务器,这样它就会为我处理这个问题,但是我不知道如何配置它,而且我遵循的指南都没有帮助。通过这种方法,我似乎能够将 IP 绑定到设备所连接的接口,但是通过 SSH 连接到该 IP 只会让我回到我自己的机器上。
所以我的主要问题是:如何为通过以太网电缆直接连接到我的计算机的设备分配 IP 地址,而无需对设备进行任何类型的访问(无接口、键盘、显示器等)。如果答案是在我的机器上设置 DHCP 服务器,我该如何正确配置它并获得一个可以通过 SSH 连接的 IP?
作为参考,我使用安装了 OpenSSH 的 Ubuntu 16.04。该设备还运行某种 Linux 版本并安装了 SSH 软件,但除了通过 SSH 之外,无法与它进行交互。我也无法访问我的路由器,因此将设备插入那里并让路由器完成工作不是一种选择。
在我的有线 LAN 上,使用 1GBit/s 的设备,我有两台 Linux 机器(一台 Haswell,一台 Skylake Xeon),当我对大文件进行安全复制时,我看到 38MB/s。
看到这比1000Mbit/s规范低了3倍,不知道这个性能是否符合预期?
两台机器都使用 SSD 进行存储,都运行 64 位 Ubuntu。
在传输过程中,两台机器在 30% 的负载下大约有一个内核。
位于机器之间的路由器是 TP-Link Archer C7 AC1750。两台机器都有处于全双工模式的英特尔(R) 千兆以太网网络设备。
1Gbit LAN 上的正常 scp 传输速度是多少?
更新
/dev/zero排除磁盘 IO 产生了相同的结果。结论
中间的TP-Link路由器是网络中的薄弱环节,跟不上。
我正在尝试了解绑定模式 = 0(负载平衡循环)。使用 eth0 和 eth1,我创建了 bond0 接口,如下配置:
root@test-env1:~# cat /etc/sysconfig/network-scripts/ifcfg-bond0
DEVICE=bond0
ONBOOT=yes
NM_CONTROLLED=no
USERCTL=no
BOOTPROTO=static
IPADDR=192.168.57.91
NETMASK=255.255.255.0
GATEWAY=192.168.57.1
BONDING_OPTS="mode=0 miimon=100"
root@test-env1:~#
root@test-env1:~# cat /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
ONBOOT=yes
NM_CONTROLLED=no
MASTER=bond0
SLAVE=yes
USERCTL=no
root@test-env1:~# cat /etc/sysconfig/network-scripts/ifcfg-eth1
DEVICE=eth1
ONBOOT=yes
NM_CONTROLLED=no
MASTER=bond0
SLAVE=yes
USERCTL=no
root@test-env1:~#
Run Code Online (Sandbox Code Playgroud)
绑定接口建立成功:
root@test-env1:~# cat /proc/net/bonding/bond0
Ethernet Channel Bonding Driver: v3.6.0 (September 26, 2009)
Bonding Mode: load balancing (round-robin)
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 100
Down Delay (ms): 100
Slave Interface: eth0
MII Status: up …Run Code Online (Sandbox Code Playgroud) I recently noticed I am only getting 100Mbit/s of througput on my gigabit home network.
When looking into it with ethtool I found my ArchLinux Box was using 100baseT/Half as link speed instead of 1000baseT/Full which its NIC and the switch connected to it support.I am not sure why but the NIC seems to not be advertising its link-modes according to ethtool:
Settings for enp0s31f6:
Supported ports: [ TP ]
Supported link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Full
Supported …Run Code Online (Sandbox Code Playgroud) 在以下示例中:
$ ip a | grep scope.global
inet 147.202.85.48/24 brd 147.202.85.255 scope global dynamic enp0s3
Run Code Online (Sandbox Code Playgroud)
“brd”是什么意思?
我正在尝试建立一个系统,将未标记的以太网网络加入 TAP 隧道,在流量移动到隧道时添加 VLAN 标记。
到目前为止,我有:
eth0 - 承载未标记流量的物理以太网接口。tap1 - TAP 隧道接口。br0- 一个包含tap1(和一些其他物理接口)的网桥我知道我可以通过执行以下操作在以太网端添加 VLAN 标记:
$ ip link add link eth0 name eth0.5 type vlan id 5
$ brctl addif br0 eth0.5
Run Code Online (Sandbox Code Playgroud)
但是我怎么能反过来呢?
编辑我发现我可以做到这一点:
$ ip link add veth0 type veth peer name veth1
$ ip link add link veth0 name veth0.5 type vlan id 5
$ brctl addif br0 veth0.5
$ brctl addbr br1
$ brctl addif br1 eth0
$ brctl addif …Run Code Online (Sandbox Code Playgroud) 我在带有两个以太网适配器的(虚拟)机器上运行 CentOS 6.3。我将 eth0 连接到 TCP/IP LAN,将 eth1 连接到 DSL 调制解调器。该系统旨在用作专用路由器/防火墙,并设置了 iptables 以执行 SNAT、DNAT 和所需的过滤。
这很好用,但我更换了 DSL 调制解调器,不幸的是,新的(更快)调制解调器是白痴的,因此会自动执行 NAT,并且不允许我将我的公共 IP 传递给 eth1。我不能容忍双重 NAT,所以我做了一些研究,并了解到可以通过在计算机上执行 PPPoE 来“欺骗”该调制解调器为我的计算机提供公共 IP。
因此,我将 pppd 设置为使用 eth1,创建 ppp0 连接,然后在我的自定义 iptables 配置脚本中替换 eth1。这似乎在一定程度上有效,但我必须打开防火墙才能使其工作,而且它很不稳定。
部分是为了帮助排除故障,我想完全排除任何 TCP/IP 流量被直接路由到 eth1 的可能性,我的“友好”调制解调器将很乐意对其进行 NAT。
据我所知,PPPoE 位于 IP 下方,而不是 IP 上方 - 在它直接处理以太网帧的物理接口上。因此,我什至不必在 eth1 上配置 IP 网络,以便 pppd 工作,因此在 eth1 上运行的 IP 网络只是不必要地使问题复杂化。
这就是我发现的地方,愚蠢的我,我不知道如何在 Linux 上禁用 TCP/IP 堆栈!我知道在 Windows 机器上,您可以在适配器属性中取消选中 TCP/IP 协议,但在这里我运行的是纯文本 CentOS,我不知道该怎么做。
显然这不是一个非常普遍的愿望,因为我一直在互联网上搜索无济于事。以太网适配器是TCP/IP 连接似乎是一个硬连线假设。嗯,通常...
谢谢你的帮助!凯文
今天我收到了一台全新的 Dell OptiPlex 7080,并在上面安装了 Oracle Linux 7。该机器具有外部无线天线和以太网端口。无线天线工作,但以太网端口不工作。
当我运行时,lshw -class network我得到以下输出,显示以太网控制器未被声明:
*-network:0
description: Wireless interface
product: Wi-Fi 6 AX201
vendor: Intel Corporation
physical id: 14.3
bus info: pci@0000:00:14.3
logical name: wlo1
version: 00
serial: e0:d4:64:cf:03:64
width: 64 bits
clock: 33MHz
capabilities: pm msi pciexpress msix bus_master cap_list ethernet physical wireless
configuration: broadcast=yes driver=iwlwifi driverversion=5.4.17-2036.103.3.el7uek.x86_64 firmware=50.3e391d3e.0 ip=192.168.178.48 latency=0 link=yes multicast=yes wireless=IEEE 802.11
resources: irq:19 memory:91234000-91237fff
*-network:1 UNCLAIMED
description: Ethernet controller
product: Ethernet Connection (11) I219-LM
vendor: Intel Corporation
physical id: …Run Code Online (Sandbox Code Playgroud)