notebooks
  • notebooks
  • _planning
    • 2022 OKR
    • basketball
    • swimming
  • communication
    • Dubbo
    • Kafka
    • Messaging
    • RPC
    • Thrift
  • computation
    • map-reduce
  • cs-basic-knowledge
    • computer-architecture
    • data-structure-and-algorithms
    • networks
    • os
  • devops
    • Docker
    • Linux
    • Prometheus
    • operations
    • security
    • trouble-shooting
  • distributed-knowledge
    • Zookeeper_CMD
    • distributed-system
  • game-engine
    • Unity
  • others
    • appium使用
  • protocols
    • http(s)协议
    • 官方链接
    • sip
  • storage
    • Elasticsearch
    • GuavaCache
    • MySQL
    • MySQL_CMD
    • NoSQL
    • Redis
    • Redis_CMD
  • system-design
    • system-design
  • tools
    • Git
    • IDEA
    • Mac
    • VScode
    • Vim
  • _working
    • doc-template
      • backend-design-review
      • correction-of-error
      • service-review
    • process
      • domain-backup
      • oncall
  • blogs
    • history
      • 8088/8086微处理器
      • 8088/8086指令系统
      • CSS-DOM
      • CSS定位
      • CSS工作原理
      • CSS控制背景
      • CSS浮动布局
      • CSS盒模型
      • Chrome开发者工具使用方法
      • DOM
      • Django Model模型层学习
      • Django-REST-framework Serializers学习
      • Django-REST-framework Views和ViewSets学习
      • Django View视图层学习
      • Gvim下Emmet安装及使用教程
      • HTTP协议简介
      • HashMap原理初探
      • JavaScript简史
      • JavaScript语法
      • Java内存模型和GC机制
      • Java基础——Lambda学习
      • Java基础——方法引用
      • Java基础——枚举类型
      • Java类加载机制
      • KMP算法
      • Kafka学习
      • Linux下用命令行编译Java程序
      • MathJax简介和基本用法
      • Python实现常见数据结构
      • Python装饰器总结
      • TCP协议的三次握手和四次挥手
      • Thrift学习
      • asyncio学习
      • markdown的常用语法
      • 修改hosts文件实现翻墙
      • 充实文档的内容
      • 关系数据库
      • 关系数据库标准语言SQL(一)
      • 关系数据库标准语言SQL(二)
      • 关系数据理论
      • 关系查询处理和查询优化
      • 内联元素和块级元素
      • 剑指offer算法题练习
      • 动态创建标记
      • 图形化用户界面
      • 在Eclipse中使用Maven构建Java Web项目
      • 增加微博秀遇到的一些问题
      • 处理机调度
      • 如何用github和hexo搭建个人博客
      • 存储管理
      • 存储系统的层次结构
      • 学习模仿lionhit网站首页的过程总结
      • 实用的GitHub小技巧
      • 并发控制
      • 循环与分支程序设计
      • 指令系统的设计
      • 指令级并行及其开发——硬件方法
      • 搭建自己的VPN服务器
      • 操作系统用户界面
      • 数据库安全性
      • 数据库完整性
      • 数据库恢复技术
      • 数据库绪论
      • 数据库编程
      • 数据库设计
      • 数据抽象
      • 文件系统
      • 文法和语言
      • 最佳实践
      • 案例研究:JavaScript图片库
      • 案例研究:图片库改进版
      • 汇编语言程序格式
      • 汇编语言程序设计基础知识
      • 流水线技术
      • 深度优先搜索和广度优先搜索
      • 牛客网——网易2017秋招编程题集合
      • 用JavaScript实现动画效果
      • 第一篇博客
      • 经典排序算法总结(Java实现)
      • 经典查找算法总结(Java实现)
      • 综合示例
      • 编译原理引论
      • 背包、队列和栈
      • 虚拟机安装Linux系统及常用软件
      • 计算机操作系统绪论
      • 计算机系统结构的基础知识
      • 设备管理
      • 设计模式之代理模式
      • 设计模式之单例模式
      • 设计模式之工厂模式
      • 设计模式之策略模式
      • 设计模式之观察者模式
      • 词法分析
      • 进程管理
      • 闭包
      • 阻止Google自动跳转到香港服务器的方法
      • 项目部署过程
  • programming-language
    • C#
      • C#
    • C&C++
      • C
    • C&C++
      • C++
    • Java
      • GoogleGuice
    • Java
      • JVM
    • Java
      • Java
    • Java
      • Maven
    • Java
      • Mybatis
    • Java
      • Spring知识
    • Java
      • SpringBoot
    • Java
      • Tomcat
    • Python
      • Python
    • Shell
      • Shell
  • wheels
    • dcc
      • 产品调研
      • 方案设计
    • red-envelope
      • 方案设计
    • short-url
      • 短链接服务
    • sso
      • 方案设计
Powered by GitBook
On this page
  • 概念
  • 搭建过程
  • 注册DigitalOcean账号
  • 创建VPS
  • SSH登录服务器
  • 服务器端安装Shadowsocks
  • 本机安装Shadowsocks
  • 打开系统代理通道
  • 安装BBR实现加速VPS
  • 概念
  • 安装方法
  1. blogs
  2. history

