ubuntu防火墙开放端口
作者:百科 来源:休闲 浏览: 【大 中 小】 发布时间:2026-10-17 06:19:24 评论数:
Ubuntu的防火放端防火墙叫ufw,全称Uncomplicated Firewall。墙开名字起得实在,防火放端它确实不复杂。墙开但很多人装上系统后第一件事就是防火放端把它关掉,因为不会用。墙开这很可惜——ufw开放端口其实就一条命令的防火放端事,比你想的墙开简单得多。
先看最基础的防火放端操作。开放某个端口,墙开比如SSH用的防火放端22,命令是墙开:
sudo ufw allow 22
完事。就这么简单。防火放端你不需要去编辑iptables那一堆让人头皮发麻的墙开规则链,ufw帮你包了一层糖衣。防火放端想开放一个范围,比如游戏服务器常用的27000-27030,写法也直观:
sudo ufw allow 27000:27030/tcp
注意那个斜杠和协议名。默认情况下,如果你不写协议,ufw会同时放行TCP和UDP。但某些服务只认TCP,比如HTTP的80端口,或者HTTPS的443。这时候最好写清楚,免得把UDP也敞开,平白增加暴露面。我见过不少新手直接allow 80,结果UDP也被放行了,虽然风险不大,但总归不够干净。
真正的坑不在开放,而在开放之前。你刚装好ufw时,它默认是禁用状态。很多人先执行sudo ufw enable,然后顺手allow 22,接着就悲剧了——SSH断了,再也连不上。为什么?因为启用的瞬间,默认策略是拒绝所有入站流量,而你还没来得及开放22端口。顺序错了,直接把自己锁在门外。所以正确流程是先开放端口,再启用防火墙:
sudo ufw allow 22
sudo ufw enable
如果你已经在坑里了,别慌,去物理机上敲sudo ufw allow 22,或者干脆sudo ufw disable先救急。这种事我经历过一次,当时在云服务器上配置,手一抖就断连了。后来学乖了,永远先写allow,再enable。
查看已开放的端口也很重要。sudo ufw status verbose会列出所有规则,包括端口、协议、动作。输出里带ALLOW的就是放行的,DENY就是拒绝的。我习惯定期跑一下这个命令,看看有没有自己忘了的规则。比如有时候调试临时开了个端口,事后忘了删,几个月后一看,还在那挂着。删除用sudo ufw delete allow 8080,语法和添加几乎一样,只是前面多了个delete。
有个细节容易忽略——ufw的规则是顺序匹配的。如果你先写了deny 22,再写allow 22,结果还是拒绝,因为第一条就拦住了。ufw不像iptables那样让你精细控制每条规则的顺序,它按你添加的先后顺序执行。所以想改规则,最好先sudo ufw reset清空,再重新按正确顺序添加。别嫌麻烦,这比在混乱的规则里找bug省时间。
最后说个实际场景。你跑了个Web服务,端口8080,想对外开放,但只想让某个IP段访问。ufw也支持:
sudo ufw allow from 192.168.1.0/24 to any port 8080 proto tcp
这条命令的意思是,允许192.168.1.0到192.168.1.255这个网段的设备访问本机的8080端口。这样比裸奔开放安全多了。我自己的服务器上,管理后台就只对家里IP开放,其他地址一律拒绝。用ufw做这种限制,比去改应用配置更底层,也更可靠——毕竟防火墙在流量进来的第一道关卡就拦住了。
ufw不是万能钥匙,但应付日常绝对够用。别怕它,也别一上来就关掉。花五分钟学会这几个命令,你的服务器能少挨不少扫描。
