Total Pageviews

Tuesday 24 September 2019

轻量级开源VPN软件-qtun

(客户端程序只支持linux desktop os)

网络模型与协议

  1. OSI模型
  2. IPV4数据包结构
  3. TCP数据包结构
  4. UDP数据包结构
  5. ICMP数据包结构

Jump The Great Firewall系列

  1. Jump The Great Firewall【step1 创建虚拟网卡】
  2. Jump The Great Firewall【step2 回应收到的ping包】
  3. Jump The Great Firewall【step3 建立TCP链接】
  4. Jump The Great Firewall【step4 包装read/write函数】
  5. Jump The Great Firewall【step5 简陋的翻墙】
  6. Jump The Great Firewall【step6 支持多客户端】
  7. Jump The Great Firewall【step7 支持加密压缩】
  8. Jump The Great Firewall【step8 系统消息与活跃表】
  9. Jump The Great Firewall【step9 内存池】
  10. Jump The Great Firewall【step10 syslog】
  11. Jump The Great Firewall【step11 数据分片】
  12. Jump The Great Firewall【step12 支持UDP协议】
  13. Jump The Great Firewall【step13 支持Windows】

部署

server端

  1. 下载代码
  2. 安装cmake和gcc
  3. cd src && mkdir build && cd build
  4. cmake -DCMAKE_BUILD_TYPE=RELEASE ..
  5. make
  6. 使用命令sudo nohup ./step11 -l10.0.1.1 -g 2>&1 1>/dev/null &运行服务器端程序并绑定到默认端口6687,这里的step11为当前最新版本,这里可以使用-p参数绑定到其他端口
  7. 修改/etc/sysctl.conf,增加或修改net.ipv4.ip_forward = 1,使用命令sysctl -p使其生效
  8. 检查iptables中的nat表是否支持tun0网卡转发,若不支持则使用命令sudo iptables -t nat -A POSTROUTING -o tun0使其支持

client端

  1. 下载代码
  2. 安装cmake和gcc
  3. cd src && mkdir build && cd build
  4. cmake -DCMAKE_BUILD_TYPE=RELEASE ..
  5. 使用命令sudo nohup ./step11 -l10.0.1.2 -s服务器IP -g 2>&1 1>/dev/null &连接服务器,这里的step11为当前最新版本
  6. 使用命令sudo route add 服务器IP gw 默认网关添加到服务器的路由
  7. 使用命令sudo route del -net 0.0.0.0/0 dev eth0删除默认路由
  8. 使用命令sudo route add -net 0.0.0.0/0 dev tun0将默认路由指向tun0网卡
  9. 使用诸如chnroutes工具创建国内路由到原默认网关

可用参数

短命令长命令后接参数默认值说明
-a--aes密钥文件路径AES加密,若指定该参数则使用该密钥进行加密通信,密钥长度必须为324048字节
-d--des密钥文件路径DES加密,若指定该参数则使用该密钥进行加密通信,密钥长度必须为162432字节
-g--gzip若指定该参数则使用gzip进行压缩
-m--mask掩码长度24该参数指定了服务端所划分的子网网段
-l--localip本地IP地址该IP地址被绑定到虚拟网卡tunn
-s--server服务器IP地址或域名该参数指定了服务器的IP地址或域名,若没有指定该参数则当前运行的是服务端
-p--port端口号6687若当前运行的是服务端则为其绑定的端口号,否则为连接到服务器的端口号
-v--log-levellog等级LOG_WARNING对应的值详见syslog.h中定义的值
-t--internal-mtumtu值1492内部使用的mtu值,过大的数据包将被分片
-u--udp若指定该参数则使用UDP协议进行通信
from https://github.com/hermixy/qtun

No comments:

Post a Comment