AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题

问题[linux-networking](server)

Martin Hope
Nick Lawes
Asked: 2025-01-17 19:44:51 +0800 CST

如何使用 nmcli 配置两个动态 IP WAN 连接的路由表

  • 5

我有两个 WAN 连接接入我的自制 Linux 路由器。两者都显示为以太网连接。一个使用 dhcp,另一个使用 PPPoE。我使用 nmcli 进行了配置。

下一步是针对选定的系统使用策略路由。作为测试,我为每个 WAN 连接添加了一个路由表,在路由器 LAN 端创建了两个新 IP,并为每个 IP 添加了一个 IP 规则以使用其中一个路由表。使用 iproute2 命令手动配置时,这一切也都运行正常。

当我尝试使用 nmcli 配置此场景时,问题出现了。我接近这样做:

nmcli con mod pppoe ipv4.routes "0.0.0.0/0 onlink=1 table=200"
nmcli con mod pppoe ipv4.routing-rules "priority 999 from 10.87.3.204 lookup 200"
nmcli con up pppoe

nmcli con mod eth2 ipv4.routes "0.0.0.0/0 onlink=1 table=201"
nmcli con mod eth2 ipv4.routing-rules "priority 999 from 10.87.3.59 lookup 201"
nmcli con up eth2

我很高兴地发现 PPPoE 连接确实有效,因为将 nexthop 选项排除在规则之外默认为使用该设备进行路由,这正是我手动完成的。

但是对 dhcp 连接执行相同操作不起作用,因为使用“dev eth2”进行路由是错误的...它需要下一跳/网关地址,这是动态的,我已经手动完成了。

显然,编写脚本来更新路由表很简单,但最好让网络管理员在建立连接时执行此操作。它显然会有此信息,例如 ppp 接口是用于 PPPoE 连接的。

是否有某种机制可以将 ip4.gateway 嵌入到路由字符串中?或者是否有其他方法可以实现相同目标?

我不是 nmcli 方面的专家,因为过去几年我一直回避它。现在我很享受掌握它的挑战,所以希望我错过了一些非常基本的东西,而这些是我在迄今为止的旅程中没有学到的。

任何帮助都将不胜感激

linux-networking
  • 1 个回答
  • 49 Views
Martin Hope
tishma
Asked: 2024-11-29 20:37:10 +0800 CST

Ubuntu 22.04.5 上的 Realtek 网卡驱动程序 r8169 与 r8125

  • 6

我想知道是否有人有数据可以支持我。我正在设置一批配备 RTL 8125 2.5 Gb/s 卡的迷你电脑,开箱后,它似乎使用 Ubuntu 原装 r8169 驱动程序运行良好。

但是,我只能使用 1000Mb/s 交换机进行测试,研究表明,当协商速度实际上为 2.5 时存在稳定性问题。

是否有人有通过 r8169(随 Ubuntu 22 提供)在 2.5Gb/s 交换机上使用 RTL 8125 的经验,以及可能发生的问题的实际示例?

linux-networking
  • 1 个回答
  • 140 Views
Martin Hope
nh2
Asked: 2024-11-28 06:41:02 +0800 CST

Windows 上单个 TCP 连接的上传速度很慢,可能是由于 Intel 82599ES (ixgbe) 10 Gbit/s NIC 卡的数据包重新排序造成的

  • 5

在服务器之间,windows-in-Finland <-> linux-in-Germany我发现上传速度比下载速度慢 100 倍(windows -> linux比 慢 100 倍windows <- linux)。

详细信息和现有研究

我最初在世界各地的 Windows 客户端上观察到了这个问题,并注意到我也可以在受控数据中心环境中重现它。

为了重现该问题,我使用了数据中心提供商 Hetzner,机器Windows位于芬兰(专用服务器,Windows Server 2019),上传到以下两个位置:

  • Linux Hetzner 专用德国:速度慢
  • Linux Hetzner Cloud VM 德国:快速

两者都位于同一个数据中心园区,因此都37 ms ping从 Windows 机器获取了数据。虽然芬兰和德国之间的连接通常位于 Hetzner 的专用网络上,但由于C-LION1 2024 波罗的海海底电缆中断(Hetzner 对此的状态消息),它目前正通过公共互联网路由重新路由,因此该连接使用正常的公共互联网路由和对等连接进行“模拟”。

我正在用 来测量iperf3:windows <- linux

C:\Users\Administrator\Downloads\iperf3.17.1_64\iperf3.17.1_64>iperf3.exe -c linux-germany-dedicated.examle.com

