首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

虛擬機網絡互通疑難:同網段橋接模式下 openSUSE 與 RedHat 無法 Telnet 排查實錄

     編輯:程式設計綜合問答

場景重現

  • 宿主機:macOS
  • VM1:openSUSE (192.168.0.245)
  • VM2:RedHat (192.168.0.248)
  • 網絡模式:均為**橋接**
  • 現象:三台互 Ping 通;宿主機 ↔ 各 VM Telnet 通;**VM1 ↔ VM2 Telnet 不通**

核心判斷:非 IP/掩碼/網關問題

Ping 通說明 L2/L3 連通正常,TCP 三次握手在 ICMP 層面無阻礙。Telnet 失敗(默認端口 23)指向:

  1. 目標端口未監聽:Telnet 服務 (telnetd/xinetd) 未啟動或未安裝。
  2. 防火牆攔截:雖用戶稱「未開防火牆」,但 Linux 默認啟用 firewalld/iptables/nftables,需顯式放行端口 23。
  3. SELinux/AppArmor 限制:RedHat 系默認 Enforcing,可能阻止 telnetd 綁定端口或接受連接。
  4. TCP Wrapper (/etc/hosts.allow/deny):舊版 Linux 可能限制來源 IP。

分步排查指令清單

1. 確認 Telnet 服務端狀態 (在 RedHat/openSUSE 上執行)

# RedHat/CentOS 7+
systemctl status telnet.socket   # 或 telnetd
systemctl start telnet.socket
systemctl enable telnet.socket

# openSUSE
systemctl status xinetd          # telnet 通常由 xinetd 管理
systemctl start xinetd

# 檢查端口監聽
ss -ltn | grep :23
# 或
netstat -ltn | grep :23

若無 LISTEN 狀態的 23 端口 → 服務未啟動/未安裝(yum install telnet-server / zypper install telnet-server)。

2. 防火牆放行端口 23

# firewalld (RedHat 7+, openSUSE)
firewall-cmd --permanent --add-port=23/tcp
firewall-cmd --reload

# iptables (舊版)
iptables -I INPUT -p tcp --dport 23 -j ACCEPT
service iptables save

3. SELinux 檢查 (RedHat 重點)

getenforce  # 若為 Enforcing
# 臨時放行測試
setenforce 0
# 永久需修改 /etc/selinux/config SELINUX=permissive 或配置策略
# 查看拒絕日誌
ausearch -m avc -ts recent | grep telnet

4. TCP Wrapper 檢查

cat /etc/hosts.allow
cat /etc/hosts.deny
# 確保無 ALL: ALL 拒絕,或添加
# hosts.allow: in.telnetd: 192.168.0.

5. 抓包定位 (終極大招)

# 在 RedHat (目標機) 抓包
tcpdump -i any -nn port 23

# 在 openSUSE (客戶端) 發起連接
telnet 192.168.0.248

# 觀察:是否有 SYN 到達?是否有 SYN+ACK 回應?是否有 RST/FIN?
  • 若目標機 完全沒收到 SYN → 虛擬機網卡/橋接/宿主機防火牆攔截 (極少見,Ping 通通常排除)。
  • 若收到 SYN 但 無回應 → 目標端口未監聽或防火牆 DROP。
  • 若回應 RST → 端口關閉(服務未啟動)或 TCP Wrapper 拒絕。
  • 若回應 SYN+ACK 但客戶端不 ACK → 客戶端防火牆/路由問題。

橋接模式特有陷阱

  • macOS 宿主機防火牆/安全軟件 可能過濾橋接流量(Little Snitch、LuLu、系統防火牆)。
  • VMware Fusion / Parallels / VirtualBox 網卡綁定:確認兩 VM 綁定同一物理網卡 (en0/eth0),而非不同網卡(有線 vs WiFi)。
  • 交換機/路由器端口隔離 (AP Isolation):無線網絡下可能開啟客戶端隔離,導致無線設備間無法直接通信(但宿主機通常有線或特權可通)。

建議驗證順序

  1. 雙邊 ss -ltn | grep :23 確認服務端口監聽。
  2. 雙邊 firewall-cmd --list-ports 確認 23/tcp 放行。
  3. RedHat 執行 setenforce 0 臨時關閉 SELinux 測試。
  4. 若仍失敗,雙邊 tcpdump -i any port 23 抓包分析 TCP 狀態機。

結語

同網段橋接模式下 VM 間 Ping 通但 Telnet 不通,**99% 是目標機 Telnet 服務未啟動或防火牆/SELinux 攔截端口 23**

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved