# DenyIP ## 概述 `DenyIP` 是一个用于保护大陆服务器免受非本地业务访问的防火墙工具。通过结合 `libpcap`、`libipset`、`ip2region` 和 `Go ipquery`,该工具能够高效地捕获网络数据包、提取源IP地址、进行地理位置判断,并将非大陆IP地址添加到IP黑名单中,从而严格限制非大陆来源的访问。 ## 特点 - **数据包捕获**:使用 `libpcap` 捕获网络数据包,提取源IP地址。 - **IP黑名单管理**:使用 `libipset` 管理IP黑名单,高效存储和匹配IP地址。 - **初步IP地域判定**:使用 `ip2region` 库进行初步的IP地理位置判断。 - **精确IP地理位置判断**:使用 `Go ipquery` 进一步精准识别IP地理位置。 - **灵活的命令行选项**:支持守护进程模式、指定网络接口、启用/禁用Iptables规则等。 ## 安装 ### 依赖项 在 Debian 系统上安装所需的开发工具和库: ```bash sudo apt update sudo apt install build-essential golang sudo apt install libpcap-dev libcap-dev libipset-dev libsystemd-dev ``` 在 Centos 7 系统上安装所需的开发工具和库: ```bash yum groupinstall "Development Tools" -y yum install ipset-devel libattr-devel libpcap-devel libcap-devel ``` ### 下载项目 克隆项目仓库: ```bash git clone https://git.aixiao.me/DenyIP.git cd DenyIP ``` ## 构建 编译项目: ```bash cd DenyIP make clean make ipquery make ``` ## 使用方法 ### 命令行选项 ```bash root@NIUYULING:/mnt/c/Users/root/Desktop/git.aixiao.me/DenyIP# ./denyip -h DenyIP version 0.2 拒绝Linux服务器非大陆IP工具 MAIL: aixiao@aixiao.me Date: 20241024 Usage: denyip [-d] [-i ] [-s ] [-h|-?] -d --daemon Daemon mode -i --interface interface (default eth0) -l print iptables rule -s --signal regular signal (default start|stop) start Enable Iptables rule stop Disable Iptables rule -h|-? Help Information root@NIUYULING:/mnt/c/Users/root/Desktop/git.aixiao.me/DenyIP# ``` ### 示例命令 - **启动守护进程**: ```bash ./denyip -d -i eth0 ``` - **启用Iptables规则**: ```bash ./denyip -s start ``` - **禁用Iptables规则**: ```bash ./denyip -s stop ``` - **查看帮助信息**: ```bash ./denyip -h ``` - **关闭守护进程**: ```bash killall -15 denyip ``` ## 贡献 欢迎贡献代码和提出改进建议!请通过 Pull Request 或 Issue 的方式提交。 ## 联系信息 - **邮箱**: - **日期**:20241024 ## 许可证 本项目遵循 GNU 许可证,详情参见 [LICENSE](LICENSE) 文件。 --- 希望这个 `README.md` 文件能够帮助您更好地介绍和使用 `DenyIP` 项目。如果有任何其他需求或修改,请随时告知。