Connecting to host linux-germany-dedicated.examle.com, port 5201
[  5] local 192.0.2.1 port 62234 connected to 192.0.2.2 port 5201
[ ID] Interval           Transfer     Bitrate
[  5]   0.00-1.00   sec  15.8 MBytes   132 Mbits/sec
[  5]   1.00-2.00   sec  1.88 MBytes  15.7 Mbits/sec
[  5]   2.00-3.00   sec  1.38 MBytes  11.5 Mbits/sec
[  5]   3.00-4.00   sec  1.75 MBytes  14.7 Mbits/sec
[  5]   4.00-5.00   sec  2.25 MBytes  18.9 Mbits/sec
[  5]   5.00-6.00   sec  2.88 MBytes  24.1 Mbits/sec
[  5]   6.00-7.00   sec  3.25 MBytes  27.3 Mbits/sec
[  5]   7.00-8.00   sec  3.38 MBytes  28.3 Mbits/sec
[  5]   8.00-9.00   sec  2.75 MBytes  23.1 Mbits/sec
[  5]   9.00-10.00  sec  1.25 MBytes  10.5 Mbits/sec

更多iperf3观察:

  • 另一个方向(添加-R到iperf3)要快得多,约为 900 Mbit/s。(请注意,Linux 端正在使用 BBR 拥塞控制,这可能有助于该方向。)
  • iperf3当使用30个连接(带有)下载时-P 30,1 Gbit/s 连接已达到最大限额,这表明问题出在单个TCP 上传连接的上传吞吐量上。
  • 在芬兰,将 Windows 计算机替换为 Linux 计算机时,两个方向的连接速度都达到了 1 Gbit/s 的最大值。这让我得出结论,Windows 的介入是错误的。
  • 请注意,有一篇Microsoft 文章声称这iperf3是 Windows 上高性能测量的最佳方法。这与这个问题无关,因为它仅适用于 >= ~10 Gbit/s 的连接,而 iperf3 在同一数据中心的多台 Windows/Linux 机器上运行这一事实证明,iperf3在两个方向上都可以轻松实现 1 Gbit/s 的速度。

2021 年,Dropbox 发布了一篇文章《提升 Dropbox 上传速度并改进 Windows 的 TCP 堆栈》,指出 Windows 对 TCP 重传的处理不正确(不完整);微软同时发布了《算法改进提升了互联网上的 TCP 性能》。

这似乎很大程度上解释了它,并且Wireguard 速度慢但仅适用于 Windows 上传显示了一个潜在的解决方案,即将 RSS(接收方缩放)队列的数量更改为 1:

ethtool -L eth0 combined 1

这从 (我的专用 Linux 服务器上的 16 个线程) 更改16为 1,并将聚合的 iperf3 上传速度从10.5增加到330Mbit/s。

这很好,但应该是 1000 Mbit/s。

特别奇怪的是:windows -> linux-Hetzner-Cloud通过测试windows -> Hetzner-dedicated,我观察到了完美的上传速度:

C:\Users\Administrator\Downloads\iperf3.17.1_64\iperf3.17.1_64>iperf3.exe -c linux-germany-hcloud.example.com

Connecting to host linux-germany-hcloud.example.com, port 5201
[  5] local 192.0.2.1 port 55615 connected to 192.0.2.3 port 5201
[ ID] Interval           Transfer     Bitrate
[  5]   0.00-1.00   sec   108 MBytes   903 Mbits/sec
[  5]   1.00-2.00   sec   112 MBytes   942 Mbits/sec
...
[  5]   9.00-10.00  sec   112 MBytes   942 Mbits/sec

这很奇怪,因为云机器的规格要低得多。它有 8 个虚拟核心,但它的ethtool -l输出已经默认为,Combined: 1因为作为虚拟机,它根本不支持 RSS:

root@linux-germany-hcloud ~ # ethtool -x enp1s0

RX flow hash indirection table for enp1s0 with 1 RX ring(s):
Operation not supported
RSS hash key:
Operation not supported
RSS hash function:
    toeplitz: on
    xor: off
    crc32: off

因此,性能较弱的机器似乎没有出现问题。也许专用机器中存在一些巧妙的 NIC 硬件问题,从而导致出现问题?可能是什么原因?

我已经尝试禁用 TCP 分段卸载 ( ethtool -K eth0 tso off),但这不会影响结果。Dropbox 文章 ( flow-director-atr) 中导致问题的功能在我的 NIC 上不可用,所以不可能是它。

