标签: linux-networking

如何在 Linux 上查看用于路由到特定目标主机的网络接口和源 IP 地址?

如果我在 Linux 机器(这里:Debian Lenny)上有多个网络接口(这里:2)。我如何查看到特定目标主机的路由通过哪个网络接口 (NIC) 进行以及默认使用哪个源 IP 地址?

我虽然使用

ping -I nic1 desthost.example.com
ping -I nic2 desthost.example.com
Run Code Online (Sandbox Code Playgroud)

也看看这两种方式是否可行。(这里:两种方式都可以)

我查了路由表

ip route show
Run Code Online (Sandbox Code Playgroud)

但它相当复杂,所以我想,必须有一个简单的小工具,告诉我:

“到目标主机 desthost.example.com 它需要接口 nicX 和源 IP 地址 10.0.0.1”

获取这些信息的最简单方法是什么?

(而且我宁愿不使用 tcpdump 并将接口设置为混杂模式。)

谢谢。

networking linux linux-networking

18
推荐指数
1
解决办法
2万
查看次数

如何从 Linux 完全、动态地禁用 IPv4 堆栈?

如何从 Linux禁用IPv4堆栈?我想动态地做到这一点,即有时我想要启用它,有时我只想要IPv6堆栈。有没有便携的方法来做到这一点?如果你知道如何在任何发行版中做到这一点,它也会对我有很大帮助。

networking linux ipv6 linux-networking ipv4

18
推荐指数
2
解决办法
7140
查看次数

重新启动后“陈旧的 NFS 文件句柄”

在服务器节点上,可以访问导出的文件夹。但是,在重新启动(服务器和客户端)后,客户端将无法再访问该文件夹。

在服务器上

# ls /data
Folder1
Forlder2
Run Code Online (Sandbox Code Playgroud)

并且 /etc/exports 文件包含

/data 192.168.1.0/24(rw,no_subtree_check,async,no_root_squash)
Run Code Online (Sandbox Code Playgroud)

在客户端

# ls /data
ls: cannot access /data: Stale NFS file handle
Run Code Online (Sandbox Code Playgroud)

我不得不说客户端的共享文件夹没有问题,但是在重新启动(服务器和客户端)后,我看到了这条消息。

有什么办法可以解决吗?

nfs mount linux-networking

18
推荐指数
2
解决办法
9万
查看次数

L2TP VPN 是否可以在连接期间为客户端进行自动路由配置?

我们已经使用本教程设置了一个 L2TP VPN 服务器,一切都像魅力一样。

唯一的问题是

  1. 我们不希望客户端使用此 VPN 路由所有流量,仅路由特定子网,例如 10.0.0.0/20

  2. 在 Mac 上,我们需要使用命令手动设置路由,但对于移动设备,似乎没有办法这样做?

那么,是否可以为子网“10.0.0.0/20”自动配置客户端?

linux vpn ipsec l2tp linux-networking

17
推荐指数
1
解决办法
3万
查看次数

/etc/hosts 是否应该包含像“127.0.0.1 localhost myhost.example.org myhost”这样的条目?

在查看各种 Linux 和 FreeBSD 系统时,我注意到在某些系统上/etc/hosts包含主机公共主机名的条目,但在其他系统上没有。

这里的最佳做法是什么?我的 /etc/hosts 文件是否应该包含主机 FQDN(例如 myhost.example.org)和短主机名(例如 myhost)的条目?FQDN 的记录应该指向本地主机还是应该指向盒子的外部 IP?

例如,许多 RHEL/EL 机器上的默认配置不会将公共主机名放入/etc/hosts

myhost # cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
myhost #
Run Code Online (Sandbox Code Playgroud)

另一个变体是主机的短主机名和 FQDN 也指向 127.0.0.1。有人告诉我,这是一种较旧的做法,现在不受欢迎,但很多管理员仍然这样做。

myhost # cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4 myhost myhost.example.org
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
myhost #    
Run Code Online (Sandbox Code Playgroud)

第三种变体是主机的 FQDN 和短主机名被赋予主机的外部 IP 地址。这第三个变体对我来说似乎是最佳的,因为它减少了对 DNS 服务器的查找。

myhost # cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
74.125.239.xxx …
Run Code Online (Sandbox Code Playgroud)

linux linux-networking

