Linux智能分流

简介: 由于公司开发人员需要,需要在本地路由系统(openwrt)上面实现分流,将访问GitHub的流量通过海外节点加速经过实验发现可以用两种方法实现 - iptables规则 - 路由策略特此记录,以供参考

环境准备

1、通过iptables实现智能分流

1.1 开启流量转发

$ cat /etc/sysctl.d/30-ipforward.conf
net.ipv4.ip_forward=1

net.ipv6.conf.all.forwarding = 1

net.ipv4.tcp_congestion_control=westwood

net.ipv4.tcp_syn_retries = 5

net.ipv4.tcp_synack_retries = 5

编辑完成后,执行以下命令使变动立即生效

$ sysctl -p

1.2 下载ip地址表

wget -c http://ftp.apnic.net/stats/apnic/delegated-apnic-latest

cat delegated-apnic-latest | awk -F '|' '/CN/&&/ipv4/ {print $4 "/" 32-log($5)/log(2)}' | cat > cn_rules.conf

1.3 创建ipset,将下载好的IP导入到ipset中

ipset create -n china hash:net maxelem 65536

for ip in $(cat cn_rules.conf); do ipset add china $ip; done

# 查看
ipset list china

1.4 创建路由策略

ip route add 0.0.0.0/0 dev tun0 table tunnel

ip route show table main | grep -Ev ^default | while read ROUTE ; do ip route add table tunnel $ROUTE ; done

1.5 将符合规则的流量打上标记,并在mangle表中处理标记

# 打标记
iptables -t mangle -A PREROUTING -m set ! --match-set china dst -j MARK --set-mark 1

# GitHub访问加速
iptables -t mangle -R PREROUTING 1 -m set ! --match-set china dst -j MARK --set-mark 1

注:tun0网卡为连接海外节点的vpn隧道,具体部署再次不在赘述

2、通过策略路由实现智能分流

# GitHub加速
GATEWAY_IP=$(ip route|grep "default"|awk '{print $3}') # 网关IP
TUN_IP=$(ifconfig tun0 | awk -F '[ :]+' 'NR==2 {print $4}') # tun0网卡IP
ip route del default via "$GATEWAY_IP"
ip route add "$VPN_SERVER" via "$TUN_IP"

# 特殊ip段走网关的IP地址
ip route add "192.168.0.0/16" via "$GATEWAY_IP"
ip route add "172.16.0.0/16" via "$GATEWAY_IP"

for i in $(cat /usr/local/sdwan/config/cn_rules.conf)
do
    ip route add "$i" via "$GATEWAY_IP"
done

ip route del "0.0.0.0/1"
ip route add "0.0.0.0/1" via "$GATEWAY_IP"

注:此教程仅提供思路,具体实现方法请结合实际环境做调整

目录
相关文章
|
9月前
|
存储 传感器 Linux
嵌入式Linux与数据库:构建智能的嵌入式系统
嵌入式系统已经成为我们日常生活中不可或缺的一部分,从智能家居设备到工业自动化,无处不在。在构建智能的嵌入式系统时,数据库扮演着关键的角色,为数据存储、检索和管理提供了强大的解决方案。本文将带您探索嵌入式Linux系统中使用数据库的重要性、方法和实际应用。
180 1
|
9月前
|
人工智能 并行计算 Cloud Native
关于 ANCE OS 兼容性评估 & Linux 智能全栈调优 KeenTune 介绍 | 第 93-94 期
了解兼容性评估工具核心特性、基本工作原理和使用方法及熟悉 Linux 全栈性能调优。
关于 ANCE OS 兼容性评估 & Linux 智能全栈调优 KeenTune 介绍 | 第 93-94 期
|
域名解析 网络协议 Linux
|
3天前
|
安全 网络协议 Linux
linux必学的60个命令
Linux是一个功能强大的操作系统,提供了许多常用的命令行工具,用于管理文件、目录、进程、网络和系统配置等。以下是Linux必学的60个命令的概览,但请注意,这里可能无法列出所有命令的完整语法和选项,仅作为参考
197 2
|
2天前
|
存储 Linux Shell
YUM管理器的命令列表-Linux
YUM管理器的命令列表-Linux
8 0
|
3天前
|
Linux 程序员 计算机视觉
【linux 学习】在Linux中经常用到的cmake、make、make install等命令解析
【linux 学习】在Linux中经常用到的cmake、make、make install等命令解析
16 0
|
3天前
|
Linux
Linux的find命令使用
【5月更文挑战第11天】Linux的find命令使用
15 3
|
3天前
|
监控 Linux 数据处理
|
3天前
|
编解码 Ubuntu Linux