问题

如何解释两台 Linux 服务器之间上传速度进一步增加 3 倍的瓶颈?

我怎样才能从 Windows 实现快速上传?

更多环境信息

  • 两台 Linux 机器使用相同的 Linux 版本6.6.33 x86_64和相同的sysctls(通过 NixOS 确保),它们是:
    net.core.default_qdisc=fq
    net.core.rmem_max=1073741824
    net.core.wmem_max=1073741824
    net.ipv4.conf.all.forwarding=0
    net.ipv4.conf.net0.proxy_arp=0
    net.ipv4.ping_group_range=0 2147483647
    net.ipv4.tcp_congestion_control=bbr
    net.ipv4.tcp_rmem=4096 87380 1073741824
    net.ipv4.tcp_wmem=4096 87380 1073741824
    
  • Windows 服务器 2019Version 1809 (OS Build 17763.6293)

编辑1

我发现从 Windows 到其他 Hetzner 专用机器的上传速度为 950 Mbit/s。上传速度慢的专用机器都有一个共同点,那就是它们都配有 Intel 10 Gbit/s 网卡;来自lspci:

01:00.0 Ethernet controller: Intel Corporation 82599ES 10-Gigabit SFI/SFP+ Network Connection (rev 01)

lsmod | grep ixgbeixgbe建议在此处使用 该驱动程序。 上面的Dropbox 文章ixgbe中也提到了这一点。他们链接的论文“为什么 Flow Director 会导致数据包重新排序?”特别提到了这一点。 我还发现了这个 e1000-devel 线程,其中有人在 2011 年提到了这个问题,但没有提出解决方案。Intel 82599

当使用同一型号服务器中的 1-GbitIntel Corporation I210 Gigabit Network Connection (rev 03)卡时,问题消失,我得到了 950 Mbit/s。

因此,似乎有一些特定的因素82599ES导致ixgbe了该问题。

编辑 2:英特尔Flow Director和尝试树外ixgbe

谷歌搜索intel disable flowdirector显示https://access.redhat.com/solutions/528603提到了英特尔 82599。

帮助:

Intel Flow Director 是英特尔 NIC 和驱动程序的一项功能,可将类似的网络流量(即“流”)智能且可编程地引导到特定的接收队列中。

默认情况下,Flow Director 以 ATR(应用程序目标接收)模式运行。当收到之前未见过的流量时,它会执行常规 RSS 样式的哈希处理。但是,当传输流量时,该流量的元组(或“流”)将输入到接收哈希表中。在同一元组上接收的未来流量将在传输它的核心上接收。然后可以将发送和接收过程固定到与接收队列相同的核心,以实现最佳的 CPU 缓存亲和性。

请注意,社区研究表明,当进程在 CPU 之间迁移时,ATR 可能会导致 TCP 无序流量。使用 ATR 模式时,最好将进程明确固定到 CPU。

Dropbox 文章中提到了 FlowDirector,也是如此ATR。

所提到的“社区研究”与 Dropbox 所引用的论文“Flow Director 为什么会导致数据包重新排序?”是同一篇。

按照建议做

ethtool -K net0 ntuple on

将速度从 20 Mbit/s 提高到 130 Mbit/s(使用默认的ethtool -L net0 combined 16)。运行时间更长(iperf3 --time 30)会使它在 16 秒后降至 80 Mbit/s。ntuple on与一起使用combined 16不会进一步提高速度。

所以这不是一个完整的解决方案。

接下来测试该options ixgbe FdirMode=0方法。

在ram256g-1:

rmmod ixgbe; modprobe ixgbe FdirMode=0; sleep 2; ifconfig net0 94.130.221.7/26 ; ip route add 192.0.2.2 dev net0 proto static scope link ; ip route add default via 192.0.2.2 dev net0 proto static ; echo done

dmesg节目

ixgbe: unknown parameter 'FdirMode' ignored

尽管https://www.kernel.org/doc/Documentation/networking/ixgbe.txt记录了这一点:

FdirMode
--------
Valid Range: 0-2 (0=off, 1=ATR, 2=Perfect filter mode)
Default Value: 1

  Flow Director filtering modes.

因此0=off看起来比其他两个更受欢迎,据称这就是ntuple on/off两者之间的切换。

https://access.redhat.com/solutions/330503说

英特尔选择在其 SourceForge 驱动程序中将某些配置作为模块参数公开,但是上游 Linux 内核的策略是,当可以以现有方式进行配置时,不会将功能作为模块选项公开,因此您只会在上游 Linux 内核树之外的英特尔驱动程序上看到一些模块参数。