17
推荐指数
1
解决办法
2万
查看次数

如何从自定义 linux 网络命名空间切换回默认命名空间?

使用ip netns exec您可以在自定义网络命名空间中执行命令 - 但是否还有一种方法可以在默认命名空间中执行命令?

例如,执行这两个命令后:

sudo ip netns add test_ns
sudo ip netns exec test_ns bash
Run Code Online (Sandbox Code Playgroud)

新创建的 bash 如何在默认网络命名空间中执行程序?据我所知,没有ip netns exec default或任何类似的东西。

我的场景是:

我想在单独的网络命名空间中运行 SSH 服务器(以使系统的其余部分不知道网络连接,因为系统用于网络测试),但希望能够通过以下方式在默认网络命名空间中执行程序SSH 连接。

到目前为止我发现了什么:

linux-networking network-namespace

17
推荐指数
2
解决办法
2万
查看次数

GRO(通用接收卸载)如何在更高级的 NIC 上工作?

我对特定的答案感兴趣:

  1. 具有 GRO 的 NIC 是否编辑/创建 TCP ACK 或任何其他数据包(或者此功能对接收器/发送器 TCP 堆栈透明)?
  2. 当 NIC 应该将“粘合段”传递给 TCP 堆栈时,应该有超时/事件吗?这些是什么?
  3. 在数据包转发设置中 - GRO 功能是否也尝试读取接收器 ACK(请参阅下文,为什么我会问这个)?
  4. 任何能比维基百科和 linux 手册页更好地解释 GRO 和其他 NIC 卸载功能(TSO、LSO ...)的来源都将不胜感激。

更多细节:

我正在对一个 IPSec 实现的性能问题进行故障排除。问题是可用带宽并没有在所有 4 个 VPN 隧道中均匀分布(大约分布为 200MBps/200MBps/1MBps/1MBps;每个 VPN 隧道封装单个 TCP 连接)。在 PCAP 中,我偶尔会看到网络服务器空闲大约 2 秒(等待 ACK)。当网络服务器重新传输未确认的段时,下载恢复。

我对 PCAP 的看法是 NIC GRO 功能将数据包粘合在一起,但有时不会将它们及时传递到 TCP 堆栈,这导致了问题。

由于此 VPN 服务器没有终止 TCP 连接而仅转发数据包的接口。然后我尝试禁用 GRO,之后我观察到流量在所有隧道中均匀分布。此外,当在 Web 服务器上禁用 TCP 窗口缩放时,即使启用了 GRO,带宽也会被分配(这就是我遇到问题 #3 的原因)。

我在 Ubuntu 10.04 服务器(64 位)上使用 2.6.32-27 linux。网卡是英特尔 82571EB。所有接口(HTTP 客户端、VPN 客户端、VPN 服务器、Web 服务器)都通过 …

nic linux-networking

16
推荐指数
1
解决办法
5万
查看次数

通过 Wifi 同时为 10,000 个用户提供服务

我希望在公共活动中提供 wifi 服务。流量将非常小,10KBps 应该足够了。用户不一定需要连接到私有 Intranet 以外的任何东西。

假设所有 10k 用户将同时使用网络,我该从哪里开始寻找解决方案?

networking wifi linux-networking

16
推荐指数
2
解决办法
3091
查看次数

如何测量进程从执行开始到结束的累积网络使用情况

我想测量使用了多少带宽git pull,最好是在 git 命令前面加上所需的程序,即nettally git pull

或者,是否有一些偷偷摸摸的方法来累积 nethogs/wireshark 数据并在执行后将数字相加?

谢谢

networking linux bash wireshark linux-networking

16
推荐指数
2
解决办法
2789
查看次数

如何解决 2 台 Linux 主机之间的延迟问题

2 台 linux 主机之间的延迟约为 0.23 毫秒。它们由一个交换机连接。Ping 和 Wireshark 确认延迟数。但是,我对导致这种延迟的原因一无所知。我如何知道延迟是由于主机 A 或 B 上的 NIC 还是交换机或电缆造成的?

更新:0.23 毫秒的延迟对我现有的应用程序不利,它以非常高的频率发送消息,我想看看它是否可以降低到 0.1 毫秒

networking performance latency linux-networking

15
推荐指数
1
解决办法
6万
查看次数