首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

虛擬機 Tomcat 6 外部無法訪問 8080 埠解決方案(防火牆配置)

     編輯:Java 相關知識

經典場景:VirtualBox/VMware 虛擬機內部 curl localhost:8080 正常,宿主機瀏覽器訪問 https://VM_IP:8080 卻連線逾時。主因通常是 Linux 防火牆 (iptables/firewalld) 攔截外部連入。本文提供三種解決方案,由簡入繁。

現象確認

  • 虛擬機內:curl https://127.0.0.1:8080 → 返回 Tomcat 頁面 ✅
  • 宿主機:瀏覽器訪問 https://192.168.x.x:8080 → 無法連線 ❌
  • 宿主機:telnet 192.168.x.x 8080 → Connection timed out

方案一:永久關閉防火牆(僅限開發/測試環境)

# CentOS 6 / RHEL 6 (iptables service)
chkconfig iptables off          # 開機不啟動
service iptables stop           # 立即停止

# CentOS 7+ / RHEL 7+ (firewalld)
systemctl disable firewalld     # 開機不啟動
systemctl stop firewalld        # 立即停止

⚠️ 生產環境嚴禁使用,會暴露所有埠口風險。

方案二:iptables 精準開放 8080 埠(推薦生產)

# 1. 編輯規則檔
vi /etc/sysconfig/iptables

# 2. 在 COMMIT 行之前插入 (確保在 REJECT 規則之前)
-A INPUT -m state --state NEW -m tcp -p tcp --dport 8080 -j ACCEPT

# 完整範例片段:
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 8080 -j ACCEPT  # 新增此行
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT

# 3. 重新載入規則
service iptables restart
# 或 CentOS 7+
systemctl restart iptables

方案三:firewalld 開放埠 (CentOS 7+/RHEL 7+/Fedora)

# 永久開放 (重啟生效)
firewall-cmd --permanent --add-port=8080/tcp

# 立即生效 (不重啟)
firewall-cmd --add-port=8080/tcp

# 驗證
firewall-cmd --list-ports
# 輸出應包含 8080/tcp

# 重新載入
firewall-cmd --reload

方案四:雲廠商安全組/防火牆 (AWS/Azure/GCP/阿里雲/騰訊雲)

若虛擬機跑在雲端,**必須**在雲控制台對應的「安全組」或「防火牆規則」開放 8080 埠:

  • 方向:入站
  • 協議:TCP
  • 埠範圍:8080
  • 來源:0.0.0.0/0 (或限制特定 IP 段)

這層防火牆在作業系統之外,OS 內開放無效。

驗證步驟

  1. 虛擬機內確認 Tomcat 監聽 0.0.0.0:8080 (非 127.0.0.1):
    netstat -ntlp | grep 8080
    # 應顯示 0.0.0.0:8080 或 :::8080
  2. 宿主機 telnet VM_IP 8080 連線成功
  3. 宿主機瀏覽器訪問 https://VM_IP:8080 顯示 Tomcat 首頁

常見遺漏:Tomcat 預設綁定 localhost

檢查 server.xml Connector 設定:

<Connector port="8080" address="0.0.0.0" ... />

若 address="127.0.0.1" 則僅接受本機連線,需改為 0.0.0.0 或刪除 address 屬性 (預設即為 0.0.0.0)。

總結

環境推薦方案指令
開發/測試 VM關閉防火牆systemctl stop firewalld
生產 Linux (CentOS 6)iptables 開放埠vi /etc/sysconfig/iptables
生產 Linux (CentOS 7+)firewalld 開放埠firewall-cmd --add-port=8080/tcp
雲端 VM雲安全組 + OS 防火牆雙重開放控制台配置 + 上述指令

「內網通、外網不通」90% 是防火牆問題,按表對號入座,通常 1 分鐘內解決。

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