Red Hat 遵循上游内核方法,因此这些选项不会出现在 RHEL 版本的驱动程序中,但通常可以通过ethtool(或无需重新加载模块)完成相同的操作。

这表明这0=off实际上是无法实现的。

或者也许它可以与modprobe.d选项一起使用但不能与modprobe命令一起使用?

相关代码:

  • 带有以下选项的旧内核FdirMode:
    • https://github.com/spotify/linux/blob/6eb782fc88d11b9f40f3d1d714531f22c57b39f9/drivers/net/ixgbe/ixgbe_param.c#L285C24-L285C37
    • https://github.com/spotify/linux/blob/6eb782fc88d11b9f40f3d1d714531f22c57b39f9/drivers/net/ixgbe/ixgbe_param.c#L1034-L1040
  • 新内核不包含:
    • https://github.com/torvalds/linux/blob/b86545e02e8c22fb89218f29d381fa8e8b91d815/drivers/net/ethernet/intel/ixgbe/ixgbe_lib.c#L648
      • 建议仅当 RSS 队列长度为> 1
      • 因此,将队列长度设置为 1 ethtool -L(即--set-channels)可能已经可以实现它。

但似乎https://github.com/intel/ethernet-linux-ixgbe仍在积极开发中,并支持所有旧选项。还支持FdirPballoc从未存在过的内容torvalds/linux。描述如下:https: //forum.proxmox.com/threads/pve-kernel-4-10-17-1-wrong-ixgbe-driver.35868/#post-175787 也相关: https: //www.phoronix.com/news/Intel-IGB-IXGBE-Firmware-Update 也许我应该尝试构建并加载它?

从该驱动程序中,FDirMode还删除了:

  • https://github.com/intel/ethernet-linux-ixgbe/commit/a9a37a529704c584838169b4cc1f877a38442d36
  • https://github.com/intel/ethernet-linux-ixgbe/commit/a72af2b2247c8f6bb599d30e1763ff88a1a0a57a

来自https://lists.osuosl.org/pipermail/intel-wired-lan/Week-of-Mon-20160919/006629.html:

ethtool -K ethX ntuple on

这将启用“完美过滤”模式,但目前还没有过滤器,因此接收到的数据包将回退到 RSS。

尝试过

ethtool -K net0 ntuple on
ethtool --config-ntuple net0 flow-type tcp4 src-ip 192.0.2.1 action 1

沒有提高速度。


我还发现 Linux 上的速度6.3.1似乎是 90 Mbit/s,而在 上是 25 Mbit/s 6.11.3。

在ethernet-linux-ixgbeHetzner 救援系统上编译树外版本(目前还没有针对 Linux 的版本):Linux (old)6.3.16.11

wget https://github.com/intel/ethernet-linux-ixgbe/releases/download/v5.21.5/ixgbe-5.21.5.tar.gz
tar xaf *.tar.gz
cd ixgbe-*/src && make -j

# because disconnecting the ethernet below will hang all commands
# from the Rescue Mode's NFS mount if not already loaded into RAM
ethtool --help
timeout 1 iperf3 -s
dmesg | grep -i fdir

modinfo /root/ixgbe-*/src/ixgbe.ko  # shows all desired options

rmmod ixgbe; insmod /root/ixgbe-*/src/ixgbe.ko; sleep 2; ifconfig eth1 94.130.221.7/26 ; ip route add 192.0.2.2 dev eth1 scope link ; ip route add default via 192.0.2.2 dev eth1 ; echo done

iperf3 -s

该驱动程序开箱即用,提供更稳定的 450 Mbit/s。

rmmod ixgbe; insmod /root/ixgbe-*/src/ixgbe.ko FdirPballoc=3; sleep 2; ifconfig eth1 94.130.221.7/26 ; ip route add 192.0.2.2 dev eth1 scope link ; ip route add default via 192.0.2.2 dev eth1 ; echo done

dmesg | grep -i fdir

iperf3 -s

沒有帶來任何改善。

也可以尝试:

AtrSampleRate

值为 0 表示应禁用 ATR 并且不会进行任何采样。

rmmod ixgbe; insmod /root/ixgbe-*/src/ixgbe.ko AtrSampleRate=0; sleep 2; ifconfig eth1 94.130.221.7/26 ; ip route add 192.0.2.2 dev eth1 scope link ; ip route add default via 192.0.2.2 dev eth1 ; echo done

