linux屏蔽海外流量的两种方法

2023-11-16

方法一:使用大神的开源脚本,屏蔽指定国家地区的IP访问

wget https://raw.githubusercontent.com/iiiiiii1/Block-IPs-from-countries/master/block-ips.sh
sh block-ips.sh

方法二:使用IPIP的数据库进行流量屏蔽(推荐,目前已支持centos6和7还有ubuntu系统)

#!/bin/bash
#判断是否具有root权限
root_need() {
    if [[ $EUID -ne 0 ]]; then
        echo "Error:This script must be run as root!" 1>&2
        exit 1
    fi
}

#检查系统分支及版本(主要是:分支->>版本>>决定命令格式)
check_release() {
    if uname -a | grep el7  ; then
        release="centos7"
    elif uname -a | grep el6 ; then
        release="centos6"
        yum install ipset -y
    elif cat /etc/issue |grep -i ubuntu ; then
        release="ubuntu"
        apt install ipset -y
    fi
}

#安装必要的软件(wget),并下载中国IP网段文件(最后将局域网地址也放进去)
get_china_ip() {
	#安装必要的软件(wget)
	rpm --help >/dev/null 2>&1 && rpm -qa |grep wget >/dev/null 2>&1 ||yum install -y wget ipset >/dev/null 2>&1 
	dpkg --help >/dev/null 2>&1 && dpkg -l |grep wget >/dev/null 2>&1 ||apt-get install wget ipset -y >/dev/null 2>&1

	#该文件由IPIP维护更新,大约一月一次更新(也可以用我放在国内的存储的版本,2018-9-8日版)
	[ -f china_ip_list.txt ] && mv china_ip_list.txt china_ip_list.txt.old
	wget https://github.com/17mon/china_ip_list/blob/master/china_ip_list.txt
	cat china_ip_list.txt |grep 'js-file-line">' |awk -F'js-file-line">' '{print $2}' |awk -F'< ' '{print $1}' >> china_ip.txt
	rm -rf china_ip_list.txt
	#wget https://qiniu.wsfnk.com/china_ip.txt

	#放行局域网地址
	echo "192.168.0.0/18" >> china_ip.txt
	echo "10.0.0.0/8" >> china_ip.txt
	echo "172.16.0.0/12" >> china_ip.txt
}

#只允许国内IP访问
ipset_only_china() {
	echo "ipset create whitelist-china hash:net hashsize 10000 maxelem 1000000" > /etc/ip-black.sh
	for i in $( cat china_ip.txt )
	do
        	echo "ipset add whitelist-china $i" >> /etc/ip-black.sh
	done
	echo "iptables -I INPUT -m set --match-set whitelist-china src -j ACCEPT" >> /etc/ip-black.sh
	#拒绝非国内和内网地址发起的tcp连接请求(tcp syn 包)(注意,只是屏蔽了入向的tcp syn包,该主机主动访问国外资源不用影响)
	echo "iptables  -A INPUT -p tcp --syn -m connlimit --connlimit-above 0 -j DROP" >> /etc/ip-black.sh
	#拒绝非国内和内网发起的ping探测(不影响本机ping外部主机)
	echo "iptables  -A INPUT -p icmp -m icmp --icmp-type 8 -j DROP" >> /etc/ip-black.sh
	#echo "iptables -A INPUT -j DROP" >> /etc/ip-black.sh
	rm -rf china_ip.txt
}

run_setup() {
	chmod +x /etc/rc.local
	sh /etc/ip-black.sh
	rm -rf /etc/ip-black.sh
	#下面这句主要是兼容centos6不能使用"-f"参数
	ipset save whitelist-china -f /etc/ipset.conf || ipset save whitelist-china > /etc/ipset.conf
	[ $release = centos7 ] && echo "ipset restore -f /etc/ipset.conf" >> /etc/rc.local
	[ $release = centos6 ] && echo "ipset restore < /etc/ipset.conf" >> /etc/rc.local
	echo "iptables -I INPUT -m set --match-set whitelist-china src -j ACCEPT" >> /etc/rc.local
	echo "iptables  -A INPUT -p tcp --syn -m connlimit --connlimit-above 0 -j DROP" >> /etc/rc.local
	echo "iptables  -A INPUT -p icmp -m icmp --icmp-type 8 -j DROP" >> /etc/rc.local
	#echo "iptables -A INPUT -j DROP" >> /etc/rc.local
}

main() {
	check_release
	get_china_ip
	ipset_only_china

case "$release" in
centos6)
	run_setup
	;;
centos7)
	chmod +x /etc/rc.d/rc.local
	run_setup
	;;
ubuntu)
	sed -i '/exit 0/d' /etc/rc.local
	run_setup
	echo "exit 0" >> /etc/rc.local
	;;
esac
}
main



参考链接 :
linux屏蔽海外流量的两种方法

原文来自:https://boke.wsfnk.com/archives/642.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

linux屏蔽海外流量的两种方法 的相关文章

