在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应用程序的网络通信。