dmesg | grep -i atrsample

iperf3 -s

沒有帶來任何改善。

ethtool -L net0 combined 1也没有带来任何改善,并且

ethtool -K eth1 ntuple on
ethtool -L eth1 combined 12  # needed, otherwise the out-of-tree ixgbe driver complains with `rmgr: Cannot insert RX class rule: Invalid argument` when `combined 1` is set
ethtool --config-ntuple eth1 flow-type tcp4 src-ip 192.0.2.1 action 1

也没有带来任何改善。

编辑 3:更改 NIC

我把Linux服务器的网卡从Intel 82599ES换成了Intel X710,使用Linuxi40e驱动。

问题依然存在。

我怀疑这是因为 X710 也支持 Intel Flow Director。

部分缓解ethtool -L eth0 combined 1与 82599ES 具有同样的效果。

命令

ethtool --set-priv-flags eth0 flow-director-atr off

(这对于来说是可能的i40e但不是ixgbe)Dropbox提到,因为解决方法只实现了相同的加速ethtool -L eth0 combined 1(大约400 Mbit / s)。

有趣的是,Hetzner 报告称,Hetzner Cloud 机器也采用 Intel X710,但它们没有出现该问题。

linux-networking
  • 1 个回答
  • 86 Views
Martin Hope
wazoox
Asked: 2024-09-09 23:00:26 +0800 CST

Linux:绑定和 MAC 地址问题

  • 7

我最近遇到了网络问题(运行 Debian,但不特定于任何发行版,请参见下文使用直接 /sys 操作),我发现问题的根源是两台具有绑定网络接口的服务器在其绑定上具有相同的硬件地址。此 MAC 地址不是硬件接口的地址之一,尽管它应该是(根据大多数文档,例如本文档):

在添加第一个从属设备之前,绑定接口的硬件地址为 00:00:00:00:00:00。如果在第一次从属设备之前创建了 VLAN 接口,它将获取全零硬件地址。一旦第一个从属设备连接到绑定,绑定设备本身将获取从属设备的硬件地址,然后该地址可供 VLAN 设备使用。

此外,与本文档中所述相反,“空”债券(没有任何从属)没有 00:00:00:00:00 硬件地址:

# modprobe bonding
# echo +bond0 > /sys/class/net/bonding_masters 
# ip link show bond0
3: bond0: <BROADCAST,MULTICAST,MASTER> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000
    link/ether d6:f5:8e:9f:c2:42 brd ff:ff:ff:ff:ff:ff

但是,只有当从设备立即添加到绑定中并且不检查绑定地址时,该硬件地址才会更改为从设备的硬件地址。我使用一个非常简单的脚本(见下文)测试如何操作绑定。

  • 首先,它创建一个没有从属设备的空键,并显示其硬件地址(显然是伪随机的,但趋于保持不变 - 也许 udev 在这里发挥了作用?)。
  • 其次,它创建结合、设置其模式并添加从属设备:结合设备按预期采用从属设备的硬件地址。
  • 第三,它创建绑定,读取它的硬件地址,然后设置模式并添加从属:绑定的硬件地址与其从属的硬件地址不匹配(但一次又一次地运行脚本,有时会匹配!去想想)。
  • 第四,它创建绑定,等待一秒钟,然后像步骤 2 那样进行配置。其行为与步骤 3 大致相同:绑定具有与步骤 1 相同的伪随机硬件地址,该地址始终与从属设备的硬件地址不同且始终相同。

我不知道 bond 伪随机硬件地址究竟是如何设置的,但它恰好在多个硬件和软件配置(不同的硬件、不同的内核版本、不同的 Debian 版本)中相对重复。

有时,在步骤 3 中,绑定的 MAC 地址会更改为不同的伪随机值,有时它会与从属的地址匹配。但大多数情况下,它会与步骤 1 中保持相同。在步骤 4 中,绑定的 MAC 地址始终与步骤 1 相同。

显然,绑定的 MAC 地址设置对时间非常敏感?

脚本如下:

echo "unload / load bonding"
rmmod bonding
sleep 1
modprobe bonding
sleep 1
echo "create bond0"
echo +bond0 > /sys/class/net/bonding_masters
echo "bond0 hw address, no slaves:"
cat /sys/class/net/bond0/address
sleep 3
echo "################"
echo "unload / load bonding"
rmmod bonding
sleep 1
modprobe bonding
sleep 1
echo "create bond0 and configure it without delay"
echo +bond0 > /sys/class/net/bonding_masters
# cat /sys/class/net/bond0/address
echo 6 > /sys/class/net/bond0/bonding/mode
echo +enp1s0  > /sys/class/net/bond0/bonding/slaves
echo "Bond0 hw address:"
cat /sys/class/net/bond0/address
echo "enp1s0 hw address:"
ethtool -P enp1s0

