You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何配置UFW防火墙:禁止所有出站流量但允许浏览器上网

UFW 配置:仅允许浏览器上网,拦截其他出站流量

我来帮你搞定这个问题!你之前只开放80和443端口却没法上网,核心原因是浏览器需要DNS解析域名——连目标网站的IP地址都找不到,自然没法建立连接。下面是一套完整的配置流程,确保只有浏览器能正常访问网页,其他所有出站流量都会被拦截:

1. 重置UFW到默认状态

先清空之前的自定义规则,避免旧规则干扰新配置:

sudo ufw reset

2. 允许本地回环接口流量

本地程序之间的通信依赖回环接口(lo),必须放行,否则很多基础功能会失效:

sudo ufw allow in on lo
sudo ufw allow out on lo

3. 允许DNS出站流量

浏览器要把域名转换成IP地址,必须依赖DNS服务。我们需要放行UDP和TCP的53端口(UDP用于常规DNS查询,TCP用于大尺寸的DNS响应):

sudo ufw allow out 53/udp
sudo ufw allow out 53/tcp

4. 允许网页访问的核心端口

开放HTTP(80)和HTTPS(443)的TCP流量,这是网页访问的基础:

sudo ufw allow out 80/tcp
sudo ufw allow out 443/tcp

可选优化:如果你的浏览器支持QUIC协议(比如Chrome、Firefox),可以额外开放443端口的UDP流量,提升部分网站的加载速度:

sudo ufw allow out 443/udp

5. 设置默认拒绝所有出站流量

这一步一定要放在最后!确保前面的允许规则优先生效,之后所有未被明确允许的出站流量都会被拦截:

sudo ufw default deny outgoing

6. 启用UFW并验证规则

启动防火墙,然后查看当前规则是否正确:

sudo ufw enable
sudo ufw status verbose

测试配置效果

  • 打开浏览器访问任意网站(比如Google、GitHub),应该能正常加载。
  • 测试其他程序(比如用ping google.comcurl ftp://ftp.debian.org),这些非网页访问的流量应该会被拦截。

如果还是遇到问题,可以通过查看UFW日志排查被拦截的流量:

sudo tail -f /var/log/ufw.log

日志里会显示被拦截的流量详情,你可以根据需要补充对应的允许规则。

内容的提问来源于stack exchange,提问作者Lambda killed App

火山引擎 最新活动