在CentOS系統中配置Golang應用程序的防火墻,通常涉及到兩個步驟:配置CentOS的防火墻規則以允許Golang應用程序的網絡通信,以及確保Golang應用程序本身監聽正確的端口。以下是詳細的步驟:
CentOS 7及以上版本默認使用firewalld
作為防火墻管理工具。你可以使用firewall-cmd
命令來配置防火墻規則。
sudo yum install firewalld
sudo systemctl start firewalld
sudo systemctl enable firewalld
假設你的Golang應用程序監聽在端口8080上,你可以添加一個規則來允許該端口的TCP流量。
sudo firewall-cmd --permanent --zone=public --add-port=8080/tcp
sudo firewall-cmd --reload
在你的Golang應用程序中,確保它監聽在正確的端口上。例如,如果你使用的是net/http
包,代碼可能如下所示:
package main
import (
"log"
"net/http"
)
func main() {
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
w.Write([]byte("Hello, World!"))
})
log.Println("Starting server on :8080")
if err := http.ListenAndServe(":8080", nil); err != nil {
log.Fatal(err)
}
}
sudo firewall-cmd --state
sudo firewall-cmd --list-all
你應該能看到類似以下的輸出,表明端口8080已經開放:
public (default, active)
interfaces: lo eth0
sources:
services: ssh http https
ports: 8080/tcp
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
確保你的Golang應用程序正在運行,并且可以從其他機器訪問。你可以使用curl
或瀏覽器來測試:
curl http://your-server-ip:8080
如果一切配置正確,你應該能看到"Hello, World!"的響應。
通過以上步驟,你已經成功配置了CentOS防火墻以允許Golang應用程序的網絡通信。