在 Ubuntu 下使用 iptables 禁止(屏蔽)某个端口,通常是对 INPUT 链 做 DROP 或 REJECT。下面按常见场景说明。
sudo iptables -A INPUT -p tcp --dport 8080 -j DROP
或使用 REJECT(客户端会收到拒绝信息):
sudo iptables -A INPUT -p tcp --dport 8080 -j REJECT
sudo iptables -A INPUT -p udp --dport 53 -j DROP
例如禁止 192.168.1.100 访问 22 端口:
sudo iptables -A INPUT -p tcp -s 192.168.1.100 --dport 22 -j DROP
例如禁止本机访问外部 80 端口:
sudo iptables -A OUTPUT -p tcp --dport 80 -j DROP
sudo iptables -L -n -v
先查看规则编号:
sudo iptables -L INPUT --line-numbers
删除第 3 条:
sudo iptables -D INPUT 3
例如原命令是:
iptables -A INPUT -p tcp --dport 8080 -j DROP
删除:
sudo iptables -D INPUT -p tcp --dport 8080 -j DROP
iptables 规则默认重启会丢失,可以安装持久化工具:
sudo apt update
sudo apt install iptables-persistent
保存规则:
sudo netfilter-persistent save
开机自动加载:
sudo netfilter-persistent reload
Ubuntu 18.04+ 更推荐使用 ufw(更简单):
sudo ufw deny 8080/tcp
如果你有 具体端口 / 协议 / 内网还是公网 / Docker 环境,可以告诉我,我给你更精确的命令。