在 Ubuntu 下使用 iptables 限制 IP(允许/拒绝某些 IP 访问本机或端口),常见做法如下:
查看当前规则:
sudo iptables -L -n -v
保存规则(Ubuntu 20.04+ 推荐):
sudo apt install iptables-persistent
sudo netfilter-persistent save
sudo iptables -A INPUT -s 192.168.1.100 -j DROP
或拒绝并返回错误:
sudo iptables -A INPUT -s 192.168.1.100 -j REJECT
例如只允许 192.168.1.10:
sudo iptables -A INPUT -s 192.168.1.10 -j ACCEPT
sudo iptables -A INPUT -j DROP
⚠️ 注意:最后一条一定要谨慎,会拒绝其他所有 IP。
sudo iptables -A INPUT -s 192.168.1.100 -p tcp --dport 22 -j DROP
sudo iptables -A INPUT -p tcp --dport 3306 -s 192.168.1.10 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 3306 -j DROP
sudo iptables -A INPUT -s 192.168.1.0/24 -j DROP
sudo iptables -L INPUT --line-numbers
sudo iptables -D INPUT 2
sudo iptables -D INPUT -s 192.168.1.100 -j DROP
Ubuntu 20.04+ 默认可能用 nftables:
sudo nft list ruleset
若使用 nftables,建议改用:
sudo nft add rule inet filter input ip saddr 192.168.1.100 drop
如果你有具体场景(比如限 SSH、限国外 IP、限 Docker),可以告诉我,我给你精确命令。