ubuntu、deepin使用iptables配置全局IP白名单（可设置区间范围）20250526



已测试的系统：ubuntu 24.04、deepin 20.9、deepin 25 Beta


Linux设置IPv4白名单需要注意的是：loopback本机环回地址（127.0.0.0-127.255.255.255）也需要加白，不然会ping不通加白网站IP、浏览器也不能访问加白网站。



【配置步骤】

1.右键“在终端打开”，
  [ubuntu、deepin25忽略此步骤]deepin20.9需先运行下边一行命令并回车（用于终端提权）：
sudo echo 123

2.安装“iptables-persistent”就可以实现重启电脑后IP规则也有效，复制下边两行内容，在终端粘贴并回车（中间连续两个IPv4、IPv6提示都选择“是”并回车）：
sudo apt update
sudo apt install iptables-persistent -y

3.首先，复制下边两行内容，在终端粘贴并回车（屏蔽所有IPv6区间）：
sudo ip6tables -A INPUT -m iprange --dst-range ::-ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff -j DROP
sudo ip6tables -A OUTPUT -m iprange --dst-range ::-ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff -j DROP

4.复制下边11行内容，在终端粘贴并回车【仅允许局域网联网】：
sudo iptables -F
sudo iptables -A INPUT -m iprange --dst-range 127.0.0.0-127.255.255.255 -j ACCEPT
sudo iptables -A OUTPUT -m iprange --dst-range 127.0.0.0-127.255.255.255 -j ACCEPT
sudo iptables -A INPUT -m iprange --dst-range 192.168.0.0-192.168.255.255 -j ACCEPT
sudo iptables -A OUTPUT -m iprange --dst-range 192.168.0.0-192.168.255.255 -j ACCEPT
sudo iptables -A INPUT -m iprange --dst-range 10.0.0.0-10.255.255.255 -j ACCEPT
sudo iptables -A OUTPUT -m iprange --dst-range 10.0.0.0-10.255.255.255 -j ACCEPT
sudo iptables -A INPUT -m iprange --dst-range 172.16.0.0-172.31.255.255 -j ACCEPT
sudo iptables -A OUTPUT -m iprange --dst-range 172.16.0.0-172.31.255.255 -j ACCEPT
sudo iptables -P INPUT DROP
sudo iptables -P OUTPUT DROP

5.在仅允许局域网联网规则基础上可以自己添加更多允许联网的IPv4地址规则。

  追加规则【允许“pkgs.org”网站首页IP地址】，复制下边两行内容，在终端粘贴并回车：
sudo iptables -A INPUT -m iprange --dst-range 138.201.217.61 -j ACCEPT
sudo iptables -A OUTPUT -m iprange --dst-range 138.201.217.61 -j ACCEPT

  可在“设置(控制中心)→网络”中查看本机使用的DNS详情。
  如果DNS是“192.168.x.x”或“10.x.x.x”或“172.16.0.0-172.31.255.255”的话就不必额外加白此DNS地址了，因为之前的“仅允许局域网”规则就已经将这一段局域网地址加白了。
  如果DNS是其它的外网IP地址（本例是重庆电信的两个DNS），就需要复制下边4行内容，在终端粘贴并回车：
sudo iptables -A INPUT -m iprange --dst-range 61.128.192.68 -j ACCEPT
sudo iptables -A OUTPUT -m iprange --dst-range 61.128.192.68 -j ACCEPT
sudo iptables -A INPUT -m iprange --dst-range 61.128.128.68 -j ACCEPT
sudo iptables -A OUTPUT -m iprange --dst-range 61.128.128.68 -j ACCEPT

6.IP规则设置好之后，在终端输入运行“sudo su”提权为root#，然后粘贴下边两行内容并回车【保存规则到步骤2程序的默认配置文件位置下】（重新启动电脑后配置的IP白名单规则也能生效了）：
iptables-save > /etc/iptables/rules.v4
ip6tables-save > /etc/iptables/rules.v6

  root#提权后终端输入运行“exit”恢复之前的用户权限，当然也可以直接关闭终端窗口。

  以后想加白更多的IPv4地址，[deepin20.9要先操作步骤1]，只需在终端操作类似步骤5追加规则（两行）、步骤6就可以了。


------====== 以下是其它终端命令 ======------


【删除某一组IP规则（本例为删除“pkgs.org”网站IP白名单规则，步骤5把参数“-A”改为“-D”）】终端命令（操作完此还需要操作步骤6）：
sudo iptables -D INPUT -m iprange --dst-range 138.201.217.61 -j ACCEPT
sudo iptables -D OUTPUT -m iprange --dst-range 138.201.217.61 -j ACCEPT


【屏蔽所有IPv4网络】终端命令（操作完此还需要操作步骤6）：
sudo iptables -F
sudo iptables -P INPUT DROP
sudo iptables -P OUTPUT DROP


【删除所有规则并退出IP白名单模式】终端命令（操作完此还需要操作步骤6）：
sudo iptables -F
sudo ip6tables -F
sudo iptables -P INPUT ACCEPT
sudo iptables -P OUTPUT ACCEPT


【显示所有规则】终端命令：
sudo iptables -L
echo -e "\n======\n"
sudo ip6tables -L


如果不想安装使用步骤2的“iptables-persistent”程序，可以使用如下两类命令操作（但每次开机都要恢复ip白名单规则才能使IP规则生效）：


【保存ip白名单规则】主文件夹某具体路径下的终端命令：
sudo iptables-save > ipguize4.conf
sudo ip6tables-save > ipguize6.conf


【恢复ip白名单规则】主文件夹某具体路径下的终端命令：
sudo iptables-restore < ipguize4.conf
sudo ip6tables-restore < ipguize6.conf



参考：
https://unix.stackexchange.com/questions/11851/iptables-allow-certain-ips-and-block-all-other-connection
https://www.cyberciti.biz/tips/linux-iptables-how-to-specify-a-range-of-ip-addresses-or-ports.html
https://www.cnblogs.com/guangdelw/p/17440696.html