随机推荐

  • Ubuntu下安装Matlab步骤

    1 下载matlab iso镜像文件 可以从verycd上下载 搜索matlab unix版可得到 我下的是2010a 2 打开终端 输入sudo mkdir mnt temp 建立临时文件夹存放装载后的iso文件 再输入 sudo mou
  • Come on和我一起做基于深度学习的缺陷检测一(数据准备)

    基于深度学习的织物疵点检测 数据集的制作 数据标注 数据增强 图像和xml文件同时增强 这里有几句话要说 这个项目会持续更新 由于要忙于毕业答辩和论文修改 更新时间不定 由于本人研三 今年毕业要去工作 可能会出现拖更的现象 我把以前Pyth
  • Java从入门到实战总结-3.3、Java的IO处理

    Java从入门到实战总结 3 3 Java的IO处理 文章目录 Java从入门到实战总结 3 3 Java的IO处理 1 java io File 1 类的声明 2 字段 3 类的构造函数 4 类方法 5 示例 2 文件遍历 3 文件过滤器
  • ckplayer 播放视频

    备注 其中引用文件无法上传 如果需要私信即可
  • “GPT+健康医疗”赋能医疗行业“数智化”发展,景联文科技提供高质量医疗数据库

    近日 ChatGPT这个代表着通用版的大型语言模型以其出色的表现在全球互联网上引人注目 它所使用的GPT技术基础为人工智能应用开启了全新的世界 大模型时代已经到来 它已变成基础设施 变成算力 变成生产力 大模型可能有通用技术 但更重要的是如
  • 实体识别和关系抽取的联合模型总结

    实体识别和关系抽取的目标是从非结构化的文本中发现 实体1 关系 实体2 的三元组 它对知识库的构建和问答任务都很重要 是信息抽取的核心问题 现有的关系抽取方法主要有两种 1 使用流水线方法进行抽取 先对句子进行实体识别 然后对识别出的实体两
  • UE常用使用技巧

    UE使用技巧1 如何在行末添加指定字符如 方法 ctrl r 用 p全部替换 n即可 p n 2 如何删除空行 查找 p 替换为空即可 p 空 3 括号自动匹配 Ctrl b4 加书签 Ctrl F2 加书签 Alt F2 在多个书签中进行
  • 调试最长的一帧(第十天)

    依照惯例 先看总体流程 到了更新回调 一边抄一边记忆 OSG更新回调的作用与事件回调有类似之处 由专门的访问器对象 updateVisitor负责场景图形更新遍历 所有的节点和Drawable几何体对象都可以使用setUpdateCallb
  • 数据结构——【堆】

    一 堆的相关概念 1 1 堆的概念 1 堆在逻辑上是一颗完全二叉树 类似于一颗满二叉树只缺了右下角 2 堆的实现利用的是数组 我们通常会利用动态数组来存放元素 这样可以快速拓容也不会很浪费空间 我们是将这颗完全二叉树用层序遍历的方式储存在数
  • 小程序登录授权分析

    登录 小程序可以通过微信官方提供的登录能力方便地获取微信提供的用户身份标识 快速建立小程序内的用户体系 在小程序 微信生态体系中 每个用户会有唯一标识的OpenID和UnionID 使用他们可以帮助开发者优化自己的注册和登录逻辑 毕竟 在中
  • the application was unable to start correctly(0x000007b)解决方案

    什麼是錯誤代碼0xc000007b 如果您在Windows 10 8 7中看到 應用程式無法正確啟動 0xc000007b 錯誤 那麼您來對地方了 0xc000007b應用程式錯誤非常常見 與錯誤代碼0x80070002 0x8007005
  • SSL的“四次握手”

    第一次握手 客户端向服务端发送Client Hello报文 该报文中包含了支持的版本信息 加密组件等 加密组建包括加密算法 秘钥长度等内容 第二次握手 这个阶段服务器会向客户端发送三个报文 服务端收到请求后 如果支持SSL通信 会首先以Se
  • SQL Server数据备份

    SQL Server数据库 自动 手动 备份 sql 数据库自动备份 一 为备份文件建一个独立文件夹 sql data autobakup 方便区分 Win R 输入services msc进入服务管理界面查找sqlserver服务 复制此
  • pulseaudio使用过程中遇到的问题

    W pulseaudio main c This program is not intended to be run as root unless system is specified E pulseaudio core util c H
  • Self-study Python Fish-C Note-5 P20-P26 (part2)

    python 中的列表 Part 2 本文主要讲解了python中列表的使用 本文为自学B站上鱼C的python课程随手做的笔记 如有问题 欢迎大家批评指正 原视频链接 https www bilibili com video BV1c44
  • LeetCode算法心得——和可被 K 整除的子数组(前缀和+HashMap)

    大家好 我是晴天学长 同余定理的应用 需要的小伙伴可以关注支持一下哦 后续会继续更新的 1 和可被 K 整除的子数组 题目描述 给定一个整数数组 A 返回其中元素之和可被 K 整除的 连续 非空 子数组的数目 示例 输入 A 4 5 0 2
  • 【极简数据结构】快速了解并实现顺序表,速通玩家的最爱

    顺序表目录 前言 一 线性表 二 顺序表 1 顺序表的概念 2 接口函数 顺序表 初始化 顺序表 尾插 顺序表 打印 顺序表 销毁 顺序表 尾删 顺序表 头插 和 顺序表 扩容 优化顺序表 尾删 顺序表 头删 顺序表 查找 顺序表 任意po
  • Android如何安全的关闭线程

    正常情况下 当线程中的run方法执行完毕后 线程是会自动关闭 不需要我们手动去关闭的 如 new Thread new Runnable Override public void run 执行操作 start 该线程在run方法中的操作执行
  • C语言经典100例题(22)--两个乒乓球队进行比赛,各出三人。甲队为a, b, c三人,乙队为x, y, z三人。已抽签决定//比赛名单,有人向队员打听比赛的名单.a说他不和x比,c说他不和x, z

    目录 题目 问题分析 代码 运行结果 题目 两个乒乓球队进行比赛 各出三人 甲队为a b c三人 乙队为x y z三人 已抽签决定比赛名单 有人向队员打听比赛的名单 a说他不和x比 c说他不和x z比 请编程序找出三队赛手的名单 问题分析
  • linux屏蔽海外流量的两种方法

    方法一 使用大神的开源脚本 屏蔽指定国家地区的IP访问 wget https raw githubusercontent com iiiiiii1 Block IPs from countries master block ips sh s