Preface
作为一名开发人员, 日常离不开 Google, 那么在这之前, 必须要先学会如何代理.
本人 Linode 邀请码:
79e24952d46644605b071a55c4fda3b23e1d1a5a
代理方式介绍
核心原理都一样, 如上方图所示. 推荐使用 Trojan.
- Shadowsocks: 过去比较常用, 据说如今 GFW 已经能够识别出, 所以经常掉链子.
- V2ray: Go 语言开发的高性能网络工具集, 服务端客户端于一体, 功能比较多, 支持 Shadowsocks 协议, 属于目前比较流行的科学上网软件.
- Trojan: 专门为绕过 GFW 而生的新一代科学上网软件, 由 C++ 编写, 需要域名以及证书伪装成 HTTPS.
难度 | 稳定: Shadowsocks
< V2ray
< Trojan
VPS选择
VPS 厂商众多, 其他的我不多说.
- Linode VPS 大厂了, 价格不算便宜, 我用的5$每月, 稳定网速快, 推荐. 邀请码:
79e24952d46644605b071a55c4fda3b23e1d1a5a
- BandwagonHOST 搬瓦工(已被墙), 便宜, 性价比高
- 阿里云香港ECS, 优点不说了, 缺点就是太贵, 如果只是查查资料或者玩游戏的, 可以买按流量计费的
准备工作
准备一台VPS
博主选择Linode
博主的邀请码: 79e24952d46644605b071a55c4fda3b23e1d1a5a
SSH无密码登录VPS (可选)
参考 免密码登录远程服务器
各大代理安装与使用
安装方式各种各样. . .同意 推荐使用 Docker 镜像安装.
Shadowsocks
服务端
拉取镜像:
Showdowsocks
镜像: https://hub.docker.com/r/mritd/shadowsocks/
1 | docker pull mritd/shadowsocks:latest |
运行:
1 | docker run -dt --name ssserver --restart=always -p 6443:6443 mritd/shadowsocks:latest -m "ss-server" -s "-s 0.0.0.0 -p 6443 -m aes-256-cfb -k 123456 --fast-open" |
ss命令说明:
-s
: 监听服务ip, 为服务器本地-p
: 端口-m
: 加密算法-k
: 密码--fast-open
: 开启TCPfast-open
脚本一键安装
更多精彩被容请移步到 https://teddysun.com/
root用户执行:
1 | wget --no-check-certificate -O shadowsocks-all.sh https://raw.githubusercontent.com/teddysun/shadowsocks_install/master/shadowsocks-all.sh |
安装完成后, 脚本提示如下:
1 | Congratulations, your_shadowsocks_version install completed! |
卸载方法:
若已安装多个版本, 则卸载时也需多次运行(每次卸载一种)
使用root用户登录, 运行以下命令:
1 | ./shadowsocks-all.sh uninstall |
启动脚本:
启动脚本后面的参数含义, 从左至右依次为: 启动, 停止, 重启, 查看状态.
Shadowsocks-Python 版:/etc/init.d/shadowsocks-python start | stop | restart | status
ShadowsocksR 版:/etc/init.d/shadowsocks-r start | stop | restart | status
Shadowsocks-Go 版:/etc/init.d/shadowsocks-go start | stop | restart | status
Shadowsocks-libev 版:/etc/init.d/shadowsocks-libev start | stop | restart | status
各版本默认配置文件:
Shadowsocks-Python 版:/etc/shadowsocks-python/config.json
ShadowsocksR 版:/etc/shadowsocks-r/config.json
Shadowsocks-Go 版:/etc/shadowsocks-go/config.json
Shadowsocks-libev 版:/etc/shadowsocks-libev/config.json
客户端
官网各大客户端: https://shadowsocks.org/en/download/clients.html
Docker 客户端:
1 | docker run -dt --name ssclient --restart=always -p 1080:1080 mritd/shadowsocks:latest -m "ss-local" -s "-s server-ip -p 6443 -b 0.0.0.0 -l 1080 -m aes-256-cfb -k 123456 --fast-open" |
多用户管理
https://github.com/mmmwhy/ss-panel-and-ss-py-mu :
https://github.com/Ehco1996/django-sspanel
V2Ray
项目地址: https://github.com/v2ray/v2ray-core
参考文档: https://toutyrater.github.io/ (已被墙)
一键安装:
https://github.com/Jrohy/multi-v2ray
https://github.com/233boy/v2ray
服务端
docker-compose.yml
:
1 | version: '3.7' |
config.json
:
1 | { |
客户端
docker-compose.yml
:
1 | version: '3.7' |
client-config.json
:
1 | { |
其他客户端:
多用户管理UI
https://blog.sprov.xyz/2019/08/03/v2-ui/
Trajon
服务端
https://www.atrandys.com/category/kxsw/trojan / https://github.com/atrandys/trojan
https://github.com/mark-logs-code-hub/trojan-wiz
或者是一下我写的…:
1 | wget -N --no-check-certificate 'https://raw.githubusercontent.com/masteranthoneyd/about-shell/master/trojan.sh' && chmod +x trojan.sh && ./trojan.sh $DOMAIN |
将 $DOMAIN
换成自己的域名.
客户端
docker-compose.yml
:
1 | version: '3.7' |
config
文件夹中应该包含Json配置文件以及证书.
config.json
:
1 | { |
Just My Socks
搬瓦工官方机场: https://justmysocks.net/
使用: https://blog.shuziyimin.org/840
将流量转发到代理
上面所介绍的代理软件基本上客户端都是监听本地1080端口, 并且是 Sock5 协议, 所以需要将 HTTP 流量转发到本地的1080端口. 好处是解耦了代理的实现, 可以随时更换代理软件, 比如将 V2ray 换成 Trojan, 只需要更换客户端.
浏览器转发
推荐使用 Chrome 或者使用 Chrome 内核的浏览器如360. 其他浏览器自行研究.
这种方式适合所有桌面版系统平台, 有些代理客户端可以设置全局流量转发比如 Windows 的 shadowsocks-win, 不建议将全局流量转发作为常用设置, 不好控制. 而使用浏览器插件可控度高, 有些网站没有被墙比如 Github, 但是加载速度比较慢, 可在浏览器中直接强制走代理.
SwitchyOmega插件安装
SwitchyOmega 可以将浏览器的流量转发到我们本地的 Socks5 端口.
安装方式:
- 从 Chrome Web Store 下载, 首先你得能访问 Google, 这是一个悖论
- 从 Releases 页面下载离线安装包, 浏览器地址打开
chrome://extensions/
, 启用开发者模式,将下载的安装包拖进去 - 无法安装的参考一下这里: 四种谷歌浏览器扩展插件安装方法,完美解决程序包无效问题!
设置代理地址
安装好插件会自动跳到设置选项, 有提示你可以跳过. 左边新建情景模式-选择代理服务器-比如命名为shadowProxy(叫什么无所谓)其他默认之后创建, 之后在代理协议选择 SOCKS5, 地址为127.0.0.1
,端口默认1080
. 然后保存即应用选项.
设置自动切换
接着点击自动切换 ( Auto switch)上面的不用管, 在按照规则列表匹配请求后面选择刚才新建的SS, 默认情景模式选择直接连接. 点击应用选项保存. 再往下规则列表设置选择AutoProxy
然后将 https://raw.githubusercontent.com/gfwlist/gfwlist/master/gfwlist.txt 填进去, 点击下面的立即更新情景模式, 会有提示更新成功!
点击浏览器右上角的 SwitchyOmega 图标, 下面选择自动切换, 然后打开 google.com 试试, 其他的就不在这贴图了.
GenPAC全局代理
如果不想每个浏览器都要设置代理, 可以通过GenPAC实现全局代理.
安装
pip:1
2
3sudo apt-get install python-pip python-dev build-essential
sudo pip install --upgrade pip
sudo pip install --upgrade virtualenv
GenPAC:1
2sudo pip install genpac
sudo pip install --upgrade genpac
设置全局代理
1、进入终端, Ctrl+Alt+T, cd到你希望生成文件存放的位置.
例如:1
cd /home/ybd/Data/application/shadowsocks
2、执行下面的语句:1
sudo genpac --proxy="SOCKS5 127.0.0.1:1080" --gfwlist-proxy="SOCKS5 127.0.0.1:1080" -o autoproxy.pac --gfwlist-url="https://raw.githubusercontent.com/gfwlist/gfwlist/master/gfwlist.txt"
注意:
上面语句中127.0.0.1:1080
应按照自己的情况填写.
如果出现下面这种报错:1
fetch gfwlist fail. online: https://raw.githubusercontent.com/gfwlist/gfwlist/master/gfwlist.txt local: None
那么换成执行下面的语句:1
sudo genpac --proxy="SOCKS5 127.0.0.1:1080" -o autoproxy.pac --gfwlist-url="https://raw.githubusercontent.com/gfwlist/gfwlist/master/gfwlist.txt"
如果出现base64 decoding fail .
, 安装其他版本:1
2
3sudo pip install https://github.com/JinnLynn/genpac/archive/master.zip
sudo pip install --upgrade https://github.com/JinnLynn/genpac/archive/master.zip
sudo pip uninstall genpac
3、全局代理
系统设置 –> 网络 –> 网络代理
“方法”选择“自动”
“配置URL”填写:file:///home/ybd/Data/application/shadowsocks/autoproxy.pac
点击“应用到整个系统”, 接下来可以愉悦的跨过墙了~
Proxychains 代理
https://github.com/rofl0r/proxychains-ng
这个是最新版的proxychains, 下面通过apt安装的是3.1版本的.
安装proxychains:1
2
3sudo apt install proxychains
最新版为 sudo apt install proxychains4, 配置文件在/etc/proxychains4.conf, 命令为proxychains4
配置proxychains:
编辑/etc/proxychains.conf
, 最下面有一行socks4 127.0.0.1 9050
, 把这一行注释掉, 添加一行socks5 127.0.0.1 1080
测试:
1 | proxychains curl www.google.com |
使用:
用命令行启动软件, 在前面加上proxychains, 如:1
proxychains firefox
使用shadowsocks
+proxychains
代理打开新的Firefox实现浏览器翻墙.
也可以通过输入proxychains bash
建立一个新的shell
, 基于这个shell
运行的所有命令都将使用代理.
如果需要配置不输出代理信息, 编辑
/etc/proxychains.conf
将#quiet_mode
改为quiet_mode
.
Privoxy
Privoxy是一款带过滤功能的代理服务器, 针对HTTP、HTTPS协议. 通过Privoxy的过滤功能, 用户可以保护隐私、对网页内容进行过滤、管理cookies, 以及拦阻各种广告等. Privoxy可以用作单机, 也可以应用到多用户的网络.
1 | sudo apt install privoxy |
安装好后进行配置, Privoxy的配置文件在/etc/privoxy/config
, 这个配置文件中注释很多.
找到4.1. listen-address
这一节, 确认监听的端口号, 如果有内网地址可以监听 0.0.0.0:8118
.
找到5.2. forward-socks4, forward-socks4a, forward-socks5 and forward-socks5t
这一节, 加上如下配置, 注意最后的点号.
重启一下Privoxy
1 | sudo /etc/init.d/privoxy restart |
终端体验:
1 | export http_proxy="127.0.0.1:8118" && export https_proxy="127.0.0.1:8118" |
在/etc/profile
的末尾添加如下两句.
1 | export http_proxy="127.0.0.1:8118" |
网络优化
Google BBR
1 | wget --no-check-certificate https://github.com/teddysun/across/raw/master/bbr.sh && chmod +x bbr.sh && ./bbr.sh |
或者使用下面这个开始 BBR+.
https://github.com/chiakge/Linux-NetSpeed :
1 | wget -N --no-check-certificate "https://raw.githubusercontent.com/chiakge/Linux-NetSpeed/master/tcp.sh" && chmod +x tcp.sh && ./tcp.sh |
更换Linode内核
谷歌开发的TCP加速外挂, 目前已集成到最新的Linux内核.
Linode 不能直接命令更换内核, 需要到管理后台设置:
安装完重启后输入
1 | lsmod | grep bbr |
出现 tcp_bbr
即说明 BBR 已经启动.
手动安装
如果是最新内核:
1 | echo "net.core.default_qdisc=fq" >> /etc/sysctl.conf |
开启TCP Fast Open
这个需要服务器和客户端都是Linux 3.7+的内核, 一般Linux的服务器发行版只有debian jessie有3.7+的, 客户端用Linux更是珍稀动物, 所以这个不多说, 如果你的服务器端和客户端都是Linux 3.7+的内核, 那就在服务端和客户端的vi /etc/sysctl.conf
文件中再加上一行.
1 | echo "net.ipv4.tcp_fastopen = 3" | sudo tee -a /etc/sysctl.conf |
然后把vi /etc/shadowsocks.json
配置文件中"fast_open": false
改为"fast_open": true
. 这样速度也将会有非常显著的提升.
TCP优化
1.修改文件句柄数限制
如果是ubuntu/centos均可修改/etc/sysctl.conf
找到fs.file-max
这一行, 修改其值为1024000
, 并保存退出. 然后执行sysctl -p
使其生效
修改vi /etc/security/limits.conf
文件, 加入
1 | * soft nofile 512000 |
针对centos,还需要修改vi /etc/pam.d/common-session
文件, 加入session required pam_limits.so
2.修改vi /etc/profile
文件, 加入ulimit -SHn 1024000
然后重启服务器执行ulimit -n
, 查询返回1024000即可.
1 | sysctl.conf报错解决方法 |
使用特殊端口
GFW会通过某些手段来减轻数据过滤的负荷, 例如特殊的端口如ssh, ssh默认端口给ss用了那么久必须修改我们登录服务器的端口.
修改SSH配置文件:
1 | vi /etc/ssh/sshd_config |
找到#port 22
, 将前面的#
去掉, 然后修改端口 port 2333
(自己设定).
然后重启SSH:
1 | service ssh restart |
VPS Security
修改SSH登录端口
Ubuntu
1、用下面命令进入配置文件vi /etc/ssh/sshd_config
2、找到#port 22
, 将前面的#
去掉, 然后修改端口 port 12345
(自己设定).
3、然后重启ssh服务
1 | #Debian/ubuntu /etc/init.d/ssh restart or service ssh restart |
CentOS
1、临时关闭SELinux:
1 | setenforce 0 |
2、修改SSH端口
1 | vi /etc/ssh/sshd_config |
3、防火墙中放行新加入端口
1 | firewall-cmd --permanent --add-port=2333/tcp |
4、用该命令查询
1 | firewall-cmd --permanent --query-port=2333/tcp |
如果是yes
就是添加成功, 如果是no就是没成功
5、成功后重载防火墙
1 | firewall-cmd --reload |
6、关闭SELinux
查看SELinux状态SELINUX
, 如果是enabled
就是开启状态
vi /etc/selinux/config
修改SELINUX=disabled
最后重启vps试试用新的2333
端口登录, 如果登录成功再vi /etc/ssh/sshd_config
把Port 22
端口删除, 再重启ssh服务就好了.
使用密钥登录SSH
1、服务端生成密钥
1 | #生成SSH密钥对 |
2、复制密钥对
也可以手动在客户端建立目录和authorized_keys, 注意修改权限
1 | #复制公钥到无密码登录的服务器上,22端口改变可以使用下面的命令 |
3、关闭密码登陆(编辑/etc/ssh/sshd_config
)
1 | #禁用密码验证 |
4、重启SSH
1 | #RHEL/CentOS系统 |
防火墙
Ubuntu防火墙UFW
1 | ufw enable |
CentOS
1 | # 显示状态 |
DDOS deflate
DDOS deflate
是一款免费的用来防御和减轻DDOS攻击的脚本. 它通过netstat监测跟踪创建大量网络连接的IP地址, 在检测到某个结点超过预设的限制时, 该程序会通过APF或IPTABLES禁止或阻挡这些IP.
安装:
1 | wget http://www.moerats.com/usr/down/DDOS/deflate.sh && \ |
配置文件/usr/local/ddos/ddos.conf
1 | ##### Paths of the script and other files |
将上述配置文件修改完成后, 使用命令启动即可
1 | ddos -d |
Ubuntu中可能会报错:
1 | root@localhost:~# ddos -d |
因为启动大多数为 bash 脚本, 而 Ubuntu 的默认环境为 dash, 所以需要使用 dpkg-reconfigure dash, 选择 NO, 切换为 bash 运行脚本:
1 | dpkg-reconfigure dash |
fail2ban防暴力攻击
1 | sudo apt install fail2ban |
vDDoS(只支持CentOS和CloudLinux)
https://github.com/duy13/vDDoS-Protection
CCKiller
https://github.com/jagerzhang/CCKiller
VPS Speed Test
speedtest
下载:
1 | wget https://raw.githubusercontent.com/sivel/speedtest-cli/master/speedtest.py && \ |
运行:
1 | ./speedtest.py |
结果:
1 | [root@li1890-191 ~]# ./speedtest.py |
speedtest-cli
pip方式安装
1 | pip install speedtest-cli |
或github安装
1 | git clone https://github.com/sivel/speedtest-cli.git |
用法:
1、list
根据距离显示所有的节点服务器列表.
2、列出所有北京节点服务器
1 | [root@li1890-191 ~]# speedtest-cli --list | grep Beijing |
3、选择节点测试下载速度
1 | speedtest-cli --server=6611 |
Finally
低调服用. . .