echo "################"
sleep 3
echo "unload / load bonding"
rmmod bonding
sleep 1
modprobe bonding
sleep 1
echo "create bond0 and configure it, read its hw address first"
echo +bond0 > /sys/class/net/bonding_masters
cat /sys/class/net/bond0/address
echo 6 > /sys/class/net/bond0/bonding/mode
echo +enp1s0  > /sys/class/net/bond0/bonding/slaves
echo "Bond0 hw address:"
cat /sys/class/net/bond0/address
echo "enp1s0 hw address:"
ethtool -P enp1s0

echo "################"
sleep 3
echo "unload / load bonding"
rmmod bonding
sleep 1
modprobe bonding
sleep 1
echo "create bond0 and configure it after 1 second delay"
echo +bond0 > /sys/class/net/bonding_masters
# cat /sys/class/net/bond0/address
echo 6 > /sys/class/net/bond0/bonding/mode
sleep 1
echo +enp1s0  > /sys/class/net/bond0/bonding/slaves
echo "Bond0 hw address:"
cat /sys/class/net/bond0/address
echo "enp1s0 hw address:"
ethtool -P enp1s0

它的输出如下:

unload / load bonding
create bond0
bond0 hw address, no slaves:
ea:dc:34:e6:7c:8d
################
unload / load bonding
create bond0 and configure it without delay
Bond0 hw address:
52:54:00:c8:76:09
enp1s0 hw address:
Permanent address: 52:54:00:c8:76:09
################
unload / load bonding
create bond0 and configure it, read its hw address first
d6:f5:8e:9f:c2:42
Bond0 hw address:
d6:f5:8e:9f:c2:42
enp1s0 hw address:
Permanent address: 52:54:00:c8:76:09
################
unload / load bonding
create bond0 and configure it after 1 second delay
Bond0 hw address:
d6:f5:8e:9f:c2:42
enp1s0 hw address:
Permanent address: 52:54:00:c8:76:09

有时,绑定的硬件地址会更改为其他值。但是,大多数情况下它会恢复为同一个值(此处为“d6:f5:8e:9f:c2:42”),并且似乎在重新启动时循环使用有限数量的 MAC 地址。

然而,非常严重的问题是,不同的机器最终会拥有相同的伪随机硬件地址;当它们连接到同一个网络交换机时,就会出现混乱。实际上,检查连接到不同网络的几台不同机器,至少有 4 台共享相同的绑定 MAC 地址(但只要它们没有连接到同一个交换机,这基本上是无害的)。

请注意,在该特定示例中,我以模式 6 设置了绑定,但我在以模式 4 (802.3ad) 和其他模式运行的机器上遇到了问题。这似乎与绑定模式完全无关 - 将更多更改为 1 或 2 或 4 不会更改 MAC 地址。

当然,我可以使用 if-up.d 脚本或类似的东西将绑定的 MAC 地址强制为某个有意义的值,但我宁愿使用开箱即用的东西 :)

linux-networking
  • 1 个回答
  • 398 Views
Martin Hope
inference
Asked: 2024-05-18 03:33:52 +0800 CST

在 Linux 路由器上配置来自 ISP 的路由静态 IP 地址

  • 5

我在商业计划中从 ISP 收到了 4 个静态 IP 地址,这些地址将在 Linux 驱动的路由器上使用并通过命令进行配置ip。我以前的 ISP 给了我 4 /32 个 IP 地址,只需将其添加到 WAN 接口即可,并且可以相互独立工作;然而,我的新 ISP 给了我一个由 4 个 IP 地址组成的“路由”/30 块。

error: nexthop has invalid gateway当我收到或添加 IP 地址但无法解析任何外部 IP 地址或目标主机时,我一直无法弄清楚如何添加这些 IP 地址。

我的新ISP的网络配置如下:

  • 广域网:1.1.1.2/30
  • 网关:1.1.1.1/30
  • 路由:1.1.1.4/30

我的ISP声称可能不需要网关地址,并且使用WAN地址作为上游。我的路由器有 2 个网卡; 1 个用于 LAN,1 个用于 WAN。我也用它iptables来配置防火墙。

