一、前置準備:確認Java應用端口
在配置防火墻前,需先明確Java應用程序監聽的端口(如Spring Boot默認的8080端口、Tomcat默認的8005/8080端口)??赏ㄟ^以下方式獲?。?/p>
application.properties中的server.port、Tomcat的server.xml);netstat -tuln | grep java或ss -tuln | grep java命令查看Java進程占用的端口。二、安裝與啟動Firewalld(CentOS默認防火墻工具)
sudo yum install firewalld -y
sudo systemctl start firewalld # 啟動服務
sudo systemctl enable firewalld # 設置開機自動啟動
sudo firewall-cmd --state # 應返回“running”(運行中)
sudo firewall-cmd --get-active-zones # 查看當前活動的防火墻區域(如“public”)
三、配置Java應用端口規則
若Java應用運行在8080端口(TCP協議),執行以下命令:
sudo firewall-cmd --zone=public --add-port=8080/tcp --permanent
--zone=public:將規則添加到“public”區域(適用于公網或外部訪問);--add-port=8080/tcp:允許TCP協議的8080端口通過;--permanent:規則永久生效(重啟系統后仍保留)。應用規則:
sudo firewall-cmd --reload # 重新加載配置使新規則生效
若Java應用需要開放多個連續端口(如8080-8090),執行:
sudo firewall-cmd --zone=public --add-port=8080-8090/tcp --permanent
sudo firewall-cmd --reload
sudo firewall-cmd --list-ports
sudo firewall-cmd --zone=public --list-all
curl http://your-server-ip:8080 # 若返回應用響應,說明端口開放成功
四、限制訪問源(可選,提升安全性)
若僅需允許特定IP地址訪問Java應用(如公司內網IP192.168.1.100),可使用富規則(Rich Rule):
sudo firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.1.100" port protocol="tcp" port="8080" accept' --permanent
sudo firewall-cmd --reload
family="ipv4":針對IPv4地址;source address="192.168.1.100":允許的源IP;port protocol="tcp" port="8080":目標端口及協議;accept:允許訪問。刪除富規則:
sudo firewall-cmd --zone=public --remove-rich-rule='rule family="ipv4" source address="192.168.1.100" port protocol="tcp" port="8080" accept' --permanent
sudo firewall-cmd --reload
五、配置SELinux(若啟用)
若系統啟用了SELinux(sestatus返回“Enforcing”),需調整SELinux策略以允許Java應用使用指定端口:
查看SELinux狀態:
sestatus
允許端口通過SELinux:
若Java應用使用8080端口(非默認的HTTP端口80),需將其添加到http_port_t類型:
sudo semanage port -a -t http_port_t -p tcp 8080
semanage:SELinux管理工具;-a:添加端口;-t http_port_t:指定端口類型為HTTP服務;-p tcp:協議類型;8080:端口號。驗證SELinux端口配置:
sudo semanage port -l | grep http_port_t
輸出應包含8080/tcp。
六、常見問題排查
systemctl start firewalld已執行,且狀態為“running”;firewall-cmd --list-all是否包含目標端口,或netstat -tuln是否顯示Java應用在監聽該端口;sudo setenforce 0),測試是否解決問題,再調整SELinux策略。