centos中的端口转发只允许某个地区访问流程 2024-11-17 暂无评论 **1. 安装必要库** ```bash yum install -y ipset wget nano ``` **2. 下载地区IP库** 地区库:https://www.ipdeny.com/ipblocks/ ```bash wget https://www.ipdeny.com/ipblocks/data/countries/hk.zone hk.zone ``` **3. 使用ipset来创建IP地区集合** ```bash ipset create hk_ips hash:net for ip in $(cat hk.zone); do ipset add hk_ips $ip done ``` **4. 允许端口转发** ```bash echo "net.ipv4.ip_forward = 1" | sudo tee -a /etc/sysctl.conf sudo sysctl -p ``` **5. filter 表中允许 hk_ips 中的 IP 通过端口** ```bash sudo iptables -A INPUT -p tcp --dport <本地转发端口> -m set --match-set hk_ips src -j ACCEPT ``` **6. filter 表中拒绝不在 hk_ips 中的 IP 通过端口** ```bash sudo iptables -A INPUT -p tcp --dport <本地转发端口> -j DROP ``` **7. nat 表中添加 PREROUTING 规则,转发来自 hk_ips 的请求** ```bash sudo iptables -t nat -A PREROUTING -p tcp --dport <本地转发端口> -m set --match-set hk_ips src -j DNAT --to-destination <目标IP>:<目标端口> ``` **8. POSTROUTING 规则用于伪装所有经过 NAT 的连接** ```bash sudo iptables -t nat -A POSTROUTING -j MASQUERADE ``` **9. 确保ipset和iptables数据持久化:保存 ipset和iptables 配置以确保重启后仍然有效。** ```bash sudo ipset save > /etc/ipset.conf sudo iptables-save > /etc/sysconfig/iptables ``` **10. 确保ipset持久化,创建/etc/systemd/system/ipset-restore.service文件:** ```bash sudo nano /etc/systemd/system/ipset-restore.service ``` 内容如下:直接复制粘贴 ``` [Unit] Description=Restore IP sets at boot [Service] ExecStart=/usr/sbin/ipset restore < /etc/ipset.conf [Install] WantedBy=multi-user.target ``` **11.启用并启动服务** ```bash sudo systemctl enable ipset-restore sudo systemctl start ipset-restore ``` 到这地区限制端口转发就已经配置完成了 如需要添加多个端口转发,重复5.6.7.9步就可以了 另外下面附上清除所有端口转发命令 ```bash sudo iptables -t filter -F sudo iptables -t nat -F ``` centos中的端口转发只允许某个地区访问流程 https://www.byue.cc/index.php/archives/17/ 本文作者 八月 发布时间 2024-11-17 许可协议 CC BY-NC-SA 4.0 取消回复 发表新评论 提交评论