如何通过ip命令在 Linux 系统上正确配置此设置?

linux-networking
  • 2 个回答
  • 87 Views
Martin Hope
olh
Asked: 2024-04-18 17:39:54 +0800 CST

限制物理接口带宽,将10G链​​路变成1G链路

  • 5

我希望给定的网卡表现得像速度较慢的网卡一样。就像我笔记本电脑中的 1G 接口实际上是 100M 或 10M 接口一样。一种方法当然是挖出我以前的旧 10mbit 集线器,并将其用于此目的。

我确信有一个“软件解决方案”。tc事实上,命令和功能似乎tbf能够做到这一点。

不幸的是,我没有完全掌握实现上面所写内容的概念。似乎需要考虑一些数学知识来考虑假设的链接速度/sys/class/net/*/speed,可能是来自 的 MTU/sys/class/net/*/mtu以及系统的滴答率。我不确定现在“当前”发行版内核是否仍然需要后者(例如,我有CONFIG_NO_HZ=y)CONFIG_HZ_300=y。

一个 shell 脚本应该如何使此类功能更加通用?喜欢bash link-bandhwidth.sh <interface> 10m|100m|1G|2.5G|10G

编辑:

正如@vidarlo 所建议的,更改链接速度确实有效。我能够更改交换机上各个端口的公布速度列表。我使用 ethtool 得到的结果好坏参半,即使是在提供多种不同速度的 mlx5 卡上也是如此。

我还有一张 mlx4 卡,仅支持单一速度。在这里,我尝试了建议的但不完整的nc命令。因此,问题是如何以编程方式生成最优值。直到现在,这部分仍然没有答案。对我来说,这样的命令适用于固定速度 10G 链路:

tc qdisc add dev $interface root tbf rate 2000mbit latency 1ms burst 2000mbit

这就像假设的 2G 卡,但延迟和突发值很可能还有改进的空间。我也尝试过1000mbit并且100mbit得到了预期的结果。

linux-networking
  • 2 个回答
  • 75 Views
Martin Hope
ankshukla
Asked: 2024-02-07 17:35:47 +0800 CST

Linux 内核和 KVM

  • 5

我对构建服务器的概念很陌生,并且正在阅读有关虚拟机管理程序的内容。我了解到KVM是1型虚拟机管理程序,可以直接安装在服务器上,无需操作系统。但让我困惑的是,要安装 KVM 模块,你需要 Linux 内核。那么如何创建一个安装了虚拟机管理程序和 KVM 的可启动驱动器,而无需先安装 Linux 发行版。找不到任何文章来解释这个概念,或者我的理解不正确。

linux-networking
  • 1 个回答
  • 29 Views
Martin Hope
Peter Walker
Asked: 2024-01-26 08:33:14 +0800 CST

如何确保使用 apt 安装更新不会重新启动网络服务?

  • 7

我有一个 Ansible playbook,用于配置新的 Linux VM。我最近正在使用 Ubuntu 22.04 构建一个新的虚拟机。该剧本将编写一些与网络等相关的配置文件,然后该过程的最后一步是使用 Ansiblesansible.builtin.package安装所有软件包更新。

- name: "Install updates"
  become: true
  ansible.builtin.package:
    upgrade: "dist"
  register: res_pkg_updates
  notify: "reboot system"
  tags: [ never, updates ]

我的虚拟机是根据我几个月前制作的模板创建的,因此 Ubuntu 操作系统有一些过时的软件包,这并不意外。问题是其中一个软件包必须支持或提供网络功能。因此,当package模块在安装更新的路径上启动虚拟机时,网络守护进程将重新启动,并且虚拟机将获取之前在我的剧本中配置的新 IP。这会导致 Ansible 任务挂起,等待重新连接到位于不同 IP 的计算机。


我想知道如何配置我的ansible.builtin.package任务来安装软件包更新但不重新启动任何服务,尤其是网络服务。

linux-networking
  • 2 个回答
  • 439 Views
Martin Hope
Pietro395
Asked: 2024-01-25 01:38:20 +0800 CST

Gcloud 上的 Strongswan IPsec 站点到站点

  • 6

我正在尝试初始化 Google Cloud 上的 Ubuntu 虚拟机与远程站点之间的 IPsec 隧道。

连接已正确建立,但从 Google Cloud 上的 Ubuntu 计算机无法到达远程网络上的主机 (172.17.20.25)。

云云:

公共IP:50.50.50.50

私有IP:10.132.0.63/32

远程站点:

公共IP:100.100.100.100