搭建自己的VPN服务器

Previous指令级并行及其开发——硬件方法Next操作系统用户界面

Last updated 3 years ago

接触VPN还是从室友那里听说的。想到自己也经常访问国外网站,租一个VPS也不贵,所以就决定折腾一下。

概念

VPS(Virtual Private Server): 虚拟专用服务器,是指通过虚拟化技术在独立服务器中运行的专用服务器。每个使用VPS技术的虚拟独立服务器拥有各自独立的公网IP地址、操作系统、硬盘空间、内存空间、CPU资源等,还可以进行安装程序、重启服务器等操作,与运行一台独立服务器完全相同。()

VPN(Vitrual Private Network): 虚拟专用网络。在公用网络上建立专用网络,进行加密通讯。在企业网络中有广泛应用。VPN网关通过对数据包的加密和数据包目标地址的转换实现远程访问。VPN有多种分类方式,主要是按协议进行分类。VPN可通过服务器、硬件、软件等多种方式实现。()

搭建过程

我的操作系统是Ubuntu16.04 LTS,我选择租赁公司的虚拟服务器。价格每月5刀,如果是学生的话可以用学校邮箱申请GitHub student pack,里面有50刀DigitalOcean优惠码,够你免费用很久。

注册DigitalOcean账号

很简单,主要是中间第二步,没有国外信用卡就选择PayPal方式,PayPal类似支付宝,你可以申请一个PayPal账号然后添加自己的国内银行卡号。

创建VPS

登陆后,选择右上角Create Droplet

操作系统我选的是Ubuntu 14.04×64

线路我选择的是New Youk 1(移动联通电信适合什么线路可以Google一下)

套餐我选的是每月5刀的那个套餐,1 CPU、512内存、20GB硬盘、1000G的流量,配置对于搭建VPN绰绰有余。当然搭建博客可能不够。

没有特殊服务就不选,填上服务器名字,也可以默认

最后确认点击最下面Create

等待半分钟就会创建成功

SSH登录服务器

SSH 是一种远程登录计算机系统的协议,它帮助我们实现在服务器端的VPN配置。

终端输入:

ssh root@your_domain_or_ip

ip可以到你的DigitalOcean账号上查看。

第一次登录会让你修改密码,原密码DigitalOcean公司会发给你的注册邮箱上。

服务器端安装Shadowsocks

SSH登录服务器后 终端执行:

apt-get install python-pip
pip install shadowsocks 

创建shadowsocks.json配置文件:

vi /etc/shadowsocks.json

在文件里面写入一下内容:

{
		    "server":"your_server_ip",
			"server_port":8388,
			"local_address": "127.0.0.1",
			"local_port":1080,
			"password":"your_password",
			"timeout":300,
			"method":"aes-256-cfb",
			"fast_open": false
}

启动shadowsocks

ssserver -c /etc/shadowsocks.json -d start

本机安装Shadowsocks

我选择的是安装命令行shadowsocks,执行

apt-get install python-pip
pip install shadowsocks

可能会提示要安装其他一些依赖,按提示安装即可。

启动shadowsocks:

sslocal -s 11.22.33.44 -p 8388 -k "123456" -l 1080 -t 600 -m aes-256-cfb""

以上IP、端口、密码改下即可。

图方便可以先创建配置文件:

vi /home/lewis/shadowsocks.json

写入:

{
				"server":"11.22.33.44",
				"server_port":8388,
				"local_port": 1080,
				"password":"123456",
				"timeout":600,
				"method":"aes-256-cfb"
}

然后执行:

sslocal -c /home/lewis/shadowsocks.json

就可以打开ss了。

打开系统代理通道

也可以浏览器设置里设置代理。

完毕后就可以访问墙外的世界啦~

安装BBR实现加速VPS

概念

BBR拥塞控制算法,由Google开发其目的就是要尽量跑满带宽,并且尽量不要有排队的情况。简单一点 就是高延迟高丢包的tcp环境下的优化算法。

安装方法

首先ssh登录服务器:

ssh root@your_server_ip

下载及安装linux新内核(vps操作系统为64位ubuntu) 新内核已加入了该算法,安装即可享用:

wget http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.9/linux-image-4.9.0-040900-generic_4.9.0-040900.201612111631_amd64.deb
dpkg -i linux-image-4.9.0*.deb
dpkg -l|grep linux-image
apt-get purge

更新grub系统引导文件及重启:

update-grub
reboot

配置BBR文件,开启BBR:

echo "net.core.default_qdisc=fq" >> /etc/sysctl.conf
echo "net.ipv4.tcp_congestion_control=bbr" >> /etc/sysctl.conf
sysctl –p

检查是否开启BBR:

sysctl net.ipv4.tcp_available_congestion_control
lsmod | grep bbr

参考教程:

并不是打开ss就可以用了,还需要设置系统的代理设置。 例如我的Ubuntu16.04 LTS系统:

维基百科
维基百科
DigitalOcean
Tong's Guide:建立自己的VPN服务器
ubuntu 安装 bbr 更好的加速你的国外VPS
什么是tcp bbr?
搭建自己的VPN服务器1