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
    • 最新
    • 标签
主页 / user-1108627

Oom_Ben's questions

Martin Hope
Oom_Ben
Asked: 2024-07-16 20:31:09 +0800 CST

Linux:当其他接口处于活动状态时无法 ping 接口

  • 6
悬赏将于明天到期。回答此问题可获得+50声誉悬赏。Oom_Ben 希望引起更多人对此问题的 关注:
任何提供永久性修复(即可在重启后继续存在)的解决方案都将受到高度赞赏,无论来源或方法如何。

我有一台 RHEL 服务器,计划用于设施监控。它在不同的子网上有 2 个网络接口。为了简洁起见,这些将是“ifconfig”的结果,我将它们称为:

  • eno2:11.11.11.11/24(DHCP,互联网子网)
  • eno3 :22.22.22.22/24(静态,基础设施子网)

现在我的问题如下:在服务器本身上,我可以 ping 通互联网(8.8.8.8),也可以 ping 通基础设施子网(22.22.22.201)上的设备,并且两者都使用了正确的接口(8.8.8.8 的 eno2 和 22.22.22.201 的 eno3)。例如

$ip route get 8.8.8.8
> 8.8.8.8 via 11.11.11.0 dev eno2 src 11.11.11.11 uid 0

$ip route get 22.22.22.201
> 22.22.22.201 dev eno3 src 22.22.22.22 uid 0

从我的办公室计算机(即远程)我也可以访问这两个子网上的设备,但我无法通过它自己的 IP 地址(既不是 11.11.11.11 也不是 22.22.22.22)访问服务器,除非我关闭其中一个接口。

因此从我的远程(办公室电脑)来看,我对服务器的 ping 如下所示:

# Both eno2 and eno3 active on server
ping 11.11.11.11 -t              ping 22.22.22.22 -t
Request timed out                Request timed out
Request timed out                Request timed out
Request timed out                Request timed out
...
# Turn off eno3
Reply from 11.11.11.11: bytes=32 Request timed out
Reply from 11.11.11.11: bytes=32 Request timed out  
Reply from 11.11.11.11: bytes=32 Request timed out  
Reply from 11.11.11.11: bytes=32 Request timed out  
Reply from 11.11.11.11: bytes=32 Request timed out
...
# Turn on eno3 (both on again)
Request timed out                Request timed out
Request timed out                Request timed out
Request timed out                Request timed out
Request timed out                Request timed out    
...
# Turn off eno2 
Request timed out                Reply from 22.22.22.22: bytes=32
Request timed out                Reply from 22.22.22.22: bytes=32
Request timed out                Reply from 22.22.22.22: bytes=32
Request timed out                Reply from 22.22.22.22: bytes=32
Request timed out                Reply from 22.22.22.22: bytes=32

这不是防火墙问题,因为禁用防火墙后也会发生同样的情况:

$firewall-cmd --state
>not running

RHEL 论坛上也报告了同样的症状。当 RHEL 配置了多个 IP 时,只有一个 IP 可以从远程网络访问,因此我通过将 rp_filter 设置为 2 并将各个接口设置为 0(无安全性)来实现解决方案。每个接口的 rp_filter 结果如下:

#sysctl -a 2>/dev/null | grep "\.rp_filter"
>
net.ipv4.conf.all.rp_filter = 2
net.ipv4.conf.default.rp_filter = 0
net.ipv4.conf.eno2.rp_filter = 0
net.ipv4.conf.eno3.rp_filter = 0

我的接口规则和表格的输出如下:

# ip -4 -br a ls
>
lo               UNKNOWN        127.0.0.1/8 
eno3             UP             22.22.22.22/24 
eno2             UP             11.11.11.11/24 

知识产权规则

# ip ru ls
0:      from all lookup local
32766:  from all lookup main
32767:  from all lookup default

IP 表

# ip -4 r ls table all
default via 11.11.11.1 dev eno2 proto dhcp src 11.11.11.11 metric 100 
default via 22.22.22.1 dev eno3 proto static metric 101 
22.22.22.0/24 dev eno3 proto kernel scope link src 22.22.22.22 metric 101 
11.11.11.0/24 dev eno2 proto kernel scope link src 11.11.11.11 metric 100 
169.254.0.0/16 dev eno3 scope link metric 1000 
local 22.22.22.22 dev eno3 table local proto kernel scope host src 22.22.22.22 
broadcast 22.22.22.255 dev eno3 table local proto kernel scope link src 22.22.22.22 
local 11.11.11.11 dev eno2 table local proto kernel scope host src 11.11.11.11 
broadcast 11.11.11.255 dev eno2 table local proto kernel scope link src 11.11.11.11 
local 127.0.0.0/8 dev lo table local proto kernel scope host src 127.0.0.1 
local 127.0.0.1 dev lo table local proto kernel scope host src 127.0.0.1 
broadcast 127.255.255.255 dev lo table local proto kernel scope link src 127.0.0.1

并使用 route -n 对上述输出进行总结:

root@APPSVR:~# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         11.11.11.1      0.0.0.0         UG    100    0        0 eno2
0.0.0.0         22.22.22.1      0.0.0.0         UG    101    0        0 eno3
22.22.22.0      0.0.0.0         255.255.255.0   U     101    0        0 eno3
11.11.11.0      0.0.0.0         255.255.255.0   U     100    0        0 eno2
169.254.0.0     0.0.0.0         255.255.0.0     U     1000   0        0 eno3

然而,同样的问题仍然存在,如果两个界面都处于活动状态,我就无法访问任何一个界面。

我还通过将这些更改写入相关配置文件(不记得具体在哪里)使这些更改持久化,是的,我已经重新启动了服务器。

任何帮助或其他建议都将不胜感激。我已经花了大约 3 天时间解决这个问题。提前致谢!

routing
  • 2 个回答
  • 43 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