远程专用网络:172.17.20.0/16

ipsec配置文件

config setup
        charondebug="all"
        uniqueids=yes
conn intacloud-to-tper
        type=tunnel
        auto=start
        keyexchange=ikev2
        authby=secret
        leftid=50.50.50.50
        leftsubnet=10.132.0.62/32
        right=100.100.100.100
        rightsubnet=172.17.20.0/16 
        ike=aes-sha1-modp2048
        esp=aes-sha1
        aggressive=no
        keyingtries=%forever
        ikelifetime=28800s
        lifetime=3600s
        dpddelay=30s
        dpdtimeout=120s
        dpdaction=restart

ip 路由显示表 220

172.17.0.0/16 via 10.132.0.1 dev ens4 proto static src 10.132.0.62

ipsec 状态全部

    Status of IKE charon daemon (strongSwan 5.9.5, Linux 6.2.0-1019-gcp, x86_64):
  uptime: 2 hours, since Jan 24 17:36:07 2024
  malloc: sbrk 3100672, mmap 0, used 1403424, free 1697248
  worker threads: 11 of 16 idle, 5/0/0/0 working, job queue: 0/0/0/0, scheduled: 3
  loaded plugins: charon aesni aes rc2 sha2 sha1 md5 mgf1 random nonce x509 revocation constraints pubkey pkcs1 pkcs7 pkcs8 pkcs12 pgp dnskey sshkey pem openssl fips-prf gmp agent xcbc hmac gcm drbg attr kernel-netlink resolve socket-default connmark stroke updown eap-mschapv2 xauth-generic counters
Listening IP addresses:
  10.132.0.62
Connections:
site-to-site:  %any...100.100.100.100  IKEv2, dpddelay=30s
site-to-site:   local:  [50.50.50.50] uses pre-shared key authentication
site-to-site:   remote: [100.100.100.100] uses pre-shared key authentication
site-to-site:   child:  10.132.0.62/32 === 172.17.0.0/16 TUNNEL, dpdaction=restart
Security Associations (1 up, 0 connecting):
site-to-site[1]: ESTABLISHED 2 hours ago, 10.132.0.62[50.50.50.50]...100.100.100.100[100.100.100.100]
site-to-site[1]: IKEv2 SPIs: -, pre-shared key reauthentication in 5 hours
site-to-site[1]: IKE proposal: AES_CBC_128/HMAC_SHA1_96/PRF_HMAC_SHA1/MODP_2048
site-to-site{4}:  INSTALLED, TUNNEL, reqid 1, ESP SPIs: cb5b6fdd_i 932ca574_o
site-to-site{4}:  AES_CBC_128/HMAC_SHA1_96, 0 bytes_i, 0 bytes_o, rekeying in 27 minutes
site-to-site{4}:   10.132.0.62/32 === 172.17.0.0/16

ip xfrm 策略

src 10.132.0.63/32 dst 172.17.0.0/16 
    dir out priority 375423 ptype main 
    tmpl src 10.132.0.63 dst 100.100.100.100
        proto esp spi 0xbb44a532 reqid 1 mode tunnel
src 172.17.0.0/16 dst 10.132.0.63/32 
    dir fwd priority 375423 ptype main 
    tmpl src 100.100.100.100 dst 10.132.0.63
        proto esp reqid 1 mode tunnel

我无法理解是否可能存在配置问题或者问题是否可能出在远程站点的配置中

linux-networking
  • 1 个回答
  • 61 Views
Martin Hope
Clonkex
Asked: 2024-01-16 18:03:26 +0800 CST

“ip 地址添加”中的 CIDR 掩码是什么意思?

  • 8

我正在尝试学习如何正确设置 Wireguard(而不仅仅是通过复制粘贴)。我在快速入门页面上看到了这一行:

ip address add dev wg0 192.168.2.1/24

阅读 的手册页ip,似乎将给address add定地址分配给给定设备。这是有道理的,只不过示例地址包含 CIDR 掩码。我正在努力理解这意味着什么,而我的谷歌搜索让我失望了。

我们是说我们希望地址是192.168.2.0,还是……我什至不知道。这还能意味着什么?

编辑:等等,我刚刚意识到这可能是指定子网的一种方法。也许这对 Linux 用户来说是显而易见的,但我是一个 Windows 用户,在 Windows GUI 中,您可以将子网掩码与 IP 分开指定。我会把这个问题留在这里,以防万一我错了。

linux-networking
  • 3 个回答
  • 644 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve