同一个端口,Linux那边敲一条命令就通了,Windows这边点半天还是连不上——多数时候跟网络本身没关系,是两边的防火墙各管各的,你只放行了一头。端口开放命令这东西没有「通用版」,Linux一套、Windows一套,记混了就是白折腾一晚上。

先确认端口到底通没通,再动手改规则
一上来就改防火墙是通病。改完发现还是不通,然后又改回去,来回折腾。正确的顺序是先看服务有没有在监听:Linux上 ss -tlnp(老机器用 netstat -tlnp)能列出当前谁在听哪个端口,Windows上 netstat -ano | findstr :8080 是一个意思。要是监听列表里压根没这个端口,防火墙你开一百遍也没用,问题在服务没起来,或者绑到了 127.0.0.1 上——只对本机开放,外面永远连不进来,这个坑踩的人特别多。
Linux上开端口,得先看你装的是哪套防火墙
现在主流三种,firewalld、ufw、iptables,不少机器还不止装一套,规则互相打架。firewalld(CentOS、Rocky 这类):firewall-cmd –zone=public –add-port=8080/tcp –permanent,然后 firewall-cmd –reload。少了 –permanent 这条,重启就没了,栽在这上面的人特别多。ufw(Ubuntu、Debian 系):ufw allow 8080/tcp,再用 ufw status 确认一下。iptables(老系统或者被别的面板接管的):iptables -I INPUT -p tcp –dport 8080 -j ACCEPT,最后别忘了 iptables-save 落盘,不然重启同样白干。同一台机器上 firewalld 和 iptables 同时存在的时候,谁最后生效要看具体配置,别猜,拿 firewall-cmd –list-all 和 iptables -L -n 都对一遍。
端口开放命令在Windows上是另一套逻辑
netsh advfirewall firewall add rule name=”web8080″ dir=in action=allow protocol=TCP localport=8080,这是 cmd 里的写法。PowerShell 里更清爽:New-NetFirewallRule -DisplayName “web8080” -Direction Inbound -Protocol TCP -LocalPort 8080 -Action Allow。要注意 Windows 防火墙有域、专用、公用三套配置文件,命令行加的规则落到哪一套,不同系统版本表现不太一样,加完用 Get-NetFirewallRule 或者图形界面看一眼。另外 Windows 的入站默认是拒绝的,跟很多人印象里「没动过就等于开着」正好相反——这也是为什么同一份程序,在 Linux 上跑得好好的,搬到 Windows 就外面连不上。
还有第三层:云服务器安全组
机器里的规则写得再漂亮,云平台的安全组不放行,外面照样进不来。控制台里找安全组或者防火墙规则,入方向加一条 TCP 8080 允许。源地址别图省事写 0.0.0.0/0,能限定 IP 段就限定。各家面板的入口和叫法不太一样,具体以服务商控制台和官方文档说明为准。还有个容易忘的:部分机房或运营商那侧也有过滤策略,改完一直不生效,可以先问一下客服。
几个特别容易搞混的细节
TCP 和 UDP 是分开算的,只放行 TCP 53,DNS 的 UDP 查询照样被挡,那种时通时不通的怪毛病多半出在这。端口范围写法不同,Linux 写 8000-8010,netsh 里也是 localport=8000-8010,别想当然照抄。SELinux 会拦,CentOS 上让服务听 8080,光开防火墙没用,还得 semanage port -a -t http_port_t -p tcp 8080。iptables 是从上往下匹配的,前面有条 DROP,后面写 ACCEPT 也白搭。
开完端口先在本机测,再换外网测
Linux 上 nc -vz 127.0.0.1 8080 或者 telnet 127.0.0.1 8080,通了再拿公网 IP 从外面连;Windows 上 Test-NetConnection -ComputerName 1.2.3.4 -Port 8080 比 telnet 顺手。本机通、外面不通,问题基本就落在安全组、上游网络或者中间那层代理上,不用再回头折腾系统防火墙了。
端口开得越少越安全,这条比命令重要
图省事开一大片,早晚出事。数据库端口 3306、6379 这种,绝对不要对公网敞开;确实要外部访问,改端口、加白名单、上强密码,能走内网或者隧道就别暴露出来。改过的规则留个记录,写在备忘录里都行,别人接手的时候不用再猜你当初为什么开了这个口子。
命令记不住,那就记顺序
端口开放命令真不用硬背。Linux 上把常用的几条做成 alias 或者脚本,Windows 上存个 .bat 放桌面,用的时候改个端口号就行。要记就记排查顺序:服务有没有监听、本机防火墙放没放、安全组和上游有没有拦。三层捋下来,比背十条命令管用。
端口的事,麻烦多半不在命令本身,而在「你以为开了」。下次再连不上,别急着复制粘贴,先按上面那个顺序走一遍,多半几分钟就定位到了,省下的时间干点啥不好。
【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!