服务器端口没开,开放口程序跑得再欢也白搭。服务上个月我帮朋友排查一个线上服务,器端他折腾了三天,开放口代码翻来覆去检查,服务最后发现就是器端防火墙把8080端口堵死了。这种事儿太常见了,开放口尤其是服务新手,总以为问题出在应用层,器端其实网络层早给你拦住了。开放口
先搞清楚你要开哪个端口。服务别急着敲命令,器端先问自己:这端口是开放口给谁用的?如果是给公网用户访问,那要动的服务是云服务商的安全组;如果是内网测试,那改服务器本地防火墙就行。器端很多人栽跟头就栽在这儿——在阿里云或腾讯云上配了半天iptables,结果控制台的安全组规则压根没放行,等于白忙活。
Linux系统下,最直接的办法是改iptables规则。比如要开放TCP的8080端口,执行:
iptables -I INPUT -p tcp --dport 8080 -j ACCEPT
这条命令的意思是在INPUT链最前面插入一条规则,允许目标端口为8080的TCP流量进入。注意那个,是insert的缩写,表示插到最前面,免得被后面的拒绝规则覆盖。改完用service iptables save保存,不然重启就失效了。但iptables规则多了以后容易乱,我自己更喜欢用firewalld。CentOS 7以上默认带这个,操作更人性化。开放端口就一条命令:
firewall-cmd --zone=public --add-port=8080/tcp --permanent
加--permanent是让它永久生效,最后记得firewall-cmd --reload重载配置。这玩意儿的好处是,你还能用firewall-cmd --list-ports随时查看当前放行了哪些端口,心里有底。Windows服务器也别忽略。打开“Windows Defender防火墙”,点“高级设置”,在“入站规则”里新建规则,选“端口”,填上你要开的端口号,协议选TCP或UDP,然后允许连接。操作起来鼠标点几下就行,比Linux命令直观多了。但有个坑——记得区分域配置文件、专用配置文件和公用配置文件,如果你服务器在公用网络环境下,得在公用配置文件里也放行。
改完别急着欢呼,先验证端口真的通了。用
telnet 你的IP 端口试试,如果提示连接失败,八成是安全组没放行。这时候去云服务商控制台,找到“安全组”或“防火墙”选项,添加入方向规则,源IP填0.0.0.0/0表示所有人可访问,或者只填你办公网的IP段,安全性更好。我习惯用后者,毕竟端口暴露在公网上,扫描器分分钟就能找到你。还有一个容易忽略的地方——SELinux。如果你用的是CentOS或RHEL,即使iptables放行了,SELinux也可能拦着。临时关闭测试一下:
setenforce 0,如果服务立刻能访问了,那就是SELinux的锅。要么永久关闭(不推荐),要么用semanage port -a -t http_port_t -p tcp 8080把端口加到对应策略里。最后提醒一句,端口开放意味着风险。别图省事把范围开成0-65535,那等于把家门钥匙挂门口。只开业务必需的端口,其他全关着。我见过有人把数据库3306端口直接暴露公网,结果被勒索软件盯上,数据全被加密。安全这事儿,多一分谨慎就少一分麻烦。
顶: 1454踩: 2352






评论专区