+ All Categories
Transcript
Page 1: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

1.1

1.2

1.2.1

1.3

1.3.1

1.3.2

1.3.3

1.3.4

1.3.5

1.4

1.5

1.5.1

1.5.2

1.6

1.6.1

1.7

1.8

1.9

1.9.1

1.9.2

1.10

1.11

TableofContentsWHY

HOW:shadowsocks服务端

测速speedtest

HOW:shadowsocks客户端

Windows

Linux

MACOS

Android

iOS

WHAT:PACmode

HOW:浏览器代理插件

Firefox

Chrome

HOW:kcptun

DanteSOCKSserver

HOW:ssh

HOW:ocserv

HOW:openwrt

UCI

ChinaDNS+Shadowsocks

HOW:收集

HOW:赞助

1

Page 2: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

科学上网漫游指南

NOTE:指南里的图片若无法显示,请下载PDF:

https://www.gitbook.com/download/pdf/book/lvii/outman

WHY战争即和平

自由即奴役

无知即力量——乔治·奥威尔《1984》

WHY

2

Page 3: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

图片出处:大友克洋《大炮之街》1995

WHAT

图片出处:深入理解GFW:内部结构2010-02-18

HOW

WHY

3

Page 4: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

图片出处:胡武功《告别老西安》

普通用户

介绍常见平台(Windows,MacOSX,android,iOS)科学上网方法:

shadowsocks客户端配置

求知用户

配置浏览器代理插件实现自定义翻墙

搞机用户

介绍shadowsocks和ocservSSLVPN服务的搭建

openwrt+shadowsocks路由器智能科学上网

WHY

4

Page 5: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

WHY

5

Page 6: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

Shadowsocks服务端

使用 shadowsocks-libev软件包来部署Shadowsocks服务端

https://github.com/shadowsocks/shadowsocks-libev

github的 README.md里面详细介绍了不同发行版的安装方法,其他发行版可以参考

README.md方法安装

install

CentOS7介绍Redhat系系统(CentOS7/Fedora25)下安装 shadowsocks-libev安装方法:

手动编译rpm包直接安装copr打包平台编译好的rpm二进制包

rpmbuild

自动动手源码打包,不求人,就几条命令

SPECS文件增加 --disable-documentation编译参数。不再依赖 asciidoc和 xmlto软件包:

+./configure--build=x86_64-redhat-linux-gnu--host=x86_64-redhat-linux-gn

u\

--program-prefix=--disable-dependency-tracking--prefix=/usr--exec-prefix

=/usr\

--bindir=/usr/bin--sbindir=/usr/sbin--sysconfdir=/etc--datadir=/usr/shar

e\

--includedir=/usr/include--libdir=/usr/lib64--libexecdir=/usr/libexec\

--localstatedir=/var--sharedstatedir=/var/lib--mandir=/usr/share/man\

--infodir=/usr/share/info--enable-shared--disable-documentation

创建打包目录:

HOW:shadowsocks服务端

6

Page 7: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

mdkir-pv~/rpmbuild/{SPECS,SOURCES}

安装编译打包相关依赖包:

yuminstall-ygccmakeopenssl-develrpm-buildrpmdevtools

下载SPEC文件:

spec_url='https://raw.githubusercontent.com/lvii/outman/master/shadowsocks/

shadowsocks-libev.spec'

wget-c-nv-t5-T5"$spec_url"-O~/rpmbuild/SPECS/shadowsocks-libev.spec

更新为 X.X.X版本号:

sed-i's/^\(Version:\s\+\).*$/\1X.X.X/g'~/rpmbuild/SPECS/shadowsocks-libe

v.spec

下载源码:

#spectool-l-A-R~/rpmbuild/SPECS/shadowsocks-libev.spec

Source0:https://github.com/shadowsocks/shadowsocks-libev/archive/v2.5.6.ta

r.gz

#spectool-g-A-R~/rpmbuild/SPECS/shadowsocks-libev.spec

Gettinghttps://github.com/shadowsocks/shadowsocks-libev/archive/v2.5.6.tar

.gz

to/root/rpmbuild/SOURCES/v2.5.6.tar.gz

%Total%Received%XferdAverageSpeedTimeTimeTimeCurre

nt

DloadUploadTotalSpentLeftSpeed

1001370137001170--:--:--0:00:01--:--:--

117

1001516k1001516k00377k00:00:040:00:04--:--:--8

52k

编译打包:

HOW:shadowsocks服务端

7

Page 8: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

#rpmbuild-bb--clean~/rpmbuild/SPECS/shadowsocks-libev.spec

......

Checkingforunpackagedfile(s):/usr/lib/rpm/check-files/root/rpmbuild/BU

ILDROOT/shadowsocks-libev-2.5.6-1.el7.centos.x86_64

Wrote:/root/rpmbuild/RPMS/x86_64/shadowsocks-libev-2.5.6-1.el7.centos.x86_

64.rpm

Executing(%clean):/bin/sh-e/var/tmp/rpm-tmp.7m3LGU

+umask022

+cd/root/rpmbuild/BUILD

+cdshadowsocks-libev-2.5.6

+/usr/bin/rm-rf/root/rpmbuild/BUILDROOT/shadowsocks-libev-2.5.6-1.el7.ce

ntos.x86_64

+exit0

Executing(--clean):/bin/sh-e/var/tmp/rpm-tmp.TEQR8H

+umask022

+cd/root/rpmbuild/BUILD

+rm-rfshadowsocks-libev-2.5.6

+exit0

打包完成后:

#tree-F~/rpmbuild

/root/rpmbuild/

├──BUILD/

├──BUILDROOT/

├──RPMS/

│└──x86_64/

│└──shadowsocks-libev-2.5.6-1.el7.centos.x86_64.rpm

├──SOURCES/

│└──v2.5.6.tar.gz

├──SPECS/

│└──shadowsocks-libev.spec

└──SRPMS/

7directories,3files

查看rpm内容:

HOW:shadowsocks服务端

8

Page 9: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

#rpm-qlp~/rpmbuild/RPMS/x86_64/shadowsocks-libev-2.5.6-1.el7.centos.x86_

64.rpm

/etc/default/shadowsocks-libev

/etc/shadowsocks-libev/config.json

/usr/bin/ss-local

/usr/bin/ss-manager

/usr/bin/ss-nat

/usr/bin/ss-redir

/usr/bin/ss-server

/usr/bin/ss-tunnel

/usr/include/shadowsocks.h

/usr/lib/systemd/system/[email protected]

/usr/lib/systemd/system/[email protected]

/usr/lib/systemd/system/[email protected]

/usr/lib/systemd/system/[email protected]

/usr/lib/systemd/system/shadowsocks-libev.service

/usr/lib64/libshadowsocks-libev.la

/usr/lib64/libshadowsocks-libev.so

/usr/lib64/libshadowsocks-libev.so.2

/usr/lib64/libshadowsocks-libev.so.2.0.0

/usr/lib64/pkgconfig

/usr/lib64/pkgconfig/shadowsocks-libev.pc

安装rpm包:

rpm-Uvh~/rpmbuild/RPMS/x86_64/shadowsocks-libev-2.5.6-1.el7.centos.x86_64

.rpm

binary在FedoraProject的copr自动打包平台上创建了RedHat系发行版(Fedora/CentOS)yum仓库:

https://copr.fedorainfracloud.org/coprs/outman/shadowsocks-libev/

编译好的rpm包位于:https://copr-be.cloud.fedoraproject.org/results/outman/shadowsocks-libev/epel-7-x86_64/

打好的rpm包可以直接使用 rpm命令安装,依赖 openssl已系统自带(base软件包组):

HOW:shadowsocks服务端

9

Page 10: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

##CentOS7

rpm-Uvhhttps://copr-be.cloud.fedoraproject.org/results/outman/shadowsocks

-libev/epel-7-x86_64/00493747-shadowsocks-libev/shadowsocks-libev-2.5.6-1.e

l7.centos.x86_64.rpm

##Fedora25

rpm-Uvhhttps://copr-be.cloud.fedoraproject.org/results/outman/shadowsocks

-libev/fedora-25-x86_64/00493747-shadowsocks-libev/shadowsocks-libev-2.5.6-

1.fc25.x86_64.rpm

或是使用yum源安装:

##CentOS7

repo_url='https://copr.fedorainfracloud.org/coprs/outman/shadowsocks-libev/

repo/epel-7/outman-shadowsocks-libev-epel-7.repo'

wget-c-nv-t5-T5"$repo_url"-O/etc/yum.repos.d/outman-shadowsocks-libe

v.repo

yuminstall-yshadowsocks-libev

coprrpmbuild

创建 src.rpm源码包和上面手动编译打包类似,仅仅换用 -bs参数:

#rpmbuild-bs--clean~/rpmbuild/SPECS/shadowsocks-libev.spec

Wrote:/root/rpmbuild/SRPMS/shadowsocks-libev-2.5.6-1.el7.centos.src.rpm

Executing(--clean):/bin/sh-e/var/tmp/rpm-tmp.RovGRv

+umask022

+cd/root/rpmbuild/BUILD

+rm-rfshadowsocks-libev-2.5.6

+exit0

打好的 src.rpm源码包仅包含SPEC文件和源码包:

#rpm-qlp~/rpmbuild/SRPMS/shadowsocks-libev-2.5.6-1.el7.centos.src.rpm

shadowsocks-libev.spec

v2.5.6.tar.gz

将 src.rpm上传到copr平台即可完成打包

HOW:shadowsocks服务端

10

Page 11: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

config查看 shadowsocks-libev包含的配置文件和相关命令:

#rpm-qlshadowsocks-libev|egrep'etc|bin|service'

/etc/default/shadowsocks-libev

/etc/shadowsocks-libev/config.json

/usr/bin/ss-local

/usr/bin/ss-manager

/usr/bin/ss-nat

/usr/bin/ss-redir

/usr/bin/ss-server

/usr/bin/ss-tunnel

/usr/lib/systemd/system/shadowsocks-libev.service

修改默认配置文件:

{

"server":"10.20.30.40",

"server_port":8388,

"local_port":1080,

"password":"your_password",

"timeout":60,

"method":"rc4-md5"

}

设置shadowsocks-libev服务开机自启动:

#systemctlenableshadowsocks-libev

Createdsymlinkfrom/etc/systemd/system/multi-user.target.wants/shadowsock

s-libev.serviceto/usr/lib/systemd/system/shadowsocks-libev.service.

启动shadowsocks-libev服务:

HOW:shadowsocks服务端

11

Page 12: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

#systemctlstartshadowsocks-libev

#systemctlstatusshadowsocks-libev

●shadowsocks-libev.service-Shadowsocks-libevDefaultServerService

Loaded:loaded(/usr/lib/systemd/system/shadowsocks-libev.service;enabl

ed;vendorpreset:disabled)

Active:active(running)sinceTue2016-09-2014:03:19CST;7minago

Docs:man:shadowsocks-libev(8)

MainPID:39565(ss-server)

CGroup:/system.slice/shadowsocks-libev.service

└─39565/usr/bin/ss-server-aroot-c/etc/shadowsocks-libev/con

fig.json-u

Sep2014:03:19centossystemd[1]:StartedShadowsocks-libevDefaultServer

Service.

Sep2014:03:19centossystemd[1]:StartingShadowsocks-libevDefaultServe

rService...

Sep2014:03:19centosss-server[39565]:2016-09-2014:03:19INFO:UDPrela

yenabled

Sep2014:03:19centosss-server[39565]:2016-09-2014:03:19INFO:initiali

zingciphers...rc4-md5

Sep2014:03:19centosss-server[39565]:2016-09-2014:03:19INFO:tcpport

reuseenabled

Sep2014:03:19centosss-server[39565]:2016-09-2014:03:19INFO:udpport

reuseenabled

Sep2014:03:19centosss-server[39565]:2016-09-2014:03:19INFO:listenin

gat192.168.10.199:8388

确认服务进程和端口:

#pgrep-afss-server

39565/usr/bin/ss-server-aroot-c/etc/shadowsocks-libev/config.json-u

#netstat-lntup|grepss-server

tcp0010.20.30.40:83880.0.0.0:*LISTEN39565/ss-ser

ver

udp0010.20.30.40:83880.0.0.0:*39565/ss-ser

ver

HOW:shadowsocks服务端

12

Page 13: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

security

OTA服务端和客户端启用OTA一次认证特性:

https://shadowsocks.org/en/spec/one-time-auth.html

One-timeauthentication(shortenedasOTA)isanewexperimentalfeaturedesignedtoimprovethesecurityagainstCCA.Youshouldunderstandtheprotocolbeforereadingthisdocument.

Bydefault,theserverthatsupportsOTAshouldruninthecompatiblemode.OTAisonlyappliediftheclient'srequestheaderhasaflagset.However,iftheserverswitchonOTAexplicitly,allclientsmustswitchonOTA,otherwiseconnectionswillbedenied.

TheauthenticationmethodisHMAC-SHA1whichhaswidesupportsamongallmajorplatformsandfairlygoodspeed.

Shadowsocks各分支的安全性2016-09-21:https://breakwa11.blogspot.com/2016/09/shadowsocks.html

Shadowsocks开启OTA:http://itony.me/907.html

关于ShadowsocksR和Shadowsocks的安全性

https://www.librehat.com/about-shadowsocks-r-and-the-security-of-shadowsocks/

Shadowsocks通过加入一次验证提高了对抗CCA的安全性,各大ports已经陆续完成了支

持。这里需要重申的是Shadowsocks的目标不是100%bug-free或100%bullet-proof,而是保

证连接轻量快速的同时让主流攻击手段的成本高到一般无法实施。

https://chriszheng.science/2016/03/11/Shadowsocks-libev-one-time-auth/

randomportshadowsocks多端口随机

https://gist.github.com/suikatomoki/89b1221dab19f64ba2b3

远程ss服务端:

HOW:shadowsocks服务端

13

Page 14: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

#ss-server服务端(假设你的目前的服务端ss端口已经监听在23端口):

#-----------开始--------------

iptables-tnat-APREROUTING-ptcp-mmultiport--dport81:1023-jREDIRE

CT--to-ports23

iptables-tnat-APREROUTING-pudp-mmultiport--dport81:1023-jREDIRE

CT--to-ports23

#以下两条命令可选

serviceiptablessave

serviceiptablesrestart

#-----------结束--------------

本地openwrt路由器:

#ss-redir本地端(104.224.156.199自行修改成自己服务器ip):

#-----------开始--------------

iptables-tnat-IOUTPUT1-d104.224.156.199-ptcp--dport23-jDNAT--

to-destination104.224.156.199:81-1023--random

iptables-tnat-IOUTPUT1-d104.224.156.199-pudp--dport23-jDNAT--

to-destination104.224.156.199:81-1023--random

#以下两条命令可选

serviceiptablessave

serviceiptablesrestart

#openwrt

#/etc/init.d/firewallrestart

#-----------结束--------------

可使用 iptables-tnat-L-n--line-numbers命令查看nat规则是否已经生效

networkoptimize

TCPFastOpenhttps://github.com/shadowsocks/shadowsocks/wiki/Optimizing-Shadowsocks

HOW:shadowsocks服务端

14

Page 15: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

net-speeder对于海外高延时的VPS可以安装 net-speeder来提速

https://github.com/snooda/net-speeder

net-speeder作者写的原理介绍:

net-speeder网速优化/加速器(适用于高延迟不稳定链路加速)

HOW:shadowsocks服务端

15

Page 16: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

由于光速的局限性,延迟会比较高(即使光沿直线传播,太平洋一个往返也要一百多毫

秒)。并且由于距离较远,途径路由跳数较多,并且网络拥堵的原因。经常会发生丢包的情

况。

对于平时使用最广泛的TCP协议来讲,发送端发出包后,接收端会回复ACK表示自己收到

了。用这种机制来保证可靠性。但对于高延迟链路来讲,如果每发送一个包都等待应答,那

么大部分时间都在等待数据包到达,而链路则空置了。为此一般会采用滑动窗口技术。即在

窗口满之前,发送端一直发送包,然后收到应答后将确认收到的包从窗口中移除。这样可以

提高链路利用率。

TCP还有一个特性则是拥塞控制。当发送端检测到链路发生丢包时,则会主动缩小窗口大

小以减慢发送速度,避免拥塞。不过对于跳数较多的链路来讲,只要有一个路由不够稳定丢

包,就会被发送端判断为拥塞,从而影响网络速度。

为了解决丢包问题,最简单粗暴的方法就是双倍发送,即同一份数据包发送两份。这样的话

在服务器带宽充足情况下,丢包率会平方级降低。

这种方式下,直接优点是降低丢包率,直接缺点是耗费双倍流量。一些延伸影响是更容易触

发快速恢复逻辑,避免了丢包时窗口缩减过快。一定程度也能提高网络速度。

最近比较忙,空闲时间做了一个最简单的程序,试用效果很好,在一台VPS上测试后发

现,未开启时单线程下载、ssh管道速度在十几K级别。开启后可以达到平均300KB+的速度。效果非常明显。但对于不加速就可以跑满带宽的类型来讲(多线程下载),开启后

反而由于多出来的无效流量,导致速度减半。所以对于多线程/高速链路,这个方案是不适

合的。

目前版本是最简单的逻辑,未来会进行细化(主动触发快速恢复、快速重传等),降低流量

浪费,提升加速效果。

目前程序起名net-speeder相对于修改协议栈来讲,由于后者需要重新升级编译内核,使用

用户态程序部署更方便,稳定性更高,兼容性更好。缺点则是性能开销稍大和自由度有损

失。总体比较起来,个人使用还是使用用户态程序更合适一些,特别是在虚拟机中使用

(OpenVZ,LXC等虚拟机无法自己定制内核)。

install安装方法参考github的 README.md即可,编译完成后,放在后台运行即可:

HOW:shadowsocks服务端

16

Page 17: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

#/root/net-speeder-master/net_speedervenet0"ip"2>&1>/dev/null&

#pgrep-af'net_speedervenet0'

31263/root/net-speeder-master/net_speedervenet0ip

crontabnet_speeder程序运行一段时间会崩溃,所以写了个crontab自动检查启动:

$cat/root/net-speeder-master/net_speeder.cron.sh

#!/bin/bash

/bin/pgrep-af'net_speedervenet0'||/root/net-speeder-master/net_speeder

venet0"ip"2>&1>/dev/null&

crontab任务每隔15分钟运行一次:

#crontab-l

MAILTO=''

*/15****bash/root/net-speeder-master/net_speeder.cron.sh

troubleshooting

ERROR:FailedtoopenDNSresolversocket如果系统禁用ipv6但是 /etc/resolv.conf还有ipv6的DNS地址会导致服务无法启动:

HOW:shadowsocks服务端

17

Page 18: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

#cat/etc/resolv.conf

nameserver8.8.8.8

nameserver2001:4860:4860::8844

nameserver2001:4860:4860::8888

#ss-server-cconfig.json

2016-12-2801:47:39INFO:usingtcpfastopen

2016-12-2801:47:39INFO:initializingciphers...rc4-md5

2016-12-2801:47:39ERROR:FailedtoopenDNSresolversocket

系统已经禁用IPV6:

#ipa

1:lo:<LOOPBACK,UP,LOWER_UP>mtu65536qdiscnoqueuestateUNKNOWNqlen1

link/loopback00:00:00:00:00:00brd00:00:00:00:00:00

inet127.0.0.1/8scopehostlo

valid_lftforeverpreferred_lftforever

2:eth0:<BROADCAST,MULTICAST,UP,LOWER_UP>mtu1500qdiscpfifo_faststate

UPqlen1000

link/etherx4:x1:x4:xa:6a:x0brdff:ff:ff:ff:ff:ff

inet192.168.1.100/24brd192.168.1.255scopeglobaleth0

valid_lftforeverpreferred_lftforever

修改 /etc/resolv.conf配置文件,重启服务,测试恢复正常:

#cat/etc/resolv.conf

nameserver8.8.8.8

#chattr+i/etc/resolv.conf

#ss-server-cconfig.json

2016-12-2801:51:28INFO:usingtcpfastopen

2016-12-2801:51:28INFO:initializingciphers...rc4-md5

2016-12-2801:51:28INFO:tcpportreuseenabled

2016-12-2801:51:28INFO:listeningat192.168.1.100:10000

HOW:shadowsocks服务端

18

Page 19: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

HOW:测速speedtest

traceroute手机上下载【BestTrace】app测试连接翻墙服务节点的路由跳数,并绘制地图:

1. 路由跳数

2. 地图:是否有绕路

Download下载

官方网站下载:https://www.ipip.net/download.html

Windows/MacOSX客户端

android/iOS客户端

googleplay下载:https://play.google.com/store/apps/details?id=net.ipip.traceroute

applestore下载:https://itunes.apple.com/cn/app/best-trace/id1026747589

下图是连接新加坡节点的路由地图:

测速speedtest

19

Page 20: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

测速speedtest

20

Page 21: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

带宽

还有比YouTube1080p更有说服力的么?——简单,粗暴,最有效:

https://youtu.be/UwsZmkrqXxE

视频右键菜单【详细统计信息】查看视频下载速率

iftopLinux可以使用 iftop命令监控连接的带宽: sudoiftop-iwlan0-B-F

45.67.89.0/24

-B设置Byte为单位。默认是bit-F过滤指定网段

按大写 P键,即可暂停,方便查看流量监控:

测速speedtest

21

Page 22: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

Displaypaused4KB488KB732KB977KB1.19MB

└─────────────┴──────────────┴──────────────┴──────────────┴──────────────

45.67.89.10=>fedora.lan596KB366KB295KB

<=11.4KB6.12KB5.02KB

──────────────────────────────────────────────────────────────────────────

TX:cum:78.8MBpeak:5rates:596KB366KB295KB

RX:1.63MB11.4KB11.4KB6.12KB5.02KB

TOTAL:80.4MB607KB607KB373KB300KB

测速speedtest

22

Page 23: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

HOW:shadowsocks客户端

下面主要介绍各个系统下shadowsocks客户端的使用:

WindowsLinuxMacOSXAndroid

HOW:shadowsocks客户端

23

Page 24: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

shadowsocksonWindows注意:请不要使用360/搜狗/QQ...等国内浏览器,它们收集用户访问的URL上报国家

(GFW)

请使用chrome或firefox等开源浏览器

下载download

shadowsocksgithubrelease下载地址:

https://github.com/shadowsocks/shadowsocks-windows/releases

项目master分支:https://github.com/shadowsocks/shadowsocks-windows/tree/master

解压 Shadowsocks-X.X.X.zip得到 Shadowsocks.exe可执行程序,绿色无需安装,直接

运行

.NETFramework依赖

shadowsocks3.3.3之后的版本依赖.NETFramework4.6.2及以上版本

如果运行提示报错,从官网下载 .NETFramework4.6.2离线安装包:

Microsoft.NETFramework4.6.2(OfflineInstaller)forWindows7SP1...

https://www.microsoft.com/en-us/download/details.aspx?id=53344

Version:4.6.2

FileName:NDP462-KB3151800-x86-x64-AllOS-ENU.exe

FileSize:59.1MB

DatePublished:2016-07-20

安装.NETFramework4.5.X/4.6.X

https://msdn.microsoft.com/zh-cn/library/5a4x27ek(v=vs.110).aspx

Windows

24

Page 25: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

hashcheck

请牢记XcodeGhost教训

github每个版本都带有校验值,下面是很早之前基于 2.5.8的示例

2.5.8版本之后github提供hash值,下面是之前在Linux下载的 2.5.6版本MD5哈希校

验:

$md5sumShadowsocks-win-2.5.6.zip

78aa11456e6616b4f419f2f95ebd8efbShadowsocks-win-2.5.6.zip

$md5sumShadowsocks.exe

e8fed3539e5e0e1866a59c444265db57Shadowsocks.exe

Windows上 Ctrl+R运行 powershell使用 CertUtil命令校验:

PSC:\Users\SM>cdD:\soft

PSD:\soft>CertUtil-hashfile.\Shadowsocks-win-2.5.6.zipMD5

MD5哈希(文件.\Shadowsocks-win-2.5.6.zip):

78aa11456e6616b4f419f2f95ebd8efb

CertUtil:-hashfile命令成功完成。

PSD:\soft>CertUtil-hashfile.\Shadowsocks.exeMD5

MD5哈希(文件.\Shadowsocks.exe):

e8fed3539e5e0e1866a59c444265db57

CertUtil:-hashfile命令成功完成。

CertUtil命令支持的哈稀算法: MD2MD4MD5SHA1SHA256SHA384SHA512

CertUtil-hashfilepathToFileToCheck[HashAlgorithm]

CertUtil-hashfileC:\TEMP\MyDataFile.imgMD5

Windows

25

Page 26: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

HOWTO

1. 运行shadowsocks2. 配置代理服务

3. 连接代理服务

4. 开启系统代理

5. 科学上网ing6. 从 GFWList更新本地PAC文件

【运行】shadowsocks

解压下载好的文件:

第一次运行 Shadowsocks.exe会自动打开「编辑服务器」窗口:

Windows

26

Page 27: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

在通知栏图标区域会出现纸飞机图标:

「右键」纸飞机图标会弹出「主菜单」:

【配置】代理服务

shadowsocks服务端配置文件格式:

Windows

27

Page 28: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

{

"server":"45.67.89.10",##服务器IP地址

"server_port":37210,##服务器端口

"password":"V_VL_Fuck_GFW",##服务器密码

"method":"rc4-md5",##加密方案

"timeout":600,

"fast_open":true,

"local_port":7070##本地代理端口(默认1080即可)

}

根据上面的shadowsocks服务器端配置,填写对应客户端配置:

shadowsocks服务端配置 windows客户端对应配置项

"server":"45.67.89.10" 服务器IP地址

"server_port":37210 服务器端口

"password":"V_VL_Fuck_GFW" 服务器密码

"method":"rc4-md5" 加密方案

"local_port":7070 本地代理端口(不用修改,默认1080即可)

【连接】代理服务

填写好配置后,在「服务器」菜单中可以看到刚创建提交的代理服务配置:

选中菜单中的代理服务器配置,确认出现对号[√]后,表示与服务器建立连接

Windows

28

Page 29: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

【启用】系统代理

启动「系统代理」:点击主菜单的【启用系统代理】选项,连接远程服务端:

若不启动「系统代理」上一步成功连接代理服务器后shadowsocks仅创建「SOCKS5代理」

系统代理与SOCKS5代理区别:

系统代理

浏览器的访问请求全部由shadowsocks创建的系统代理处理

浏览器默认不需要任何设置,也无需安装代理插件(Firefox除外)

如果浏览器安装了代理插件,需要禁用代理插件或把插件设置为使用系统代理

SOCKS5代理

Windows

29

Page 30: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

若不【启用系统代理】shadowsocks成功连接代理服务器后,仅创建了「SOCKS5代理」

浏览器需要安装代理插件或设置浏览器的代理配置,才能科学上网

【测试】科学上网

如果代理成功,可以打开Google首页FeelingYourLucky:

【更新】PAC文件

更新PAC文件,点击主菜单的「PAC」选择「从GFWlist更新本地PAC」选项:

Windows

30

Page 31: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

状态及故障诊断

鼠标悬停在通知栏图标会显示当前代理状态:

若代理失败,选择「服务器」菜单中的「编辑服务器」选项,重新确认配置

Windows

31

Page 32: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

网络连接超时,中断导致代理失败,查看日志的详细信息,根据情况重启代理:

security

hash检查工具

微软自家的校验工具MicrosoftFileChecksumIntegrityVerifier( fciv)上一次更新是 2012-08-22:https://www.microsoft.com/en-us/download/details.aspx?id=11533

Windows

32

Page 33: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

图片出处:https://github.com/shadowsocks/shadowsocks-windows/issues/318

HashTab右键属性查看文件 hash:

http://implbits.com/products/hashtab/

version

事件: 2015-08-22shadowsocks作者在警方压力下删除项目:

http://www.solidot.org/story?sid=45231

原维护者最后一次更新的版本是 2.5.6,随后githubissue出现关于新版本信任的讨论:

2.5.7及之后版本是否可以信任?

https://github.com/shadowsocks/shadowsocks-windows/issues/318

FOR强迫症:还有安全顾虑的可到virustotal上传文件进行病毒扫描:

https://www.virustotal.com/

Windows

33

Page 34: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

现在shadowsocks已经更新至 3.3.5版本,可以自行下载升级 2016-11-07

Windows

34

Page 35: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

HOW:Linux

shadowsocksonGNULinuxGNULinux用户需要借助浏览器代理插件科学漫游:

1. 安装 shadowsocks-libev或 python-shadowsocks软件包

2. 执行 ss-local-css.json命令创建「SOCKS5代理」

3. 配置浏览器代理插件后havefun...

软件包 SS客户端命令

shadowsocks-libev ss-local-css.json

python-shadowsocks sslocal-css.json

浏览器代理插件

Firefox代理插件:FoxyProxyStandard

https://addons.mozilla.org/en-us/firefox/addon/foxyproxy-standard/

Chrome代理插件:ProxySwitchyOmega

https://github.com/FelisCatus/SwitchyOmega/releases

Linux

35

Page 36: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

shadowsocksonMacOSX

下载download

githubrelease下载地址:

Mac新版客户端:https://github.com/shadowsocks/ShadowsocksX-NG/releases/Mac旧版客户端:https://github.com/shadowsocks/shadowsocks-iOS/releases/

旧版 2.6.3版本下载:ShadowsocksX-2.6.3.dmg

旧版没法更新PAC文件列表(GFWList)手动解决方法请参考issue212:

https://github.com/shadowsocks/shadowsocks-iOS/issues/212

MD5hash

请牢记XcodeGhost教训

打开终端应用,使用 md5命令校验下载文件的MD5哈希值:

$md5Downloads/ShadowsocksX-2.6.3.dmg

MD5(Downloads/ShadowsocksX-2.6.3.dmg)=c3406e8d4a5009efaa74d3a37b53fed8

HOWTO

1. 运行ShadowsocksX2. 配置代理服务器

3. 连接代理服务器

4. 开启系统代理

5. 测试科学上网

6. 从 GFWList更新PAC文件

MACOS

36

Page 37: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

【运行】ShadowsocksX

运行ShadowsocksX后,会在menubar显示「纸飞机」图标

默认图标为灰色表示「系统代理」未启动

【编辑】代理服务器

点击「纸飞机」选择「服务器」菜单,然后点击【打开服务器设定】选项:

弹出「服务器设定」窗口:

MACOS

37

Page 38: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

根据服务端配置,填写对应的客户端配置:

shadowsocks服务端配置 mac客户端对应配置项

"server":"45.67.89.10" 服务器IP地址

"server_port":37210 服务器端口

"password":"V_VL_Fuck_GFW" 服务器密码

"method":"rc4-md5" 加密方案

【连接】代理服务器

选中「服务器」菜单创建的代理服务器配置,出现对号「√」表示与代理服务器建立连接

成功与代理服务器建立连接后,便会创建「SOCKS5代理」使用 lsof-Pn-i4|grepLISTEN命令可以查看端口

MACOS

38

Page 39: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

【开启】系统代理

点击「主菜单」第二行【打开shadowsocks】启用「系统代理」:

1. 第一行:系统代理运行状态,显示「关闭」状态

2. 第二行:系统代理运行开关,默认系统代理没有启动(图标为灰色)

「系统代理」启动前后「主菜单」第一行代理状态和第二行运行开关选项变化:

菜单 启动代理前 启动代理后

menubar图标颜色 灰色 黑色

第一行:系统代理状态 Shadowsocks:关闭 Shadowsocks:打开

第二行:代理开关 打开Shadowsocks 关闭Shadowsocks

「系统代理」启动前:

MACOS

39

Page 40: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

「系统代理」启动后:

系统代理启动后menubar的「纸飞机」图标也变为黑色:

系统代理vsSOCK5代理

「系统代理」与「SOCKS5代理」区别:

MACOS

40

Page 41: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

系统代理

shadowsocks创建的「系统代理」将自动接管浏览器的访问全部请求

浏览器默认不需要任何设置,也无需安装代理插件(Firefox除外)

如果浏览器安装了代理插件,需要禁用代理插件或将代理插件设置为使用系统代理

SOCKS5代理

若不【启用系统代理】shadowsocks成功连接代理服务器后,仅创建了「SOCKS5代理」

浏览器需要安装代理插件并设置shadowsocks创建的SOCKS5代理端口,才能科学上网

【测试】科学上网

如果系统代理运行成功,就可以访问google。如果失败,请检查「服务器配置」是否正确:

MACOS

41

Page 42: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

【更新】PAC文件

最后在主菜单中点击「从GFWList更新PAC文件」更新翻墙列表:

SOCKS5代理

Mac下shadowsocks客户端启用的端口:

$lsof-iTCP-sTCP:LISTEN-n-P

COMMANDPIDUSERFDTYPEDEVICESIZE/OFFNODENAME

privoxy526i3uIPv40xa3a011e70t0TCP127.0.0.1:1087(LIS

TEN)##系统代理

ss-local537i5uIPv40xa322b3d70t0TCP127.0.0.1:1086(LIS

TEN)

Shadowsoc759i4uIPv40xa3f1dadf0t0TCP*:8090(LISTEN)

Shadowsoc759i9uIPv40xa3a5aff70t0TCP127.0.0.1:1080(LIS

TEN)##socks5端口

使用 curl--socks5127.0.0.1:1080http://cip.cc命令确认SOCKS5代理是否正常可

用:

MACOS

42

Page 43: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

$curl--socks5127.0.0.1:1080http://cip.cc##指定socks5代理参数

IP:45.67.89.10

地址:美国加利福尼亚

数据二:美国|洛杉矶

URL:http://www.cip.cc/45.67.89.10

$curlhttp://cip.cc

IP:111.20.83.57

地址:中国北京

数据二:北京市|联通

URL:http://www.cip.cc/111.20.83.57

终端启动chrome指定SOCKS5代理参数:

open-a"GoogleChrome"--args\

--proxy-server="socks5://127.0.0.1:1080"\

--host-resolver-rules="MAP*0.0.0.0,EXCLUDElocalhost"

然后就可以在应用商店下载ProxySwitchyOmega插件

本地端口

旧版ShadowsocksX创建的「SOCKS5代理」端口默认是 1080:

$grep127~/.ShadowsocksX/gfwlist.js

varproxy="SOCKS5127.0.0.1:1080;SOCKS127.0.0.1:1080;DIRECT;";

新版ShadowsocksX-NG创建的「SOCKS5代理」端口默认改成 1086升级后别忘了修改代

理插件对应的端口:

MACOS

43

Page 44: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

$cat"/Users/yourname/Library/ApplicationSupport/ShadowsocksX-NG/ss-local

-config.json"

{

"method":"rc4-md5",

"server":"IP",

"password":"...",

"local_address":"127.0.0.1",

"server_port":...,

"auth":false,

"timeout":60,

"local_port":1086

}

也可以自行修改 ~/.ShadowsocksX/gfwlist.js配置文件,自定义「SOCKS5代理」端口

MACOS

44

Page 45: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

shadowsocks-android客户端使用

Download下载

shadowsocks-android是开源APP可以从github下载APK安装文件:

https://github.com/shadowsocks/shadowsocks-android/releases

GooglePlay下载地址:

https://play.google.com/store/apps/details?id=com.github.shadowsocks

setting设置

点击【配置文件】选项,创建新的配置文件,根据服务端配置修改下表的4处选项:

shadowsocks服务端配置 Android客户端对应配置项

"server":"45.67.89.10" 【服务器】

"server_port":37210 【远程端口】

"password":"V_VL_Fuck_GFW" 【密码】

"method":"rc4-md5" 【加密方法】

【本地端口】选项默认即可,不用修改

Android

45

Page 46: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

Android

46

Page 47: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

设置完成后,点击右上角的【飞机】图标,连接到服务器后:

1. 图标变为【绿色】

2. 手机通知栏出现【钥匙】图标

Android

47

Page 48: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

Android

48

Page 49: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

Android

49

Page 50: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

iOS代理APP推荐wingy:免费,配置简单,功能齐全

wingywingy开发者twitter帐号:https://twitter.com/HelloWingy

wingy是基于NEKit开发的网络工具:https://zhuhaow.github.io/NEKit/

下载

目前有2个版本主要是针对不用的iOS版本,请根据APP兼容性描述下载正确的版本:

系统版本 开发者 对应APP下载链接

iOS9.3+ wangxiaojun https://itunes.apple.com/cn/app/id1148026741

iOS10.0+ SMARTLIMITED https://itunes.apple.com/cn/app/id1178584911

第一个蓝色图标APP适配 iOS9.3开发者为wangxiaojun第二个紫色图标APP适配 iOS10.0开发者为SMARTLIMITED

iOS

50

Page 51: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

iOS

51

Page 52: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

添加代理

安装好后打开APP点击右上角加号[+]:添加代理配置,代理类型选择

【Shadowsocks(R)】:

iOS

52

Page 53: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

iOS

53

Page 54: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

配置shadowsocks按照shadowsocks帐号信息填写配置,注意代理模式使用【全局代理模式】:

iOS

54

Page 55: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

iOS

55

Page 56: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

创建VPN配置

保存代理配置后,点击wingy的开关按钮

第一次启动会弹出是否允许APP在【设置】中添加VPN配置的对话框:「Allow」允许(左侧)

iOS

56

Page 57: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

iOS

57

Page 58: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

之后会自动跳转到【设置】—【VPN】下,并提示输入解锁密码二次确认

成功之后【设置】—【VPN】下出现wingy创建的VPN配置信息:

iOS

58

Page 59: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

iOS

59

Page 60: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

成功连接服务器之后wingy的开关按钮会变为已连接。状态栏也出现VPN图标:

iOS

60

Page 61: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

iOS

61

Page 62: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

此时就可以科学上网漫游了:

iOS

62

Page 63: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

iOS

63

Page 64: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

添加widgetwingy可以添加widget来的快速「开关」打开或关闭代理:

iOS

64

Page 65: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

iOS

65

Page 66: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

PotatsoAPPStore:https://itunes.apple.com/app/apple-store/id1070901416

https://potatso.com/

https://manual.potatso.com/

https://github.com/shadowsocks/Potatso

MumeVPN基于Potatso开发的Shadowsocks协议VPN客户端

APPStore:https://itunes.apple.com/cn/app/mume-vpn/id1144787928

https://github.com/liruqi/Mume-iOS

http://vpn.liruqi.info/ios/

http://api.liruqi.info/

http://mume.site/

iOS

66

Page 67: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

PAC代理模式

翻墙原理就是通过shadowsocks创建的SOCKS5代理来访问被和谐的网站

代理模式

shadowsocks成功连接代理服务器后会创建一个SOCKS5代理: 127.0.0.1:1080

【系统代理】是由shadowsocks客户端在SOCKS5上层实现的代理功能

【系统代理】支持2种代理模式:

1. 自动代理模式(即PAC模式,默认)2. 全局代理模式

PAC代理模式

PAC维基百科:http://zh.wikipedia.org/zh/PAC

默认shadowsocks启用【系统代理】后使用的是【PAC代理模式】

【PAC代理模式】当浏览器访问某个网站时,会去匹配PAC配置文件 pac.txt里URL列表。如果能匹配到PAC文件配置的URL就会使用「SOCKS5代理」访问该网站;否则不使用

代理,直接访问网站。既节省ss流量,也会提高国内网站的访问速度,不然访问国内网站要

绕到国外代理再绕回来。

全局代理模式

全局代理模式所有请求全部走「SOCKS5代理」。访问国内网站时,将会先绕到国外的代理

服务器,然后在绕回来,南辕北辙了。当访问的网站没有包含在PAC文件的匹配规则列表时,

可以临时开启全局代理进行访问。

菜单选项

WHAT:PACmode

67

Page 68: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

Windows下点击主菜单中的【系统代理模式】可以查看:

MacOSX点击「纸飞机」图标,主菜单的【自动代理模式】即为PAC模式:

编辑PAC规则

从GFWList同步的PAC规则后,会在本地生成的PAC文件:

WHAT:PACmode

68

Page 69: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

系统 PAC文件路径

Windows pac.txt(与 Shadowsocks.exe同级目录)

MacOSX ~/.ShadowsocksX/gfwlist.js

菜单中选择【编辑GFWList的用户规则】选项,创建自定义的匹配规则:

WHAT:PACmode

69

Page 70: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

HOW:浏览器代理插件

shadowsocks客户端有两种代理选项:

代理类型 代理模式

SOCKS5代理 SOCKS5(关闭【系统代理】后SOCKS5代理仍在运行)

系统代理PAC自动代理模式global全局代理模式

启用【系统代理】后IE、Chrome浏览器无需安装代理插件,浏览器默认设置使用的系统代

理就可以通过shadowsocks创建的【系统代理】科学上网了。使用【系统代理】时需要禁用浏览器的代理插件,或将其设置为使用系统代理

如果使用浏览器代理插件上网,可以关闭shadowsocks的系统代理

HOW:浏览器代理插件

70

Page 71: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

然后配置浏览器的代理插件通过shadowsocks创建的SOCKS5代理来科学上网

HOW:浏览器代理插件

71

Page 72: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

Firefox配置Firefox浏览器FoxyProxy插件+GFWlist订阅自动代理上网

使用Firefox+FoxyProxy插件代理上网,可以关闭shadowsocks的系统代理仅使用SOCKS5代理即可:

设置Firefox网络代理连接方式为:【不使用代理】即通过Foxyproxy管理代理

【高级】——【网络】——【连接】——【设置】

Firefox

72

Page 73: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

安装FoxyProxy插件:

Firefox

73

Page 74: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

配置FoxyProxy选项,点击右侧【新建代理服务器】按钮:

Firefox

74

Page 75: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

设置新建代理的【常规】标签页的配置选项:

配置选项 操作步骤

代理名称 名字随便起,此处使用shadowsocks

使用此代理时的图标颜色 修改颜色,方便区分访问时所使用的代理

Firefox

75

Page 76: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

设置【代理服务器细节】标签页的配置选项:

配置选项 操作步骤

主机或IP地址 127.0.0.1

端口 1080

SOCKS代理 SOCKSv5

Firefox

76

Page 77: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

设置好代理服务器后,选择FoxyProxy的【模式订阅】标签页,点击右下角的【转到】按钮,新建模式订阅:

Firefox

77

Page 78: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

配置选项 操作步骤

订阅名称 GFWlist

订阅网址 https://raw.githubusercontent.com/gfwlist/gfwlist/master/gfwlist.txt

代理服务器 点击【添加代理服务器】按钮,选择上面创建的shadowsocks代理

更新频率 960分钟(16小时)

Format AutoProxy

Obfuscation Base64

Firefox

78

Page 79: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

Firefox

79

Page 80: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

最后修改【选择工作模式】:使用基于其预定义模板的代理服务器就可以匹配GFWlist规则自

动代理上网:

Firefox

80

Page 81: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

Firefox

81

Page 82: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

图文教程参考:

火狐浏览器+SS翻墙设置教程(Firefox+Foxyproxy+Shadowsocks)

Firefox浏览器扩展FoxyProxy使用说明

Firefox配置使用shadowsocks服务firefox下foxyproy使用

Firefox

82

Page 83: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

ChromeChrome代理插件:ProxySwitchyOmega

https://github.com/FelisCatus/SwitchyOmega/releases

HOWTO1. 翻墙从googlestore安装插件

2. 配置SOCKS5代理服务器

3. 配置下载GFWlist规则,通过插件匹配规则自动代理上网

第一步需要先访问googlestore下载ProxySwitchyOmega插件:

https://chrome.google.com/webstore/detail/proxy-switchyomega/padekgcemlokbadohgkifijomclgjgif

通过chrome命令启动浏览器后全局通过SOCKS5代理上网:ForcingChrometoUseSocks5Proxy

google-chrome--proxy-server="socks5://127.0.0.1:1080"\

--host-resolver-rules="MAP*0.0.0.0,EXCLUDElocalhost"

安装好ProxySwitchyOmega插件之后,点击图标选择【选项】菜单:

Chrome

83

Page 84: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

修改【情景模式】中的【proxy】配置项:

代理服务器选项 配置

代理协议 SOCKS5

代理服务器 127.0.0.1

代理端口 1080

最后点击【应用选项】按钮保存配置

继续修改【情景模式】中的【autoswitch】配置项:

配置项 操作步骤

规则列表规则匹配规则列表的请求选择使用【proxy】代理默认情景模式选择【直接连接】

规则列表格式 勾选AutoProxy

规则列表网址 https://raw.githubusercontent.com/gfwlist/gfwlist/master/gfwlist.txt

立即更新情景模式 点击按钮更新gfwlist

Chrome

84

Page 85: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

然后点击【应用选项】按钮保存配置

点击图标选择【autoswitch】菜单即可匹配GFWlist规则自动代理上网:

情景模式 代理模式

proxy 全局代理,所有访问请求全部通过SOCKS5代理

autoswitch 自动代理,根据GFWlist规则匹配自动代理上网

Chrome

85

Page 86: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

可以参考下面几篇图文教程:

科学上网—使用daili(Shadowsocks)之后一些网站无法访问的解决办法

shadowsocks科学上网

shadowsocks配合SwitchyOmega科学上网

Chrome

86

Page 87: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

KCPTUNhttps://github.com/xtaci/kcptun

optionkcptun的参数都源自于kcp原始协议:https://github.com/skywind3000/kcp

工作模式:

intikcp_nodelay(ikcpcb*kcp,intnodelay,intinterval,intresend,intnc

)

参数 作用

nodelay 是否启用nodelay模式, 0不启用; 1启用

interval 协议内部工作的 interval单位毫秒,比如 10ms或者 20ms

resend快速重传模式,默认 0关闭,可以设置 2(2次ACK跨越将会直接重传)

nc 是否关闭流控,默认是 0代表不关闭 1代表关闭

normal 普通模式: ikcp_nodelay(kcp,0,40,0,0)

fast 极速模式: ikcp_nodelay(kcp,1,10,2,1)

最大窗口:

intikcp_wndsize(ikcpcb*kcp,intsndwnd,intrcvwnd);

该调用将会设置协议的最大发送窗口和最大接收窗口大小,默认为 32这个可以理解为TCP的 SND_BUF和 RCV_BUF只不过单位不一样 SND/RCV_BUF单位是字节,这个单位是包

HOW:kcptun

87

Page 88: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

服务端与客户端必须一致的参数 含义

--crypt 加密算法

--key 密钥

--nocomp 压缩数据

--datashard 前向纠错

--parityshard 前向纠错

其余参数两边可独立设定

https://github.com/xtaci/kcptun/issues/342

--nodelay=0的多等一下,具体是多等多久呢,多等1/8RTT

nodelay是控制超时重传的时候是否再多等一会。inteval是超时重传的间隔,和下面的resend控制的快速重传没有关系resend只是控制快速重传,超过resend间隔没收到的包会立刻重

传,无需等到inteval到了再发送试下来030001的参数,RepeatSegs明显降低如果interval和repeat有关,那么fastresend是最大的嫌疑,因为就这个不受时间控制

nodelay这个参数俺一直都是关闭的,感觉太激进,时常突破窗口设置阈值interval估计和设计

初衷有关,(流速、流量),另一个帖子网友也提过这个问题,就是过大的interval会造成传输

曲线不稳,这在routeros里看的也很清楚,例如20M的阈值,那么可能5M、10M、20M这样跳,

HOW:kcptun

88

Page 89: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

而小的interval则一直压着阈值上限走,感觉像是单次的传输VS多次传输

FEC前向纠错

在两端同时设定 -datashardn和 -parityshardm参数搭配:

1. fast+FEC(5,5)2. fast2+FEC(10,3)3. fast2+FEC(0,0)

注意:为了发挥FEC最佳效果,设置 parityshard/(parity+datashard)>packetloss比如 5/(5+5)>30%

窗口调整

简易窗口自我调优方法:

第一步:同时在两端逐步增大CLIENT的 rcvwnd和SERVER的 sndwnd

第二步:尝试下载,观察如果带宽利用率(服务器+客户端两端都要观察)接近物理带宽则停

止,否则跳转到第一步

计算带宽

在不丢包的情况下,有最大 --rcvwnd个数据包从网络上向你传输,以平均数据包大小

avgsize计算:

network_cap=rcvwnd*avgsize

数据流量,这个值再除以ping值 rtt等于最大带宽使用量:

max_bandwidth=network_cap/rtt=rcvwnd*avgsize/rtt

举例,假设 rcvwnd=1024,avgsize=1KB,rtt=400ms则:

max_bandwidth=1024*1KB/400ms=2.5MB/s~=25Mbps

HOW:kcptun

89

Page 90: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

注意:以上计算不包括前向纠错的数据量

前向纠错是最大带宽量的一个固定比例增加:

max_bandwidth_fec=max_bandwidth*(datashard+parityshard)/datashard

举例,设 datashard=10,partiyshard=3则:

max_bandwidth_fec=max_bandwidth*(10+3)/10=1.3*max_bandwidth=1.3

*25Mbps=32.5Mbps

flow会消耗5倍以上流量

https://github.com/xtaci/kcptun/issues/91

1. ISP对UDP丢包极高,例如 50%2. 服务器,客户端本身的带宽较低,可以适当调低 sndwnd/rcvwnd3. 可以尝试 -dscp46参数降低丢包率

FEC前向纠错默认参数就会多消耗30%(可以调整)KCP协议头部平均多消耗5%(无法调

整)加上丢包2倍还算正常

多半是 sndwnd/rcvwnd太高,你可以在client先降低到128然后慢慢再加,边加边观察

服务端是 -mtu1350-cryptnone-nocomp-dscp46-sndwnd1024-rcvwnd1024-modefast2

客户端是 -cryptnone-mtu1350-sndwnd32-rcvwnd128-modefast2-dscp46-nocomp

100M肯定是超卖,实际一定达不到,否则不会出现这种程度的重传

为什么要降低客户端的 rcvwnd呢,我觉得应该降低服务器端的 sndwnd来调节速度,客户

端的 rcvwnd应该保持一个较大的值,服务器发来的数据照单全收

带宽不够就不要使用大窗口,量力而行

https://github.com/xtaci/kcp-go/blob/master/kcp.go#L657取二者的小者

HOW:kcptun

90

Page 91: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

我的配置

server--cryptnone--mtu1400--sndwnd2048--rcvwnd2048-dscp46-modef

ast2

client--cryptnone--mtu1400--sndwnd128--rcvwnd512-dscp46-modefas

t2

实际消耗流量不到两倍

两边 -datashard0-parityshard0还可以更低,不过响应会慢,看你的接受程度

手动参数设定探讨

https://github.com/xtaci/kcptun/issues/137

策略1:通过超时重传+快速重传,响应速度优先(最大化响应时间):

-modemanual-nodelay1-resend2-nc1-interval20

策略2:仅仅通过超时重传,带宽效率优先(有效载比优先)

-modemanual-nodelay1-resend0-nc1-interval40或

-modemanual-nodelay0-resend0-nc1-interval20

策略3:尽可能通过FEC纠删,最大化传输速度(推荐):

-modefast-datashard5-parityshard5

响应速度,传输带宽,高载荷比三者是跷跷板:

比如响应速度,一个数据包发出后,判断对方是否接收到了,是等待一个RTT时间没有收到

ACK就重发,还是说要再等等看。真实的情况始终未知 -nodelay1就是不多等了,结果

ACK晚到了一点点,就多发包了; -nodelay0就是已经等了RTT后,再等等看,那么如果再

等了还等不到,这个时间就浪费了,响应时间就慢了,整体速度也拖慢了。乐观主义还是悲观主

义?

根据香农定理:

HOW:kcptun

91

Page 92: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

1. 信道容量由带宽及信噪比决定,增大带宽、提高信噪比可以增大信道容量

2. 在要求的信道容量一定的情况下,提高信噪比可以降低带宽的需求,增加带宽可以降低

信噪比的需求

3. 香农公式给出了信道容量的极限,也就是说,实际无线制式中单信道容量不可能超过该

极限,只能尽量接近该极限。在卷积编码条件下,实际信道容量离香农极限还差3dB;在Turbo编码的条件下,接近了香农极限

1. 可以理解为,高丢包率==高噪音

2. 可以理解为,固定丢包率下增大发送带宽==更高的传输成功率(比如通过FEC)

固定传输带宽下降低丢包率==更高的传输成功率(比如通过DSCP)

策略1可以理解为,我非常悲观的判断包一旦超过RTT大概率丢失了,通过一切手段尽快重新发

送策略3也可以理解为,我假定我的纠错包能全部把丢失的包还原出来,每5个包,2个纠错

包,小于 2/7的均匀丢包率下( <28%),必定能还原出来,完全不需要重传

策略1对于网页访问这种突发性请求,查询较为友好策略2较为中庸策略3对于视频流这种较

为友好

200Mbps联通,日本vultr,ping136ms,UDP丢包30%左右:

server-modemanual-nodelay0-resend0-nc1-interval40-dscp46-nocom

p-mtu1400-cryptaes-128-datashard70-parityshard30

client-modemanual-nodelay0-resend0-nc1-interval40-nocomp-dscp4

6-mtu1400-cryptaes-128-datashard70-parityshard30

解释一下另一个问题: --datashard70--parityshard30和 --datashard7--parityshard3区别

回答:

1. 如果完全随机丢包(在时域上均匀分布)这两者没有差别,完全等价。

2. 如果在时域上不均匀,丢包一会儿有一会儿没有,这两者就有差别。 70/30的配置更又可

能把数据纠错出来, 7/3的配置很容易全丢无法恢复

选择在 70+30的这个大区间整体丢包 30%还是在 7+3的这个小区间整体丢包 30%?只有试试...

FEC对于大文件传输,比如用卫星传输8K电影到各个影院是非常合适的,对应fast.com测速

HOW:kcptun

92

Page 93: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

对于突发性,交互性,试探性的请求,快速重传更合适,对应网页

对于y2b这种,只要过了最初的70+30的点,会慢慢快起来

如果有要快又要突发性好,那就只能以浪费带宽为代价了

x86平台推荐默认的 aes(AES-256)如果性能不行,考虑 aes192, aes128其他平台可以

考虑blowfish,cast5,twofish如果性能还是不行,考虑tea,salsa20

另外,如果承载的数据本身已经加密salsa20足以

https://github.com/xtaci/kcptun/issues/353

默认的kcp协议,丢一次包,退让一次。丢的越多等得越长,这个是必须做的退让。假如30s超时

rtt*(1+2+4+8...)>30s

就是断线时间

https://github.com/xtaci/kcptun/issues/342

一两句话说不清楚:fastretrans:快速重传,数据包乱序,中间丢包,fastack,fastresend,earlyretrans:没有后续包要发送了,无法触发快速重传阈值,采用的重传,参考Taillossprobelostseg:以上条件都不满足,数据包等待超时后也没到。产生的重传。

retranssegs:=fast+early+lost

低丢包网络可以考虑关闭FEC

https://github.com/xtaci/kcptun/issues/358

关于断流的分析及解决方法

https://github.com/xtaci/kcptun/issues/353

如果对流量不敏感,客户端性能又足够的话建议始终配置FEC。对于时常会抽风的网络情况来

说FEC是一贴良药。我现在一般情况下使用FEC(30,15),如果抽风实在严重就改成

FEC(5,5)。基本上可以非常稳定地使用了。

FEC(0,0)在网络情况好的时候确实速度很快且更省流量,但几乎每到晚高峰都得调整,太麻烦

了。

https://github.com/skywind3000/kcp/wiki

HOW:kcptun

93

Page 94: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

https://github.com/xtaci/kcptun/issues/288

start-stop-daemon-S-q-b-m-p/tmp/var/kcp.pid-x/koolshare/bin/client_

linux_arm5---l127.0.0.1:1091-r$ss_basic_server:$ss_basic_kcp_port$ss_

basic_kcp_parameter

回馈,简易调节法,有需要看过来

https://github.com/xtaci/kcptun/issues/214

下载:客户端以 rcvwnd也就是接收为主,这里设定 256

上传:客户端的发送窗口 sndwnd相对来说就简单点,一般都是一个固定比例比如上传是下

载的 1/3等等

其实窗口大小等同于tcp的 sndbuf, rcvbuf,决定最大可同时发送的数据:

最大可用带宽=min(发送窗口大小,远端接收窗口大小)/rtt

解决了qos类型里面要丢大包,默认是丢50,小包是丢10。有同样困扰的朋友可以试试。一直

都按照应该丢小包或者甚至不丢包的思路走,今天瞎填个100,居然把问题解决了。

关于rcvwnd和sndwnd参数https://github.com/xtaci/kcptun/issues/409

rtt延迟通常反映了拥塞,保持wnd不变是比较利他的方式。特别是共享宽带

troubleshoot

sessionscavenged客户端sessionscavenged服务端brokenpipe:https://github.com/xtaci/kcptun/issues/277

server端没响应:https://github.com/xtaci/kcptun/issues/210

防火墙开放UDP

iptables-AINPUT-ptcp-mtcp--dport443-jACCEPT

iptables-IINPUT-pudp-mudp--dport443-jACCEPT

HOW:kcptun

94

Page 95: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

把客户端和服务器端的下面这三个参数逐渐减小:

--rcvwnd1024--sndwnd1024--mtu500

Kcp用着用着偶尔就会断开{伪解决方案}:https://github.com/xtaci/kcptun/issues/228

UDP大流量被运营商自动封这个ip的udp连接

尝试服务端和客户端降低: MTU=512

对于UDP不能使用nmap进行批量测试,因为UDP没有三次握手,从而没有返回包Server-->Client

只能使用echoserver对单一端口进行手动测试

随机化端口方案:https://gist.github.com/suikatomoki/89b1221dab19f64ba2b3

不过这个不是针对每个packet随机化端口,而是针对每一个connection随机化端口

client:

iptables-tnat-IOUTPUT-d<vps_ip>-pudp--dport<kcp_server_port>-jD

NAT--to-destination<vps_ip>:4000-5000--random

server:

iptables-tnat-APREROUTING-pudp-mmultiport--dport4000:5000-jREDI

RECT--to-ports<kcp_server_port>

一直断,所以用了上面的随机端口方案,但发现,封的时候不是封服务器的UDP而且是对宽带

本身的UDP进出进行封堵,重新拨号换IP后就能连上了

UDP上行流量间歇性被封,下行流量是通的

封锁策略又变为封UDP下行流量,UDP上行流量没被封

会不会是路由器本身的问题,比如这个参数太小

net.core.rmem_max=26214400

HOW:kcptun

95

Page 96: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

启动的时候,有没有出现 setsocketbuffer报错

kcptun-raw使用发 rawsocket和 libev远端通信为伪TCP报文,重新实现了kcptun的最基本功能(未实现加密和纠错等,仍在测试),只需一个程序即可,不需要再另外建立UDPoverTCP隧道,不容易“卡住”

https://github.com/Chion82/kcptun-raw

为缓解部分ISP对UDP断流的问题,通过伪造TCP报文,实现了简化版的kcptun。客户端和

服务端进程的直接通信方式为带伪TCP报头的IPpacket,通过rawsocket实现,需要通过

iptables绕过内核协议栈。

https://github.com/xtaci/kcptun/issues/391

那是ISP对UDP的封锁有的地区的运营商喜欢封UDP(流量一大直接切断),很多issues已经反映了这个问题

近两日出现断流现象(小的MTU?):https://github.com/xtaci/kcptun/issues/218

HOW:kcptun

96

Page 97: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

dantehttp://www.inet.no/dante/

dante是款简单的socks代理程序,可以实现透明代理,配置简单

2017-02-06:Dante1.4.2isnowavailable.Thisisamaintenancereleasewithvariousbugfixesandnonewserverfeatures.

http://www.inet.no/dante/announce-1.4.2

2017更新的 dante-1.4.2版本在Linux仅修复了CFLAGS导致的编译错误:

configurecheck'prototypes'FAILEDwithCFLAGS'-grecord-gcc-switches'

之前其他的patch还得继续用 -_-;

rpmbuild安装rpmbuild编译环境以及dante编译依赖:

yuminstall-yautoconfautomakebinutilsgccmakerpm-buildrpmdevtools

yuminstall-ybisonflexglibc-devellibtoolpam-devel

patch源码编译安装需要3处修改:

1. socksify环境变量配置补丁

2. HAVE_SENDBUF_IOCTL补丁

3. AM_CONFIG_HEADER宏升级

patch1修复socksify环境变量,不然安装rpm包提示 libsocks.so.0依赖库缺失错误:

DanteSOCKSserver

97

Page 98: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

#rpm-ivhdante-1.4.2-1.el7.centos.x86_64.rpm

error:Faileddependencies:

libsocks.so.0()(64bit)isneededbydante-1.4.2-1.el7.centos.x86_64

patch文件参考gentooebuild补丁:

https://gitweb.gentoo.org/repo/gentoo.git/tree/net-proxy/dante/files/dante-1.4.0-socksify.patch

patch2另一个patch是修改 HAVE_SENDBUF_IOCTL参考gentoo,suse的补丁:

https://gitweb.gentoo.org/repo/gentoo.git/tree/net-proxy/dante/files/dante-1.4.0-HAVE_SENDBUF_IOCTL.patch

https://build.opensuse.org/package/view_file/server:proxy/dante/dante-1.4.0-sendbuf_macro.patch

patch3还有autoconf已经弃用 AM_CONFIG_HEADER宏,替换为 AC_CONFIG_HEADERS:

error:'AM_CONFIG_HEADER':thismacroisobsolete.

Youshouldusethe'AC_CONFIG_HEADERS'macroinstead.

https://build.opensuse.org/package/view_file/server:proxy/dante/dante.spec

touchacinclude.m4

sed-i-e's:AM_CONFIG_HEADER:AC_CONFIG_HEADERS:'configure.ac

autoreconf--force--install--verbose

https://gitweb.gentoo.org/repo/gentoo.git/tree/net-proxy/dante/dante-1.4.1-r1.ebuild

sed-i-e's:AM_CONFIG_HEADER:AC_CONFIG_HEADERS:'configure.ac

configure

DanteSOCKSserver

98

Page 99: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

参考官网的精简版参数以及gentoo和suse打包的参数,最终:

%configure--disable-static--enable-shared--with-pic--with-libc=$DANTE_L

IBC\

--enable-preload--enable-clientdl--enable-serverdl--enable-drt-fallb

ack\

--without-gssapi--without-libwrap--without-upnp--without-glibc-secur

e\

--sysconfdir=/etc/dante--with-socks-conf=/etc/dante/socks.conf\

--with-sockd-conf=/etc/dante/sockd.conf

官网Prod版本的二进制编译参数,主要用作socks代理,去掉扩展参数:

https://www.inet.no/dante/sslfiles/binaries.html

--without-gssapi

--without-upnp(UPnPsupportdisabled)

--without-libwrap(libwrapsupportdisabled)

源码中自带的 dante-1.4.2/SPECS/dante.spec编译参数:

%configure--without-glibc-secure%{_extraflags}

gentooebuild的编译依赖以及编译参数:

https://gitweb.gentoo.org/repo/gentoo.git/tree/net-proxy/dante/dante-1.4.1-r1.ebuild

DanteSOCKSserver

99

Page 100: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

IUSE="debugkerberospamselinuxstatic-libstcpdupnp"

CDEPEND="

kerberos?(virtual/krb5)

pam?(virtual/pam)

tcpd?(sys-apps/tcp-wrappers)

upnp?(net-libs/miniupnpc:=)

userland_GNU?(virtual/shadow)

"

DEPEND="${CDEPEND}

sys-devel/bison

sys-devel/flex

"

econf\

--with-socks-conf="${EPREFIX}"/etc/socks/socks.conf\

--with-sockd-conf="${EPREFIX}"/etc/socks/sockd.conf\

--enable-preload\

--enable-clientdl\

--enable-serverdl\

--enable-drt-fallback\

--with-libc=libc.so.6\

$(use_enabledebug)\

$(use_withkerberosgssapi)\

$(use_withpam)\

$(use_withupnp)\

$(use_enablestatic-libsstatic)\

$(use_withtcpdlibwrap)

openSUSE的spec文件:https://build.opensuse.org/package/view_file/server:proxy/dante/dante.spec

DanteSOCKSserver

100

Page 101: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

%build

DANTELIBC=`find/%{_lib}/-maxdepth1-iname"libc.so.*"`

%configure\

--disable-static\

--with-pic\

--enable-preload\

--enable-clientdl\

--enable-serverdl\

--enable-drt-fallback\

--enable-shared\

--with-libc=$DANTELIBC

最终完成的spec文件:

https://github.com/lvii/outman/blob/master/dante/SPECS/dante-1.4.2.spec

1. 下载spec文件到 ~/rpmbuild/SPECS/目录:

2. 下载补丁和配置文件到 ~/rpmbuild/SOURCES/目录

3. 使用 spectool下载源码

4. 使用 rpmbuild打包

编译所需的源码:

DanteSOCKSserver

101

Page 102: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

#mkdir-pv~/rpmbuild/{SOURCES,SPECS}

##下载spec,patch等文件到相关路径

#spectool-l-A-R~/rpmbuild/SPECS/dante-1.4.2.spec

Source0:http://www.inet.no/dante//files/dante-1.4.2.tar.gz

Source1:sockd.service

Source2:sockd.init

Patch0:dante-1.4.2-sendbuf_macro.patch

Patch1:dante-1.4.2-socksify.patch

#spectool-g-A-R~/rpmbuild/SPECS/dante-1.4.2.spec

Gettinghttp://www.inet.no/dante//files/dante-1.4.2.tar.gzto/root/rpmbuil

d/SOURCES/dante-1.4.2.tar.gz

%Total%Received%XferdAverageSpeedTimeTimeTimeCur

rent

DloadUploadTotalSpentLeftSpe

ed

1001254k1001254k001064k00:00:010:00:01--:--:--10

68k

#spectool-g-A-R~/rpmbuild/SPECS/dante-1.4.2.spec

#rpmbuild-bb--clean~/rpmbuild/SPECS/dante.spec

install编译完成后,编译好的rpm包位于 ~/rpmbuild/RPMS/x86_64/目录

yuminstall~/rpmbuild/RPMS/x86_64/dante-1.4.2-1.el7.centos.x86_64.rpm

也可以使用yum直接安装在FedoraCopr平台上为CentOS7打包的rpm包:

yuminstallhttps://copr-be.cloud.fedoraproject.org/results/outman/dante/ep

el-7-x86_64/00515912-dante/dante-1.4.2-1.el7.centos.x86_64.rpm

DanteSOCKSserver

102

Page 103: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

dante运行依赖 glibc-devel提供的 libdl.so库。安装好后使用 ldd即可查看依赖库

#ldd/usr/sbin/sockd

linux-vdso.so.1=>(0x00007ffd67f44000)

libm.so.6=>/lib64/libm.so.6(0x00007fa2a8208000)

libpam.so.0=>/lib64/libpam.so.0(0x00007fa2a7ff9000)

libcrypt.so.1=>/lib64/libcrypt.so.1(0x00007fa2a7dc1000)

libdl.so.2=>/lib64/libdl.so.2(0x00007fa2a7bbd000)

libc.so.6=>/lib64/libc.so.6(0x00007fa2a77fc000)

/lib64/ld-linux-x86-64.so.2(0x00007fa2a8510000)

libaudit.so.1=>/lib64/libaudit.so.1(0x00007fa2a75d3000)

libfreebl3.so=>/lib64/libfreebl3.so(0x00007fa2a73d0000)

libcap-ng.so.0=>/lib64/libcap-ng.so.0(0x00007fa2a71ca000)

#rpm-qf/lib64/libdl.so

glibc-devel-2.17-157.el7_3.1.x86_64

config修改 sockd服务配置文件 /etc/dante/sockd.conf并启动SOCKS5代理:

DanteSOCKSserver

103

Page 104: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

logoutput:stderr

internal:127.0.0.1port=1080

external:45.67.89.10##<--公网IP

clientmethod:none

socksmethod:none

user.privileged:root

user.unprivileged:nobody

clientpass{

from:0.0.0.0/0to:0.0.0.0/0

log:error

}

clientblock{

from:0.0.0.0/0to:127.0.0.0/8

log:error

}

sockspass{

from:0.0.0.0/0to:0.0.0.0/0

command:bindconnectudpassociate

}

sockspass{

from:0.0.0.0/0to:0.0.0.0/0

command:bindreplyudpreply

log:error

}

socksblock{

from:0.0.0.0/0to:127.0.0.0/8

command:bindconnectudpassociate

log:connecterror

}

启动服务:

systemctlenablesockd

systemctlstartsockd

确认服务端口:

DanteSOCKSserver

104

Page 105: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

#netstat-lntpu

ProtoRecv-QSend-QLocalAddressForeignAddressStatePID/Prog

ramname

tcp00127.0.0.1:10800.0.0.0:*LISTEN9070/soc

kd

KCPTUN使用kcptun服务端连接sockd服务提供的SOCKS代理,提供给客户端连接使用

创建随机密码:

#cat/dev/urandom|tr-cd'[:alnum:]'|head-c16|paste

NLe6avQOKIhpwxuM

将启动kcptun服务脚本 sockd.sh放到 server_linux_amd64:

DanteSOCKSserver

105

Page 106: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

#!/bin/bash

real_path=$(readlink-e$0)

exec_path=$(dirname"$real_path")

exec_file="${exec_path}/server_linux_amd64"

log=/tmp/kcptun.socks.log

key='NLe6avQOKIhpwxuM'

pid=$(pgrep-f--"--key$key")

if[-n"$pid"]

then

kill"$pid"

rm-f"$log"

fi

"$exec_file"--nocomp--cryptsalsa20--key"$key"-t"127.0.0.1:1080"-l"

:10101"\

--modemanual--nodelay0--interval20--resend2--nc1--mtu1350--dscp

46\

--datashard64--parityshard16--log"$log"&

pgrep-af--"--key$key

kcptun服务启动后,可以看到对应端口:

#netstat-lnup

ProtoRecv-QSend-QLocalAddressForeignAddressStatePID/Progra

mname

udp000.0.0.0:101010.0.0.0:*9037/./ser

ver_linux

在Linux客户端可以使用kcptun客户端就可以在本地创建SOCKS5代理了:

DanteSOCKSserver

106

Page 107: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

#!/bin/bash

real_path=$(readlink-e$0)

exec_path=$(dirname"$real_path")

exec_file="${exec_path}/client_linux_amd64"

pass_word="NLe6avQOKIhpwxuM"

IP=45.67.89.10

log=/tmp/kcptun.socks.log

pid=$(pgrep-f--"--key$pass_word")

if[-n"$pid"]

then

kill"$pid"

rm-f/tmp/kcptun.log

fi

"$exec_file"--nocomp--cryptsalsa20--key"$pass_word"-r"${IP}:10101"-

l":9090"\

--modemanual--nodelay0--interval20--resend2--nc1--mtu512--dscp

46\

--sndwnd256--rcvwnd512--datashard64--parityshard16--log"$log"&

kcptun客户端启动后出现 9090端口的SOCKS5代理,配合浏览器代理插件就可以科学上网

了:

#netstat-lntp

ProtoRecv-QSend-QLocalAddressForeignAddressStatePID/Progr

amname

tcp000.0.0.0:90900.0.0.0:*LISTEN1898/clie

nt_linux_a

DanteSOCKSserver

107

Page 108: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

SOCKS5socks5proxy代理:动态端口转发(Dynamicportforwardings)

ssh-NTfnq-D7070$user@$hosname

参数 作用

-D7070 建立动态端口转发,监听在本地 7070端口

-f 将ssh转到后台运行,即认证之后ssh自动以后台运行。不在输出信息

-n 将stdio重定向到 /dev/null与 -f配合使用

-N 不执行脚本或命令,即通知sshd不运行设定的shell通常与 -f连用

-T 不分配TTY只做代理用

-q 安静模式,不输出错误/警告信息

HOW:ssh

108

Page 109: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

ocserv(OpenConnectVPNServer)官网:http://www.infradead.org/ocserv/index.html

OpenConnectserver(ocserv)isanSSLVPNserver.Itspurposeistobeasecure,small,fastandconfigurableVPNserver.ItimplementstheOpenConnectSSLVPNprotocol,andhasalso(currentlyexperimental)compatibilitywithclientsusingtheAnyConnectSSLVPNprotocol.TheOpenConnectprotocolprovidesadualTCP/UDPVPNchannel,andusesthestandardIETFsecurityprotocolstosecureit.TheserverisimplementedprimarilyfortheGNU/LinuxplatformbutitscodeisdesignedtobeportabletootherUNIXvariantsaswell.

依赖:VPS需要支持创建VPN的 TUN设备

http://www.infradead.org/ocserv/platforms.html

anyotherplatformsupportingTUN/TAPdevicesandonwhichGnuTLSruns.

HOWTO安装 ocserv软件包,修改 ocserv配置文件

生成CA用来签发客户端证书

申请Let'sEncryptSSL服务端证书

手机安装anyconnectAPP配置,下载客户端证书,配置即可

Let'sEncrypt使用 certbot生成和续签Let'sEncryptSSL证书:

https://github.com/certbot/certbot

installhttps://certbot.eff.org/#centosrhel7-nginx

HOW:ocserv

109

Page 110: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

从EPEL源中安装 certbot软件包:

#yuminstallepel-release

#yuminstallcertbot

DependenciesResolved

===========================================================================

=====

PackageArchVersionRepository

Size

===========================================================================

=====

Installing:

certbotnoarch0.8.1-2.el7epel

16k

Installingfordependencies:

dialogx86_641.2-4.20130523.el7base2

08k

pyOpenSSLx86_640.13.1-3.el7base1

33k

python-cffix86_640.8.6-2.el7base1

31k

python-cryptographyx86_640.8.2-1.el7base4

35k

python-enum34noarch1.0.4-1.el7base

52k

python-ndg_httpsclientnoarch0.3.2-1.el7epel

43k

python-parsedatetimenoarch1.5-3.el7epel

61k

python-plynoarch3.4-10.el7base1

23k

python-psutilx86_642.2.1-1.el7epel1

14k

python-pycparsernoarch2.14-1.el7base1

04k

python-requestsnoarch2.6.0-1.el7_1base

94k

HOW:ocserv

110

Page 111: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

python-urllib3noarch1.10.2-2.el7_1base1

00k

python-zope-componentnoarch1:4.1.0-1.el7epel1

10k

python-zope-eventnoarch4.0.3-2.el7epel

79k

python-zope-interfacex86_644.0.5-4.el7base1

38k

python2-acmenoarch0.8.1-1.el7epel1

62k

python2-certbotnoarch0.8.1-2.el7epel3

46k

python2-configargparsenoarch0.10.0-1.el7epel

28k

python2-dialognoarch3.3.0-6.el7epel

94k

python2-mocknoarch1.0.1-9.el7epel

92k

python2-pyrfc3339noarch1.0-2.el7epel

13k

pytznoarch2012d-5.el7base

38k

TransactionSummary

===========================================================================

=====

Install1Package(+22Dependentpackages)

Totaldownloadsize:2.7M

Installedsize:13M

软件包 certbot包含的相关命令:

#rpm-qlcertbot|grepbin

/usr/bin/certbot

/usr/bin/letsencrypt

howto

HOW:ocserv

111

Page 112: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

帮助手册:

#certbot--helpall

usage:

certbot[SUBCOMMAND][options][-ddomain][-ddomain]...

CertbotcanobtainandinstallHTTPS/TLS/SSLcertificates.Bydefault,

itwillattempttouseawebserverbothforobtainingandinstallingthe

cert.MajorSUBCOMMANDSare:

(default)runObtain&installacertinyourcurrentwebserver

certonlyObtaincert,butdonotinstallit(aka"auth")

installInstallapreviouslyobtainedcertinaserver

renewRenewpreviouslyobtainedcertsthatarenearexpiry

revokeRevokeapreviouslyobtainedcertificate

registerPerformtasksrelatedtoregisteringwiththeCA

rollbackRollbackserverconfigurationchangesmadeduringin

stall

config_changesShowchangesmadetoserverconfigduringinstallati

on

pluginsDisplayinformationaboutinstalledplugins

默认只有两个插件 webroot和 standalone:

#certbotplugins

*webroot

Description:Placefilesinwebrootdirectory

Interfaces:IAuthenticator,IPlugin

Entrypoint:webroot=certbot.plugins.webroot:Authenticator

*standalone

Description:Automaticallyuseatemporarywebserver

Interfaces:IAuthenticator,IPlugin

Entrypoint:standalone=certbot.plugins.standalone:Authenticator

插件 webroot需要搭配 nginx/apache等web服务使用,此处使用 standalone生成

证书即可:

注意:

HOW:ocserv

112

Page 113: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

执行命令之前关闭 nginx或 ocserv等占用 80和 443端口的服务,不然

standalone模式会报错

#netstat-lntpu|egrep'80|443'

tcp000.0.0.0:800.0.0.0:*LISTEN12245/nginx:master

#servicenginxstop

Redirectingto/bin/systemctlstopnginx.service

#netstat-lntpu|egrep'80|443'

执行 standalone模式:

certbotcertonly--standalone\

[email protected]\

-dexample.com-dwww.example.com\

--user-agent""--noninteractive\

--text--verbose--debug

如果顺利将在 /etc/letsencrypt/live/example.com目录下生成相关证书:

HOW:ocserv

113

Page 114: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

#certbotcertonly--standalone--emailbob@outwall.com-doutwall.com--us

er-agent""--agree-tos--noninteractive--text--verbose--debug

certbot.main:Savingdebuglogto/var/log/letsencrypt/letsencrypt.log

requests.packages.urllib3.connectionpool:StartingnewHTTPSconnection(1):

acme-v01.api.letsencrypt.org

certbot.auth_handler:Performingthefollowingchallenges:

certbot.auth_handler:tls-sni-01challengeforoutwall.com

certbot.auth_handler:Waitingforverification...

certbot.auth_handler:Cleaningupchallenges

certbot.crypto_util:Generatingkey(2048bits):/etc/letsencrypt/keys/0001_

key-certbot.pem

certbot.crypto_util:CreatingCSR:/etc/letsencrypt/csr/0001_csr-certbot.pem

certbot.reporter:Reportingtouser:Congratulations!Yourcertificateandc

hainhavebeensavedat/etc/letsencrypt/live/outwall.com/fullchain.pem.Yo

urcertwillexpireon2017-01-09.Toobtainanewortweakedversionofth

iscertificateinthefuture,simplyruncertbotagain.Tonon-interactivel

yrenew*all*ofyourcertificates,run"certbotrenew"

certbot.reporter:Reportingtouser:IfyoulikeCertbot,pleaseconsidersu

pportingourworkby:

DonatingtoISRG/Let'sEncrypt:https://letsencrypt.org/donate

DonatingtoEFF:https://eff.org/donate-le

IMPORTANTNOTES:

-Congratulations!Yourcertificateandchainhavebeensavedat

/etc/letsencrypt/live/outwall.com/fullchain.pem.Yourcertwill

expireon2017-01-09.Toobtainanewortweakedversionofthis

certificateinthefuture,simplyruncertbotagain.To

non-interactivelyrenew*all*ofyourcertificates,run"certbot

renew"

-IfyoulikeCertbot,pleaseconsidersupportingourworkby:

DonatingtoISRG/Let'sEncrypt:https://letsencrypt.org/donate

DonatingtoEFF:https://eff.org/donate-le

对应目录树:

HOW:ocserv

114

Page 115: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

#tree/etc/letsencrypt/

/etc/letsencrypt/

├──accounts

│└──acme-v01.api.letsencrypt.org

│└──directory

│└──3b24e8b936a74588021d76401ee376cd

│├──meta.json

│├──private_key.json

│└──regr.json

├──archive

│└──outwall.com

│├──cert1.pem

│├──chain1.pem

│├──fullchain1.pem

│└──privkey1.pem

├──csr

│└──0001_csr-certbot.pem

├──keys

│└──0001_key-certbot.pem

├──live

│└──outwall.com

│├──cert.pem->../../archive/outwall.com/cert1.pem

│├──chain.pem->../../archive/outwall.com/chain1.pem

│├──fullchain.pem->../../archive/outwall.com/fullchain1.pem

│├──privkey.pem->../../archive/outwall.com/privkey1.pem

│├──root.pem

│└──trusted.pem

└──renewal

└──outwall.com.conf

编辑ocserv配置文件 /etc/ocserv/ocserv.conf修改 server-cert和 server-key参数:

server-cert=/etc/letsencrypt/live/example.com/fullchain.pem

server-key=/etc/letsencrypt/live/example.com/privkey.pem

重启服务:

HOW:ocserv

115

Page 116: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

serviceocservrestart

staging注意: --staging是用来测试申请证书的环境的测试模式:

--test-cert,--staging

Usethestagingservertoobtaintest(invalid)certs;

equivalentto--serverhttps://acme-staging.api.letsencrypt.org/directory(

default:False)

certbotrenewal--dry-run

HOW:ocserv

116

Page 117: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

#certbotcertonly--standalone--emailbob@outwall.com-doutwall.com--us

er-agent""--agree-tos--noninteractive--text--verbose--test-cert--deb

ug

2016-10-0717:42:31,990:INFO:certbot.main:Savingdebuglogto/var/log/lets

encrypt/letsencrypt.log

2016-10-0717:42:33,107:INFO:requests.packages.urllib3.connectionpool:Start

ingnewHTTPSconnection(1):acme-staging.api.letsencrypt.org

2016-10-0717:42:33,371:INFO:certbot.auth_handler:Performingthefollowing

challenges:

2016-10-0717:42:33,371:INFO:certbot.auth_handler:tls-sni-01challengefor

outwall.com

2016-10-0717:42:33,425:INFO:certbot.auth_handler:Waitingforverification.

..

2016-10-0717:42:36,570:INFO:certbot.auth_handler:Cleaningupchallenges

2016-10-0717:42:36,767:INFO:certbot.crypto_util:Generatingkey(2048bits)

:/etc/letsencrypt/keys/0000_key-certbot.pem

2016-10-0717:42:36,773:INFO:certbot.crypto_util:CreatingCSR:/etc/letsenc

rypt/csr/0000_csr-certbot.pem

2016-10-0717:42:37,130:INFO:certbot.reporter:Reportingtouser:Congratula

tions!Yourcertificateandchainhavebeensavedat/etc/letsencrypt/live/

outwall.com/fullchain.pem.Yourcertwillexpireon2017-01-05.Toobtaina

newortweakedversionofthiscertificateinthefuture,simplyruncertb

otagain.Tonon-interactivelyrenew*all*ofyourcertificates,run"certb

otrenew"

IMPORTANTNOTES:

-Congratulations!Yourcertificateandchainhavebeensavedat

/etc/letsencrypt/live/outwall.com/fullchain.pem.Yourcertwill

expireon2017-01-05.Toobtainanewortweakedversionofthis

certificateinthefuture,simplyruncertbotagain.To

non-interactivelyrenew*all*ofyourcertificates,run"certbot

renew"

/etc/letsencrypt/renewal/outwall.com.conf配置文件:

HOW:ocserv

117

Page 118: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

#renew_before_expiry=30days

version=0.8.1

cert=/etc/letsencrypt/live/outwall.com/cert.pem

privkey=/etc/letsencrypt/live/outwall.com/privkey.pem

chain=/etc/letsencrypt/live/outwall.com/chain.pem

fullchain=/etc/letsencrypt/live/outwall.com/fullchain.pem

#Optionsusedintherenewalprocess

[renewalparams]

authenticator=standalone

installer=None

account=...

user_agent=""

server=https://acme-staging.api.letsencrypt.org/directory

TODO: certbotrenew--renew-hookrestart_ocerv.sh在证书续期后重启ocerv服务:

--renew-hookRENEW_HOOKCommandtoberuninashellonceforeachsuccessfullyrenewedcertificate.Forthiscommand,theshellvariable$RENEWED_LINEAGEwillpointtotheconfiglivesubdirectorycontainingthenewcertsandkeys;theshellvariable$RENEWED_DOMAINSwillcontainaspace-delimitedlistofrenewedcertdomains(default:None)

魔兽世界TCP和UDP端

TCP11193724

UPD3724(一般用不到,语音聊天)

游戏服务器TCP3724

登录服务器TCP8085

MozillaSSLConfigurationGenerator

https://mozilla.github.io/server-side-tls/ssl-config-generator/

HOW:ocserv

118

Page 119: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

nginx.conf file commentcert.pem servercertonlychain.pem intermediates

ssl_certificate fullchain.pem servercert+intermediates

ssl_certificate_key privkey.pem privatekey

QualysSSLLabs提供了全面的SSL安全性测试,填写你的网站域名,给自己的HTTPS配置

打个分

https://www.ssllabs.com/ssltest/index.html

https://community.letsencrypt.org/t/nginx-wordpress-sec-error-unknown-issuer/4071/4

server{

listen80;

server_namewww.marzycielskapoczta.pl;

return301https://marzycielskapoczta.pl$request_uri;

}

server{

listen443ssl;

server_namewww.marzycielskapoczta.pl;

root/disk2/wordpress;

#certssenttotheclientinSERVERHELLOareconcatenatedinssl_cert

ificate

ssl_certificate/etc/letsencrypt/live/www.marzycielskapoczta.pl/fullcha

in.pem;

ssl_certificate_key/etc/letsencrypt/live/www.marzycielskapoczta.pl/pri

vkey.pem;

ssl_session_timeout1d;

ssl_session_cacheshared:SSL:50m;

ssl_session_ticketsoff;

#Diffie-HellmanparameterforDHEciphersuites,recommended2048bits

ssl_dhparam/etc/ssl/certs/dhparam.pem;

#intermediateconfiguration.tweaktoyourneeds.

ssl_protocolsTLSv1TLSv1.1TLSv1.2;

ssl_ciphers'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:

HOW:ocserv

119

Page 120: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GC

M-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDH

E-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA

-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-A

ES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DH

E-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:ECDHE-RSA-DES-CBC

3-SHA:ECDHE-ECDSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-S

HA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:

!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DE

S-CBC3-SHA:!KRB5-DES-CBC3-SHA';

ssl_prefer_server_cipherson;

#HSTS(ngx_http_headers_moduleisrequired)(15768000seconds=6mont

hs)

add_headerStrict-Transport-Securitymax-age=15768000;

#OCSPStapling---

#fetchOCSPrecordsfromURLinssl_certificateandcachethem

ssl_staplingon;

ssl_stapling_verifyon;

##verifychainoftrustofOCSPresponseusingRootCAandIntermediat

ecerts

ssl_trusted_certificate/etc/letsencrypt/live/www.marzycielskapoczta.pl

/fullchain.pem;

}

http://nginx.org/en/docs/http/configuring_https_servers.html#chains

openssls_client-connectwww.godaddy.com:443

curl-shttps://acme-staging.api.letsencrypt.org/acme/issuer-cert|openssl

x509-informder-text

curlhttp://cert.stg-root-x1.letsencrypt.org/|opensslx509-informder-o

utformpem-text

使用 --test-cert参数创建的测试证书:

HOW:ocserv

120

Page 121: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

#certbotcertonly--standalone--emailbob@outwall.com-doutwall.com--us

er-agent""--agree-tos--noninteractive--text--verbose--test-cert--deb

ug

2016-10-0717:42:31,990:INFO:certbot.main:Savingdebuglogto/var/log/lets

encrypt/letsencrypt.log

2016-10-0717:42:33,107:INFO:requests.packages.urllib3.connectionpool:Start

ingnewHTTPSconnection(1):acme-staging.api.letsencrypt.org

2016-10-0717:42:33,371:INFO:certbot.auth_handler:Performingthefollowing

challenges:

2016-10-0717:42:33,371:INFO:certbot.auth_handler:tls-sni-01challengefor

outwall.com

2016-10-0717:42:33,425:INFO:certbot.auth_handler:Waitingforverification.

..

2016-10-0717:42:36,570:INFO:certbot.auth_handler:Cleaningupchallenges

2016-10-0717:42:36,767:INFO:certbot.crypto_util:Generatingkey(2048bits)

:/etc/letsencrypt/keys/0000_key-certbot.pem

2016-10-0717:42:36,773:INFO:certbot.crypto_util:CreatingCSR:/etc/letsenc

rypt/csr/0000_csr-certbot.pem

2016-10-0717:42:37,130:INFO:certbot.reporter:Reportingtouser:Congratula

tions!Yourcertificateandchainhavebeensavedat/etc/letsencrypt/live/

outwall.com/fullchain.pem.Yourcertwillexpireon2017-01-05.T

oobtainanewortweakedversionofthiscertificateinthefuture,simply

runcertbotagain.Tonon-interactivelyrenew*all*ofyourcertificates,

run"certbotrenew"

IMPORTANTNOTES:

-Congratulations!Yourcertificateandchainhavebeensavedat

/etc/letsencrypt/live/outwall.com/fullchain.pem.Yourcertwill

expireon2017-01-05.Toobtainanewortweakedversionofthis

certificateinthefuture,simplyruncertbotagain.To

non-interactivelyrenew*all*ofyourcertificates,run"certbot

renew"

证书的 CN是 FakeLEIntermediateX1不给信任的, --test-cert仅仅用来测试证书

链的:

#opensslx509-incert.pem-issuer-noout

issuer=/CN=FakeLEIntermediateX1

HOW:ocserv

121

Page 122: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

https://community.letsencrypt.org/t/browser-not-trusted-certificate-authority/7981/4

youarecreatingyourcertificateusingLet'sEncryptstaging(testserver)sothecertcreatedforyourdomainhasbeenissuedbyhappyhackerfakeCA.ThisLet'sEncryptstagingservershouldbeusedjusttotestthatyourclientisworkingfineandcangeneratethechallenges,certificates...andsoonbutifyouwanttocreateavalidcertyoushouldusetherightserverin letsencrypt-autocommand.

Forstagingis:

--serverhttps://acme-staging.api.letsencrypt.org/directory

Forproductionis:

--serverhttps://acme-v01.api.letsencrypt.org/directory

InlastversionofLet'sEncryptclient(0.1.1)ifyoudon'tspecifyaserveritdefaultstoproductionandifyouwanttousestagingyoucanspecifytheserverforstagingorjustuseoneoftheseswitches( --test-certor --staging).

Thisisthehelpinfofortheseswitches:

--test-cert,--staging

Usethestagingservertoobtaintest(invalid)certs;

equivalentto--serverhttps://acme-

staging.api.letsencrypt.org/directory(default:False)

https://community.letsencrypt.org/t/cn-fake-le-intermediate-x1/13437

Thatmeansyouissuedthosecertificatesagainstthestagingserver(possiblywith --test-certor --dry-run).

https://gist.github.com/kyhau/1a02ba63958b3da874bc

Createcertificate

$sudo./[email protected]

agree-tos-dhi.helloworld.com

HOW:ocserv

122

Page 123: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

Ifyouhaveanexistingapacheconfigwithwildcardserveralias:

$sudo./[email protected]

hi.helloworld.com--serverhttps://acme-v01.api.letsencrypt.org/directory

For --server:

acme-v01.api.letsencrypt.org(Production)

acme-staging.api.letsencrypt.org(Staging)

Needtouse --serverhttps://acme-v01.api.letsencrypt.org/directory.Notusing--server,orusing --serverhttps://acme-staging.api.letsencrypt.org/directory,theCertificateIssuewillbe CN=happyhackerfakeCA.

重命名staging相关的目录和文件,重新生成正式使用的证书:

/etc/letsencrypt/accounts

/etc/letsencrypt/renewal

#certbotcertonly--standalone--emailbob@outwall.com-doutwall.com--us

er-agent""--agree-tos--noninteractive--text--verbose--debug

2016-10-1122:22:38,177:INFO:certbot.main:Savingdebuglogto/var/log/lets

encrypt/letsencrypt.log

2016-10-1122:22:39,173:INFO:requests.packages.urllib3.connectionpool:Start

ingnewHTTPSconnection(1):acme-v01.api.letsencrypt.org

2016-10-1122:22:39,288:WARNING:certbot.main:Renewalconffile/etc/letsenc

rypt/renewal/outwall.com.confisbroken.Skipping.

2016-10-1122:22:39,463:INFO:certbot.auth_handler:Performingthefollowing

challenges:

2016-10-1122:22:39,463:INFO:certbot.auth_handler:tls-sni-01challengefor

outwall.com

2016-10-1122:22:39,526:INFO:certbot.auth_handler:Waitingforverification.

..

2016-10-1122:22:42,667:INFO:certbot.auth_handler:Cleaningupchallenges

2016-10-1122:22:43,247:INFO:certbot.crypto_util:Generatingkey(2048bits)

:/etc/letsencrypt/keys/0003_key-certbot.pem

2016-10-1122:22:43,252:INFO:certbot.crypto_util:CreatingCSR:/etc/letsenc

rypt/csr/0003_csr-certbot.pem

HOW:ocserv

123

Page 124: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

2016-10-1122:22:43,605:INFO:certbot.reporter:Reportingtouser:Congratula

tions!Yourcertificateandchainhavebeensavedat/etc/letsencrypt/live/

outwall.com-0001/fullchain.pem.Yourcertwillexpireon2017-01-09.Toobt

ainanewortweakedversionofthiscertificateinthefuture,simplyrun

certbotagain.Tonon-interactivelyrenew*all*ofyourcertificates,run"

certbotrenew"

2016-10-1122:22:43,605:INFO:certbot.reporter:Reportingtouser:Ifyoulik

eCertbot,pleaseconsidersupportingourworkby:

DonatingtoISRG/Let'sEncrypt:https://letsencrypt.org/donate

DonatingtoEFF:https://eff.org/donate-le

IMPORTANTNOTES:

-Congratulations!Yourcertificateandchainhavebeensavedat

/etc/letsencrypt/live/outwall.com-0001/fullchain.pem.Yourcertwill

expireon2017-01-09.Toobtainanewortweakedversionofthis

certificateinthefuture,simplyruncertbotagain.To

non-interactivelyrenew*all*ofyourcertificates,run"certbot

renew"

-IfyoulikeCertbot,pleaseconsidersupportingourworkby:

DonatingtoISRG/Let'sEncrypt:https://letsencrypt.org/donate

DonatingtoEFF:https://eff.org/donate-le

[email protected]/etc/letsencrypt/live/outwall.com

#certbotcertonly--standalone--emailbob@outwall.com-doutwall.com--us

er-agent""--agree-tos--noninteractive--text--verbose--debug

2016-10-1122:24:13,758:INFO:certbot.main:Savingdebuglogto/var/log/lets

encrypt/letsencrypt.log

2016-10-1122:24:14,621:INFO:requests.packages.urllib3.connectionpool:Start

ingnewHTTPSconnection(1):acme-v01.api.letsencrypt.org

2016-10-1122:24:14,736:INFO:certbot.renewal:Certnotyetdueforrenewal

---------------------------------------------------------------------------

----

Certificatenotyetdueforrenewal;noactiontaken.

---------------------------------------------------------------------------

----

#tree.

HOW:ocserv

124

Page 125: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

.

├──accounts

│├──acme-staging.api.letsencrypt.org

││└──directory

││└──d219a4834295b92c10b2c1525ca086b3

││├──meta.json

││├──private_key.json

││└──regr.json

│└──acme-v01.api.letsencrypt.org

│└──directory

│└──3b24e8b936a74588021d76401ee376cd

│├──meta.json

│├──private_key.json

│└──regr.json

├──archive

│├──outwall.com-0001

││├──cert1.pem

││├──chain1.pem

││├──fullchain1.pem

││└──privkey1.pem

│└──outwall.com.bak

│├──cert1.pem

│├──chain1.pem

│├──fullchain1.pem

│└──privkey1.pem

├──csr

│├──0000_csr-certbot.pem

│├──0001_csr-certbot.pem

│├──0002_csr-certbot.pem

│└──0003_csr-certbot.pem

├──keys

│├──0000_key-certbot.pem

│├──0001_key-certbot.pem

│├──0002_key-certbot.pem

│└──0003_key-certbot.pem

├──live

│├──outwall.com

││└──root

│└──outwall.com-0001

│├──cert.pem->../../archive/outwall.com-0001/cert1.pem

│├──chain.pem->../../archive/outwall.com-0001/chain1.pem

│├──fullchain.pem->../../archive/outwall.com-0001/fullchain1.pem

HOW:ocserv

125

Page 126: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

│└──privkey.pem->../../archive/outwall.com-0001/privkey1.pem

└──renewal

├──outwall.com-0001.conf

└──outwall.com.conf.bak

16directories,29files

crontabhttps://calomel.org/lets_encrypt_client.html

HOW:ocserv

126

Page 127: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

#!/bin/sh

#

#CheckifanSSLcertificatewillexpireinlessthen30days.

#https://calomel.org/lets_encrypt_client.html

#

#remotessldomaintomonitor

HostName="example.org"

#certificateexpiration,remotecheck

CertificateExpireDate=`echo|openssls_client-connect$HostName:4432>/de

v/null|opensslx509-noout-enddate|sed's/notAfter=//'`

#certificateexpiration,converttounixtime

UnixCertExpireDate=`date-d"$CertificateExpireDate"+"%s"`

#currentdateinunixtime

UnixCurrentDate=`date+%s`

#differenceoftheexpirationdateandthecurrentdate

UnixTimeDiff=`expr$UnixCertExpireDate-$UnixCurrentDate`

#Ifcertificateexpireinlessthen30days(2592000seconds)sendnotific

ation

if[$UnixTimeDiff-lt2592000];then

echo"NOTICE:$HostNamesslcertificatewillexpireinlessthen30days

."|mail-s"$HostNamesslcertificatewillexpireinlessthen30days"u

[email protected]

fi

使用 certtool查看cert( -i参数)和privatekey( -k参数)信息:

mancerttool

-i,--certificate-infoPrintinformationonthegivencertificate.

-k,--key-infoPrintinformationonaprivatekey.

查看证书信息:

HOW:ocserv

127

Page 128: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

#certtool--infile=ca.crt-i

X.509CertificateInformation:

Version:3

SerialNumber(hex):01

Issuer:CN=outwall,O=outwallclub

Validity:

NotBefore:SatOct0812:54:14UTC2016

NotAfter:TueOct0612:54:14UTC2026

Subject:CN=outwall,O=outwallclub

SubjectPublicKeyAlgorithm:RSA

AlgorithmSecurityLevel:Medium(2048bits)

查看私钥信息:

#certtool--infile=ca-key.pem-k

PublicKeyInfo:

PublicKeyAlgorithm:RSA

KeySecurityLevel:Medium(2048bits)

HOW:ocserv

128

Page 129: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

#diff-yocserv.confocserv.conf.0.11.5|egrep-iw'[|<]'

#auth="pam"|auth="pam

"

auth="certificate"|#auth="ce

rtificate"

try-mtu-discovery=true|try-mtu-dis

covery=false

server-cert=/etc/letsencrypt/live/beta.outman.im/fullchain.|server-cert

=/etc/pki/ocserv/public/server.crt

server-key=/etc/letsencrypt/live/beta.outman.im/privkey.pem|server-key

=/etc/pki/ocserv/private/server.key

ca-cert=/etc/ocserv/certs/ca.crt|ca-cert=/

etc/pki/ocserv/cacerts/ca.crt

cert-group-oid=2.5.4.11|#cert-group

-oid=2.5.4.11

default-domain=beta.outman.im|default-dom

ain=example.com

ipv4-network=192.168.123.0|#ipv4-netwo

rk=192.168.1.0

ipv4-netmask=255.255.255.0|#ipv4-netma

sk=255.255.255.0

dns=8.8.8.8|#dns=192.

168.1.2

dns=8.8.4.4<

HOW:ocserv

129

Page 130: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

openwrt

opkg

root@LEDE:~#opkginstallip

Installingip-full(4.4.0-9)toroot...

Downloadinghttp://downloads.lede-project.org/releases/17.01.2/packages/mip

sel_24kc/base/ip-full_4.4.0-9_mipsel_24kc.ipk

Configuringip-full.

root@LEDE:~#opkglist-Aip-*

ip-bridge-4.4.0-9-Bridgeconfigurationutilityfromiproute2

ip-full-4.4.0-9-Routingcontrolutility(Full)

ip-tiny-4.4.0-9-Routingcontrolutility(Minimal)

root@LEDE:~#opkglistip-*

ip-bridge-4.4.0-9-Bridgeconfigurationutilityfromiproute2

ip-full-4.4.0-9-Routingcontrolutility(Full)

ip-tiny-4.4.0-9-Routingcontrolutility(Minimal)

root@LEDE:~#opkgfindip-*

ip-bridge-4.4.0-9-Bridgeconfigurationutilityfromiproute2

ip-full-4.4.0-9-Routingcontrolutility(Full)

ip-tiny-4.4.0-9-Routingcontrolutility(Minimal)

root@LEDE:~#opkginfoip-full

Package:ip-full

Version:4.4.0-9

Depends:libc,libnl-tiny

Provides:ip

Status:installuserinstalled

Section:net

Architecture:mipsel_24kc

Size:112843

Filename:ip-full_4.4.0-9_mipsel_24kc.ipk

Description:Routingcontrolutility(Full)

Installed-Time:1506002529

HOW:openwrt

130

Page 131: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

root@LEDE:~#opkgfilesip

Packageip-full(4.4.0-9)isinstalledonrootandhasthefollowingfiles:

/usr/sbin/ip

root@LEDE:~#opkgfilesip-full

Packageip-full(4.4.0-9)isinstalledonrootandhasthefollowingfiles:

/usr/sbin/ip

root@LEDE:~#opkgfilesshadowsocks-libev

Packageshadowsocks-libev(3.1.0-1)isinstalledonrootandhasthefollow

ingfiles:

/usr/bin/ss-local

/usr/bin/ss-redir

/usr/bin/ss-tunnel

root@LEDE:~#opkgsearch/usr/bin/ss-redir

shadowsocks-libev-3.1.0-1

TPLinkWR703NTPLinkWR703N刷好openwrt需要配置:

默认没有启用无线WIFI默认为AP模式需要改为路由模式

failsafe开机等待指示灯开始闪烁(大约通电后 10s)立即按住reset键 3s指示灯变为快速闪烁

default设置root密码:

HOW:openwrt

131

Page 132: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

$telnet192.168.1.1

Trying192.168.1.1...

Connectedto192.168.1.1.

Escapecharacteris'^]'.

===IMPORTANT============================

Use'passwd'tosetyourloginpassword

thiswilldisabletelnetandenableSSH

------------------------------------------

BusyBoxv1.23.2(2016-01-0218:01:44CET)built-inshell(ash)

_________________

||.-----.-----.-----.||||.----.||_

|-||_|-__|||||||_||_|

|_______||__|_____|__|__||________||__||____|

|__|WIRELESSFREEDOM

-----------------------------------------------------

CHAOSCALMER(15.05.1,r48532)

-----------------------------------------------------

*11/2ozGinShakewithaglassful

*1/4ozTripleSecofbrokeniceandpour

*3/4ozLimeJuiceunstrainedintoagoblet.

*11/2ozOrangeJuice

*1tsp.GrenadineSyrup

-----------------------------------------------------

root@OpenWrt:/#passwd

Changingpasswordforroot

Newpassword:

Retypepassword:

Passwordforrootchangedbyroot

默认ROM占用:

HOW:openwrt

132

Page 133: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

root@OpenWrt:/#df-hT

FilesystemTypeSizeUsedAvailableUse%Mounted

on

rootfsrootfs12.5M472.0K12.0M4%/

/dev/rootsquashfs2.3M2.3M0100%/rom

tmpfstmpfs29.8M300.0K29.5M1%/tmp

tmpfstmpfs29.8M44.0K29.8M0%/tmp/roo

t

tmpfstmpfs512.0K0512.0K0%/dev

/dev/mtdblock3jffs212.5M472.0K12.0M4%/overlay

overlayfs:/overlayoverlay12.5M472.0K12.0M4%/

init配置WIFI无线

删除网桥添加WAN

wireless

WIFI默认配置:

root@OpenWrt:/#ucishowwireless

wireless.radio0=wifi-device

wireless.radio0.type='mac80211'

wireless.radio0.channel='11'

wireless.radio0.hwmode='11g'

wireless.radio0.path='platform/ar933x_wmac'

wireless.radio0.htmode='HT20'

wireless.radio0.disabled='1'

wireless.@wifi-iface[0]=wifi-iface

wireless.@wifi-iface[0].device='radio0'

wireless.@wifi-iface[0].network='lan'

wireless.@wifi-iface[0].mode='ap'

wireless.@wifi-iface[0].ssid='OpenWrt'

wireless.@wifi-iface[0].encryption='none'

root@OpenWrt:/#cat/etc/config/wireless

configwifi-deviceradio0

HOW:openwrt

133

Page 134: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

optiontypemac80211

optionchannel11

optionhwmode11g

optionpath'platform/ar933x_wmac'

optionhtmodeHT20

#REMOVETHISLINETOENABLEWIFI:

optiondisabled1

configwifi-iface

optiondeviceradio0

optionnetworklan

optionmodeap

optionssidOpenWrt

optionencryptionnone

root@OpenWrt:/#wifi

'radio0'isdisabled

'radio0'isdisabled

root@OpenWrt:/#wifistatus

{

"radio0":{

"up":false,

"pending":false,

"autostart":true,

"disabled":true,

"config":{

"channel":"11",

"hwmode":"11g",

"path":"platform\/ar933x_wmac",

"htmode":"HT20",

"disabled":true

},

"interfaces":[

{

"section":"@wifi-iface[0]",

"config":{

"mode":"ap",

"ssid":"OpenWrt",

"encryption":"none",

"network":[

"lan"

HOW:openwrt

134

Page 135: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

],

"mode":"ap"

}

}

]

}

}

UCI配置WIFI命令:

##wireless

ucisetwireless.@wifi-iface[0].ssid=FUCK_GFW

ucisetwireless.@wifi-iface[0].encryption=psk2

ucisetwireless.@wifi-iface[0].key=v_v.fuckgfw

ucisetwireless.radio0.disabled=0

ucichanges

ucicommit

实例:

HOW:openwrt

135

Page 136: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

root@OpenWrt:/#ucisetwireless.@wifi-iface[0].ssid=FUCK_GFW

root@OpenWrt:/#ucisetwireless.@wifi-iface[0].encryption=psk2

root@OpenWrt:/#ucisetwireless.@wifi-iface[0].key=v_v.fuckgfw

root@OpenWrt:/#ucisetwireless.radio0.disabled=0

root@OpenWrt:/#ucichanges

wireless.cfg033579.ssid='FUCK_GFW'

wireless.cfg033579.encryption='psk2'

wireless.cfg033579.key='v_v.fuckgfw'

wireless.radio0.disabled='0'

root@OpenWrt:/#ucicommit

root@OpenWrt:/#ucichanges

root@OpenWrt:/#cat/etc/config/wireless

configwifi-device'radio0'

optiontype'mac80211'

optionchannel'11'

optionhwmode'11g'

optionpath'platform/ar933x_wmac'

optionhtmode'HT20'

optiondisabled'0'

configwifi-iface

optiondevice'radio0'

optionnetwork'lan'

optionmode'ap'

optionssid'FUCK_GFW'

optionencryption'psk2'

optionkey'v_v.fuckgfw'

使用 wifi命令启用WIFI:

HOW:openwrt

136

Page 137: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

root@OpenWrt:/#wifi

root@OpenWrt:/#wifistatus

{

"radio0":{

"up":true,

"pending":false,

"autostart":true,

"disabled":false,

"config":{

"channel":"11",

"hwmode":"11g",

"path":"platform\/ar933x_wmac",

"htmode":"HT20",

"disabled":false

},

"interfaces":[

{

"section":"@wifi-iface[0]",

"ifname":"wlan0",

"config":{

"mode":"ap",

"ssid":"FUCK_GFW",

"encryption":"psk2",

"key":"v_v.fuckgfw",

"network":[

"lan"

],

"mode":"ap"

}

}

]

}

}

https://wiki.openwrt.org/zh-cn/doc/uci/wireless

Openwrt使用 wifi命令启用、重启、关闭无线接口:

启动WIFI不带参数,直接运行 wifi命令

修改无线配置重启WIFI使配置生效,同样也是不带参数,直接运行 wifi命令

HOW:openwrt

137

Page 138: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

关闭WIFI加上 down参数使用 wifidown

network桥接默认配置:

root@OpenWrt:~#brctlshow

bridgenamebridgeidSTPenabledinterfaces

br-lan7fff.c8e7d8d4b54enoeth0

wlan0

root@OpenWrt:~#ifconfig

br-lanLinkencap:EthernetHWaddrC8:E7:D8:D4:B5:4E

inetaddr:192.168.1.1Bcast:192.168.1.255Mask:255.255.255.0

inet6addr:fe80::cae7:d8ff:fed4:b54e/64Scope:Link

inet6addr:fdd9:add4:d5f5::1/60Scope:Global

UPBROADCASTRUNNINGMULTICASTMTU:1500Metric:1

RXpackets:345errors:0dropped:0overruns:0frame:0

TXpackets:327errors:0dropped:0overruns:0carrier:0

collisions:0txqueuelen:0

RXbytes:37843(36.9KiB)TXbytes:31467(30.7KiB)

eth0Linkencap:EthernetHWaddrC8:E7:D8:D4:B5:4E

UPBROADCASTRUNNINGMULTICASTMTU:1500Metric:1

RXpackets:0errors:0dropped:0overruns:0frame:0

TXpackets:28errors:0dropped:0overruns:0carrier:0

collisions:0txqueuelen:1000

RXbytes:0(0.0B)TXbytes:3678(3.5KiB)

Interrupt:4

loLinkencap:LocalLoopback

inetaddr:127.0.0.1Mask:255.0.0.0

inet6addr:::1/128Scope:Host

UPLOOPBACKRUNNINGMTU:65536Metric:1

RXpackets:48errors:0dropped:0overruns:0frame:0

TXpackets:48errors:0dropped:0overruns:0carrier:0

collisions:0txqueuelen:0

RXbytes:3264(3.1KiB)TXbytes:3264(3.1KiB)

wlan0Linkencap:EthernetHWaddrC8:E7:D8:D4:B5:4E

inet6addr:fe80::cae7:d8ff:fed4:b54e/64Scope:Link

UPBROADCASTRUNNINGMULTICASTMTU:1500Metric:1

HOW:openwrt

138

Page 139: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

RXpackets:344errors:0dropped:0overruns:0frame:0

TXpackets:343errors:0dropped:0overruns:0carrier:0

collisions:0txqueuelen:1000

RXbytes:42653(41.6KiB)TXbytes:40587(39.6KiB)

root@OpenWrt:/#cat/etc/config/network

configinterface'loopback'

optionifname'lo'

optionproto'static'

optionipaddr'127.0.0.1'

optionnetmask'255.0.0.0'

configglobals'globals'

optionula_prefix'fdf5:87ce:25a3::/48'

configinterface'lan'

optionifname'eth0'

optionforce_link'1'

optiontype'bridge'

optionproto'static'

optionipaddr'192.168.1.1'

optionnetmask'255.255.255.0'

optionip6assign'60'

由AP模式改为路由模式:删除网桥添加WAN设备

HOW:openwrt

139

Page 140: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

##unbridgeLAN

ucideletenetwork.lan.type

ucideletenetwork.lan.ifname

ucisetnetwork.lan._orig_bridge=false

ucisetnetwork.lan._orig_ifname=eth0

ucisetnetwork.lan.ipaddr=192.168.12.1

ucisetdhcp.lan.ra_management=1

##createWAN

ucisetnetwork.wan=interface

ucisetnetwork.wan.ifname=eth0

ucisetnetwork.wan.proto=dhcp

ucisetnetwork.wan.peerdns=0##NOTuseupstreamDNSas/etc/res

olv.conf

实例:

root@OpenWrt:/#ucideletenetwork.lan.type

root@OpenWrt:/#ucideletenetwork.lan.ifname

root@OpenWrt:/#ucisetnetwork.lan._orig_bridge=false

root@OpenWrt:/#ucisetnetwork.lan._orig_ifname=eth0

root@OpenWrt:/#ucisetnetwork.lan.ipaddr=192.168.12.1

root@OpenWrt:/#

root@OpenWrt:/#ucisetdhcp.lan.ra_management=1

root@OpenWrt:/#ucisetnetwork.wan=interface

root@OpenWrt:/#ucisetnetwork.wan.ifname=eth0

root@OpenWrt:/#ucisetnetwork.wan.proto=dhcp

root@OpenWrt:/#ucisetnetwork.wan.peerdns=0

root@OpenWrt:/#ucichanges

dhcp.lan.ra_management='1'

-network.lan.type

-network.lan.ifname

network.lan._orig_bridge='false'

network.lan._orig_ifname='eth0'

network.lan.ipaddr='192.168.12.1'

network.wan='interface'

network.wan.ifname='eth0'

network.wan.proto='dhcp'

network.wan.peerdns='0'

HOW:openwrt

140

Page 141: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

https://wiki.openwrt.org/doc/techref/odhcpd

ra_managementRAmanagementmode

value mean0 noM-FlagbutA-Flag

1 bothMandA

2 MbutnotA

重启网络服务

root@OpenWrt:/#/etc/init.d/networkrestart

连接WIFI使用新IP登录: [email protected]

HOW:openwrt

141

Page 142: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

root@OpenWrt:~#brctlshow

bridgenamebridgeidSTPenabledinterfaces

root@OpenWrt:~#ifconfig

eth0Linkencap:EthernetHWaddrC8:E7:D8:D4:B5:4E

inetaddr:192.168.8.178Bcast:192.168.8.255Mask:255.255.255.0

inet6addr:fe80::cae7:d8ff:fed4:b54e/64Scope:Link

UPBROADCASTRUNNINGMULTICASTMTU:1500Metric:1

RXpackets:257errors:0dropped:0overruns:0frame:0

TXpackets:220errors:0dropped:0overruns:0carrier:0

collisions:0txqueuelen:1000

RXbytes:43320(42.3KiB)TXbytes:32401(31.6KiB)

Interrupt:4

loLinkencap:LocalLoopback

inetaddr:127.0.0.1Mask:255.0.0.0

inet6addr:::1/128Scope:Host

UPLOOPBACKRUNNINGMTU:65536Metric:1

RXpackets:17errors:0dropped:0overruns:0frame:0

TXpackets:17errors:0dropped:0overruns:0carrier:0

collisions:0txqueuelen:0

RXbytes:3511(3.4KiB)TXbytes:3511(3.4KiB)

wlan0Linkencap:EthernetHWaddrC8:E7:D8:D4:B5:4E

inetaddr:192.168.12.1Bcast:192.168.12.255Mask:255.255.255.0

inet6addr:fe80::cae7:d8ff:fed4:b54e/64Scope:Link

inet6addr:fdd9:add4:d5f5::1/60Scope:Global

UPBROADCASTRUNNINGMULTICASTMTU:1500Metric:1

RXpackets:261errors:0dropped:0overruns:0frame:0

TXpackets:250errors:0dropped:0overruns:0carrier:0

collisions:0txqueuelen:1000

RXbytes:38999(38.0KiB)TXbytes:51107(49.9KiB)

DHCPDHCP默认配置(后续配置ChinaDNS时再修改DHCP配置):

root@OpenWrt:/#ucishowdhcp

dhcp.@dnsmasq[0]=dnsmasq

HOW:openwrt

142

Page 143: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

dhcp.@dnsmasq[0].domainneeded='1'

dhcp.@dnsmasq[0].boguspriv='1'

dhcp.@dnsmasq[0].filterwin2k='0'

dhcp.@dnsmasq[0].localise_queries='1'

dhcp.@dnsmasq[0].rebind_protection='1'

dhcp.@dnsmasq[0].rebind_localhost='1'

dhcp.@dnsmasq[0].local='/lan/'

dhcp.@dnsmasq[0].domain='lan'

dhcp.@dnsmasq[0].expandhosts='1'

dhcp.@dnsmasq[0].nonegcache='0'

dhcp.@dnsmasq[0].authoritative='1'

dhcp.@dnsmasq[0].readethers='1'

dhcp.@dnsmasq[0].leasefile='/tmp/dhcp.leases'

dhcp.@dnsmasq[0].resolvfile='/tmp/resolv.conf.auto'

dhcp.@dnsmasq[0].localservice='1'

dhcp.lan=dhcp

dhcp.lan.interface='lan'

dhcp.lan.start='100'

dhcp.lan.limit='150'

dhcp.lan.leasetime='12h'

dhcp.lan.dhcpv6='server'

dhcp.lan.ra='server'

dhcp.wan=dhcp

dhcp.wan.interface='wan'

dhcp.wan.ignore='1'

dhcp.odhcpd=odhcpd

dhcp.odhcpd.maindhcp='0'

dhcp.odhcpd.leasefile='/tmp/hosts/odhcpd'

dhcp.odhcpd.leasetrigger='/usr/sbin/odhcpd-update'

root@OpenWrt:/#cat/etc/config/dhcp

configdnsmasq

optiondomainneeded'1'

optionboguspriv'1'

optionfilterwin2k'0'

optionlocalise_queries'1'

optionrebind_protection'1'

optionrebind_localhost'1'

optionlocal'/lan/'

optiondomain'lan'

optionexpandhosts'1'

HOW:openwrt

143

Page 144: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

optionnonegcache'0'

optionauthoritative'1'

optionreadethers'1'

optionleasefile'/tmp/dhcp.leases'

optionresolvfile'/tmp/resolv.conf.auto'

optionlocalservice'1'

configdhcp'lan'

optioninterface'lan'

optionstart'100'

optionlimit'150'

optionleasetime'12h'

optiondhcpv6'server'

optionra'server'

configdhcp'wan'

optioninterface'wan'

optionignore'1'

configodhcpd'odhcpd'

optionmaindhcp'0'

optionleasefile'/tmp/hosts/odhcpd'

optionleasetrigger'/usr/sbin/odhcpd-update'

root@OpenWrt:/#cat/var/etc/dnsmasq.conf

#auto-generatedconfigfilefrom/etc/config/dhcp

conf-file=/etc/dnsmasq.conf

dhcp-authoritative

domain-needed

localise-queries

read-ethers

bogus-priv

expand-hosts

local-service

domain=lan

server=/lan/

dhcp-leasefile=/tmp/dhcp.leases

resolv-file=/tmp/resolv.conf.auto

addn-hosts=/tmp/hosts

conf-dir=/tmp/dnsmasq.d

stop-dns-rebind

rebind-localhost-ok

HOW:openwrt

144

Page 145: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

dhcp-broadcast=tag:needs-broadcast

dhcp-range=lan,192.168.1.100,192.168.1.249,255.255.255.0,12h

ImageGeneratorImageBuilderCreatecustomImageswithoutcompilinginthebuildsystem

https://wiki.openwrt.org/doc/howto/obtain.firmware.generate

https://wiki.openwrt.org/zh-cn/doc/howto/obtain.firmware.generate

如果不想要下载一个预编译好的镜像文件,或者想要尝试整个编译过程,替代方案是使用镜像生成器(ImageGenerator)(以前被叫做ImageBuilder)。这是一个预编译好的OpenWrt编译环境,适用于在无需编译的条件下创建自定义镜像。

OpenWrtbuildsystem–Usagehttps://wiki.openwrt.org/doc/howto/build

Doeverythingasnon-rootuser

参考:

使用ImageBuilder编译自动翻墙OpenWrt固件

https://softwaredownload.gitbooks.io/openwrt-fanqiang/content/ebook/04.3.html

https://github.com/softwaredownload/openwrt-fanqiang

https://github.com/softwaredownload/openwrt-fanqiang/blob/master/openwrt/default/etc/uci-defaults/defaults

download下载TPLinkWR703N对应的ImageBuilder打包文件:

https://downloads.openwrt.org/chaos_calmer/15.05.1/ar71xx/generic/

HOW:openwrt

145

Page 146: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

mkdir-pv~/openwrt

cd~/openwrt

$timewget-nvhttps://downloads.openwrt.org/chaos_calmer/15.05.1/ar71xx/g

eneric/OpenWrt-ImageBuilder-15.05.1-ar71xx-generic.Linux-x86_64.tar.bz2

2017-08-2720:23:34URL:https://downloads.openwrt.org/chaos_calmer/15.05.1/

ar71xx/generic/OpenWrt-ImageBuilder-15.05.1-ar71xx-generic.Linux-x86_64.tar

.bz2

[143921369/143921369]->"OpenWrt-ImageBuilder-15.05.1-ar71xx-generic.Linux

-x86_64.tar.bz2"[1]

real0m7.381s

user0m0.379s

sys0m2.345s

$timetarxfOpenWrt-ImageBuilder-15.05.1-ar71xx-generic.Linux-x86_64.tar.

bz2

real0m24.645s

user0m22.718s

sys0m1.357s

$ll

total138M

-rw-r--r--1ii138M|2016-03-1601:48|OpenWrt-ImageBuilder-15.05

.1-ar71xx-generic.Linux-x86_64.tar.bz2

drwxr-xr-x8ii4.0K|2016-02-0101:45|OpenWrt-ImageBuilder-15.05

.1-ar71xx-generic.Linux-x86_64/

config配置软件源:修改 repositories.conf文件,增加openwrt-dist(shadowsocks)源

HOW:openwrt

146

Page 147: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

$catrepositories.conf

##Placeyourcustomrepositorieshere,theymustmatchthearchitecturean

dversion.

#src/gzchaos_calmerhttp://downloads.openwrt.org/chaos_calmer/15.05.1/ar7

1xx/generic/packages

#srccustomfile:///usr/src/openwrt/bin/ar71xx/packages

##Remotepackagerepositories

src/gzchaos_calmer_basehttp://downloads.openwrt.org/chaos_calmer/15.05.1/

ar71xx/generic/packages/base

src/gzchaos_calmer_lucihttp://downloads.openwrt.org/chaos_calmer/15.05.1/

ar71xx/generic/packages/luci

src/gzchaos_calmer_packageshttp://downloads.openwrt.org/chaos_calmer/15.0

5.1/ar71xx/generic/packages/packages

src/gzchaos_calmer_routinghttp://downloads.openwrt.org/chaos_calmer/15.05

.1/ar71xx/generic/packages/routing

src/gzchaos_calmer_telephonyhttp://downloads.openwrt.org/chaos_calmer/15.

05.1/ar71xx/generic/packages/telephony

src/gzchaos_calmer_managementhttp://downloads.openwrt.org/chaos_calmer/15

.05.1/ar71xx/generic/packages/management

##openwrt-distforshadowsocks

src/gzopenwrt_disthttp://openwrt-dist.sourceforge.net/packages/OpenWrt/ba

se/ar71xx

src/gzopenwrt_dist_lucihttp://openwrt-dist.sourceforge.net/packages/OpenW

rt/luci

##Thisisthelocalpackagerepository,donotremove!

srcimagebuilderfile:packages

移除软件包:

upnpd

ipv6

ppp*

luci*

uhttpd

files

HOW:openwrt

147

Page 148: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

/etc/uci-defaults//etc/uci-defaults/目录下的脚本用于openwrt固件初始化

openwrtnetwork初始化2014-11-12

/bin/config_generate

Openwrt14.07中在 /etc/init.d/boot脚本会在开机时逐一执行 /etc/uci-deafults/目录下的脚本,执行完之后再删除它。这就保证了该目录下的脚本只会被执行一次,以后再重

启也不会执行到了。除非恢复初厂设置

对应脚本执行代码:

#grep-A7uci-defaults/etc/init.d/boot

cd/etc/uci-defaults||return0

files="$(ls)"

[-z"$files"]&&return0

mkdir-p/tmp/.uci

forfilein$files;do

(."./$(basename$file)")&&rm-f"$file"

done

ucicommit

示例:https://github.com/softwaredownload/openwrt-fanqiang/blob/master/openwrt/wndr4300/etc/uci-defaults/defaults

HOW:openwrt

148

Page 149: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

ucisetnetwork.wan.proto='pppoe'

ucisetnetwork.wan.username='wan-username'

ucisetnetwork.wan.password='wan-password'

ucisetnetwork.wan.peerdns=0

ucicommitnetwork

ucisetwireless.@wifi-device[0].channel=11

ucisetwireless.@wifi-device[0].txpower=17

ucisetwireless.@wifi-device[0].disabled=0

ucisetwireless.@wifi-device[0].country='CN'

ucisetwireless.@wifi-iface[0].mode='ap'

ucisetwireless.@wifi-iface[0].ssid='eastking-fanqiang'

ucisetwireless.@wifi-iface[0].encryption='psk2'

ucisetwireless.@wifi-iface[0].key='icanfly9876'

ucicommitwireless

wifi

ucisetdropbear.@dropbear[0].GatewayPorts='on'

ucicommitdropbear

/etc/init.d/dropbearrestart

ucisetsystem.@system[0].hostname='eastking'#设置主机名

ucisetsystem.@system[0].zonename='Asia/Shanghai'

ucisetsystem.@system[0].timezone='CST-8'

ucicommitsystem

/etc/init.d/systemrestart

#changerootpassword

echo-e"fanqiang\nfanqiang"|(passwd$USER)

/etc/init.d/shadowsocksenable

/etc/init.d/networkrestart

TPLinkWR703N/etc/uci-defaults/defaults初始化脚本:

##WIFI

ucisetwireless.@wifi-device[0].disabled='0'

ucisetwireless.@wifi-device[0].country='CN'

HOW:openwrt

149

Page 150: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

ucisetwireless.@wifi-device[0].channel='auto'

ucisetwireless.@wifi-device[0].txpower='17'

ucisetwireless.@wifi-iface[0]='wifi-iface'

ucisetwireless.@wifi-iface[0].device='radio0'

ucisetwireless.@wifi-iface[0].network='lan'

ucisetwireless.@wifi-iface[0].mode='ap'

ucisetwireless.@wifi-iface[0].ssid='703'

ucisetwireless.@wifi-iface[0].encryption='psk2'

ucisetwireless.@wifi-iface[0].key='v_v.fuckgfw'

ucisetwireless.@wifi-iface[0].hidden='0'

ucicommitwireless

##startWIFI

wifi

##unbridgeLAN

ucideletenetwork.lan.type

ucideletenetwork.lan.ifname

ucisetnetwork.lan._orig_bridge='false'

ucisetnetwork.lan._orig_ifname='eth0'

ucisetnetwork.lan.ipaddr='192.168.3.1'

##createWAN

ucisetnetwork.wan='interface'

ucisetnetwork.wan.ifname='eth0'

ucisetnetwork.wan.proto='dhcp'

ucicommitnetwork

ucisetdhcp.lan.ra_management='1'

ucisetdhcp.@dnsmasq[0].nohosts='1'

ucisetdhcp.@dnsmasq[0].noresolv='1'

ucisetdhcp.@dnsmasq[0].local='127.0.0.1#5353'

ucicommitdhcp

##restart'network'and'DNSmasq'service

/etc/init.d/networkrestart

/etc/init.d/dnsmasqrestart

ucisetsystem.@system[0].hostname='wr703n'

ucisetsystem.@system[0].zonename='Asia/Shanghai'

ucisetsystem.@system[0].timezone='CST-8'

ucicommitsystem

HOW:openwrt

150

Page 151: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

/etc/init.d/systemrestart

ucisetdropbear.@dropbear[0].GatewayPorts='on'

ucisetdropbear.@dropbear[0].Port='2222'

ucicommitdropbear

/etc/init.d/dropbearrestart

##changerootpasswd

echo-e"V_VL.Fuck.GFW\nV_VL.Fuck.GFW"|(passwd$USER)

##SS

ucisetshadowsocks.@general[0]=general

ucisetshadowsocks.@general[0].startup_delay='0'

ucisetshadowsocks.@servers[0]=servers

ucisetshadowsocks.@servers[0].alias='sample'

ucisetshadowsocks.@servers[0].fast_open='0'

ucisetshadowsocks.@servers[0].timeout='60'

ucisetshadowsocks.@servers[0].encrypt_method='rc4-md5'

ucisetshadowsocks.@servers[0].server='45.67.89.10'

ucisetshadowsocks.@servers[0].server_port='12345'

ucisetshadowsocks.@servers[0].password='SS_SRV_PASS'

ucisetshadowsocks.@transparent_proxy[0]=transparent_proxy

ucisetshadowsocks.@transparent_proxy[0].udp_relay_server='nil'

ucisetshadowsocks.@transparent_proxy[0].local_port='1234'

SS_CFGID=$(ucishowshadowsocks.@servers[0].alias|awk-F'.''{print$2}')

ucisetshadowsocks.@transparent_proxy[0].main_server="$SS_CFGID"

ucisetshadowsocks.@socks5_proxy[0]=socks5_proxy

ucisetshadowsocks.@socks5_proxy[0].server='nil'

ucisetshadowsocks.@socks5_proxy[0].local_port='1080'

ucisetshadowsocks.@port_forward[0]=port_forward

ucisetshadowsocks.@port_forward[0].server='nil'

ucisetshadowsocks.@port_forward[0].local_port='5300'

ucisetshadowsocks.@port_forward[0].destination='8.8.4.4:53'

ucisetshadowsocks.@access_control[0]=access_control

ucisetshadowsocks.@access_control[0].self_proxy='1'

ucisetshadowsocks.@access_control[0].lan_target='SS_SPEC_WAN_AC'

HOW:openwrt

151

Page 152: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

ucisetshadowsocks.@access_control[0].wan_bp_list='/etc/chinadns_chnroute.

txt'

ucicommitshadowsocks

/etc/init.d/shadowsocksenable

/etc/init.d/shadowsocksstart

ucisetdns-forwarder.@dns-forwarder[0]=dns-forwarder

ucisetdns-forwarder.@dns-forwarder[0].listen_addr='0.0.0.0'

ucisetdns-forwarder.@dns-forwarder[0].listen_port='5300'

ucisetdns-forwarder.@dns-forwarder[0].dns_servers='8.8.8.8'

ucisetdns-forwarder.@dns-forwarder[0].enable='1'

ucicommitdns-forwarder

/etc/init.d/dns-forwarderenable

/etc/init.d/dns-forwarderstart

ucisetchinadns.@chinadns[0]=chinadns

ucisetchinadns.@chinadns[0].bidirectional='0'

ucisetchinadns.@chinadns[0].chnroute='/etc/chinadns_chnroute.txt'

ucisetchinadns.@chinadns[0].port='5353'

ucisetchinadns.@chinadns[0].enable='1'

ucisetchinadns.@chinadns[0].server='223.5.5.5,127.0.0.1:5300'

ucicommitchinadns

/etc/init.d/chinadnsenable

/etc/init.d/chinadnsstart

https://wiki.openwrt.org/doc/uci

Sectionsnaming

Sectionsdeservesomeextraexplanationinregardstonaming.Asectioncanbenamedorunnamed.UnnamedsectionswillgetanautogeneratedID/CFGID(like cfg073777)andbepresentedwithananonymous-name(like @switch[0])

HOW:openwrt

152

Page 153: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

#ucishowwireless.@wifi-device[0]

wireless.radio0=wifi-device

wireless.radio0.type='mac80211'

wireless.radio0.channel='11'

wireless.radio0.hwmode='11g'

wireless.radio0.path='platform/ar933x_wmac'

wireless.radio0.htmode='HT20'

wireless.radio0.disabled='0'

wireless.radio0.txpower='18'

wireless.radio0.country='CN'

openwrt-dist源中的shadowsocks-libev软件包只有`/bin

$gitclonehttps://github.com/shadowsocks/luci-app-shadowsocks.git

Cloninginto'luci-app-shadowsocks'...

remote:Countingobjects:1086,done.

remote:Total1086(delta0),reused0(delta0),pack-reused1086

Receivingobjects:100%(1086/1086),262.73KiB|0bytes/s,done.

Resolvingdeltas:100%(402/402),done.

$treeluci-app-shadowsocks/files/root/

luci-app-shadowsocks/files/root/

├──etc

│├──config

││└──shadowsocks

│├──init.d

││└──shadowsocks

│└──uci-defaults

│└──luci-shadowsocks

└──usr

└──bin

├──ss-rules

└──ss-rules-without-ipset

6directories,5files

$rsync-avPluci-app-shadowsocks/files/root/

sendingincrementalfilelist

drwxrwxr-x40962017/08/2900:03:54.

drwxrwxr-x40962017/08/2900:03:54etc

HOW:openwrt

153

Page 154: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

drwxrwxr-x40962017/08/2900:03:54etc/config

-rw-rw-r--5562017/08/2900:03:54etc/config/shadowsocks

drwxrwxr-x40962017/08/2900:03:54etc/init.d

-rw-rw-r--50622017/08/2900:03:54etc/init.d/shadowsocks

drwxrwxr-x40962017/08/2900:03:54etc/uci-defaults

-rw-rw-r--9622017/08/2900:03:54etc/uci-defaults/luci-shadowsock

s

drwxrwxr-x40962017/08/2900:03:54usr

drwxrwxr-x40962017/08/2900:03:54usr/bin

-rw-rw-r--66992017/08/2900:03:54usr/bin/ss-rules

-rw-rw-r--61012017/08/2900:03:54usr/bin/ss-rules-without-ipset

$catluci-app-shadowsocks/files/root/etc/uci-defaults/luci-shadowsocks

#!/bin/sh

ucigetshadowsocks.@general[-1]>/dev/null2>&1||\

uciaddshadowsocksgeneral>/dev/null2>&1

ucigetshadowsocks.@transparent_proxy[-1]>/dev/null2>&1||\

uciaddshadowsockstransparent_proxy>/dev/null2>&1

ucigetshadowsocks.@socks5_proxy[-1]>/dev/null2>&1||\

uciaddshadowsockssocks5_proxy>/dev/null2>&1

ucigetshadowsocks.@port_forward[-1]>/dev/null2>&1||\

uciaddshadowsocksport_forward>/dev/null2>&1

ucigetshadowsocks.@access_control[-1]>/dev/null2>&1||\

uciaddshadowsocksaccess_control>/dev/null2>&1

ucicommitshadowsocks

uci-qbatch<<-EOF>/dev/null

deleteucitrack.@shadowsocks[-1]

adducitrackshadowsocks

setucitrack.@shadowsocks[-1].init=shadowsocks

commitucitrack

deletefirewall.shadowsocks

setfirewall.shadowsocks=include

setfirewall.shadowsocks.type=script

setfirewall.shadowsocks.path=/var/etc/shadowsocks.include

setfirewall.shadowsocks.reload=1

commitfirewall

EOF

exit0

sent268bytesreceived18bytes572.00bytes/sec

totalsizeis19380speedupis67.76

HOW:openwrt

154

Page 155: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

$rsync-avP--exclude=uci-defaultsluci-app-shadowsocks/files/root/

sendingincrementalfilelist

drwxrwxr-x40962017/08/2900:03:54.

drwxrwxr-x40962017/08/2900:03:54etc

drwxrwxr-x40962017/08/2900:03:54etc/config

-rw-rw-r--5562017/08/2900:03:54etc/config/shadowsocks

drwxrwxr-x40962017/08/2900:03:54etc/init.d

-rw-rw-r--50622017/08/2900:03:54etc/init.d/shadowsocks

drwxrwxr-x40962017/08/2900:03:54usr

drwxrwxr-x40962017/08/2900:03:54usr/bin

-rw-rw-r--66992017/08/2900:03:54usr/bin/ss-rules

-rw-rw-r--61012017/08/2900:03:54usr/bin/ss-rules-without-ipset

sent211bytesreceived17bytes456.00bytes/sec

totalsizeis18418speedupis80.78

$rsync-avP--exclude=uci-defaultsluci-app-shadowsocks/files/root/~/open

wrt/OpenWrt-ImageBuilder-15.05.1-ar71xx-generic.Linux-x86_64/files/

sendingincrementalfilelist

./

etc/

etc/config/

etc/config/shadowsocks

556100%0.00kB/s0:00:00(xfer#1,to-check=4/10)

etc/init.d/

etc/init.d/shadowsocks

5062100%4.83MB/s0:00:00(xfer#2,to-check=3/10)

usr/

usr/bin/

usr/bin/ss-rules

6699100%6.39MB/s0:00:00(xfer#3,to-check=1/10)

usr/bin/ss-rules-without-ipset

6101100%5.82MB/s0:00:00(xfer#4,to-check=0/10)

sent18819bytesreceived111bytes37860.00bytes/sec

totalsizeis18418speedupis0.97

$tree~/openwrt/OpenWrt-ImageBuilder-15.05.1-ar71xx-generic.Linux-x86_64/f

iles/

/home/i/openwrt/OpenWrt-ImageBuilder-15.05.1-ar71xx-generic.Linux-x86_64/fi

les/

├──etc

HOW:openwrt

155

Page 156: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

│├──config

││└──shadowsocks

│├──init.d

││└──shadowsocks

│├──opkg.conf

│└──uci-defaults

│└──defaults

└──usr

└──bin

├──ss-rules

└──ss-rules-without-ipset

6directories,6files

$chmod755files/usr/bin/*files/etc/init.d/*

$llfiles/usr/bin/*files/etc/init.d/*

-rwxr-xr-x1ii6.6K|2017-08-2900:03|files/usr/bin/ss-rules*

-rwxr-xr-x1ii6.0K|2017-08-2900:03|files/usr/bin/ss-rules-without-i

pset*

-rwxr-xr-x1ii5.0K|2017-08-2900:03|files/etc/init.d/shadowsocks*

PROFILE配置:

$makeinfo|grep-C1WR703N

TLWR703:

TP-LINKTL-WR703N

Packages:kmod-usb-corekmod-usb2

PACkAGES软件包:

timemakeimagePROFILE=TLWR703FILES=files/PACKAGES="ChinaDNSdns-forward

ershadowsocks-libevipipsetiptables-mod-tproxy-kmod-ipv6-libip6tc-odh

cp6c-ip6tables-kmod-ip6tables-kmod-nf-ipt6-kmod-nf-conntrack6-ppp-ppp

-mod-pppoe-kmod-ppp-kmod-pppoe-kmod-pppox-luci*"

real1m28.885s

user0m15.822s

sys0m16.358s

HOW:openwrt

156

Page 157: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

没有集成 bind-dig不然ROM会超过 4M打包失败:

[-f/home/i/openwrt/OpenWrt-ImageBuilder-15.05.1-ar71xx-generic.Linux-x86_

64/build_dir/target-mips_34kc_uClibc-0.9.33.2/linux-ar71xx_generic/tl-wr703

n-v1-kernel.bin-a-f/home/i/openwrt/OpenWrt-ImageBuilder-15.0

5.1-ar71xx-generic.Linux-x86_64/build_dir/target-mips_34kc_uClibc-0.9.33.2/

linux-ar71xx_generic/root.squashfs]

ddif=/home/i/openwrt/OpenWrt-ImageBuilder-15.05.1-ar71xx-generic.Linux-x86

_64/build_dir/target-mips_34kc_uClibc-0.9.33.2/linux-ar71xx_generic/root.sq

uashfs>>/home/i/openwrt/OpenWrt-ImageBuilder-15.05.1-ar71xx-

generic.Linux-x86_64/build_dir/target-mips_34kc_uClibc-0.9.33.2/linux-ar71x

x_generic/tmp/openwrt-15.05.1-ar71xx-generic-tl-wr703n-v1-squashfs-sysupgra

de.bin

7526+1recordsin

7526+1recordsout

3853562bytes(3.9MB)copied,0.0327387s,118MB/s

/home/i/openwrt/OpenWrt-ImageBuilder-15.05.1-ar71xx-generic.Linux-x86_64/st

aging_dir/host/bin/mktplinkfw-H0x07030101-W0x1-F4Mlzma-NOpenWrt-V

r48532-k/home/i/openwrt/OpenWrt-ImageBuilder-15.05.1-ar71xx-g

eneric.Linux-x86_64/build_dir/target-mips_34kc_uClibc-0.9.33.2/linux-ar71xx

_generic/tl-wr703n-v1-kernel.bin-r/home/i/openwrt/OpenWrt-ImageBuilder-15

.05.1-ar71xx-generic.Linux-x86_64/build_dir/target-mips_34kc_uC

libc-0.9.33.2/linux-ar71xx_generic/tmp/openwrt-15.05.1-ar71xx-generic-tl-wr

703n-v1-squashfs-sysupgrade.bin-o/home/i/openwrt/OpenWrt-ImageBuilder-15.

05.1-ar71xx-generic.Linux-x86_64/build_dir/target-mips_34kc_uCl

ibc-0.9.33.2/linux-ar71xx_generic/tmp/openwrt-15.05.1-ar71xx-generic-tl-wr7

03n-v1-squashfs-sysupgrade.bin.new-j-X0x40000-a0x4-s&&mv/home/i/op

enwrt/OpenWrt-ImageBuilder-15.05.1-ar71xx-generic.Linux-x86_64/

build_dir/target-mips_34kc_uClibc-0.9.33.2/linux-ar71xx_generic/tmp/openwrt

-15.05.1-ar71xx-generic-tl-wr703n-v1-squashfs-sysupgrade.bin.new/home/i/op

enwrt/OpenWrt-ImageBuilder-15.05.1-ar71xx-generic.Linux-x86_64/

build_dir/target-mips_34kc_uClibc-0.9.33.2/linux-ar71xx_generic/tmp/openwrt

-15.05.1-ar71xx-generic-tl-wr703n-v1-squashfs-sysupgrade.bin||rm-f/home

/i/openwrt/OpenWrt-ImageBuilder-15.05.1-ar71xx-generic.Linux-x8

6_64/build_dir/target-mips_34kc_uClibc-0.9.33.2/linux-ar71xx_generic/tmp/op

enwrt-15.05.1-ar71xx-generic-tl-wr703n-v1-squashfs-sysupgrade.bin

[mktplinkfw]kernellengthalignedto1176540

[mktplinkfw]***error:imagesaretoobig##<--

成功编译完成后:

HOW:openwrt

157

Page 158: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

$ll/home/i/openwrt/OpenWrt-ImageBuilder-15.05.1-ar71xx-generic.Linux-x86_

64/bin/ar71xx/

total26M

-rw-rw-r--1ii960|2017-08-2801:16|md5sums

-rw-rw-r--1ii1.5K|2017-08-2801:16|sha256sums

-rw-rw-r--1ii3.8M|2017-08-2801:16|openwrt-15.05.1-ar71xx-generic-t

l-wr703n-v1-squashfs-factory.bin

-rw-rw-r--1ii3.4M|2017-08-2801:16|openwrt-15.05.1-ar71xx-generic-t

l-wr703n-v1-squashfs-sysupgrade.bin

-rw-rw-r--1ii1.6M|2017-08-2801:16|openwrt-15.05.1-ar71xx-generic-u

Image-gzip.bin

-rw-rw-r--1ii1.2M|2017-08-2801:16|openwrt-15.05.1-ar71xx-generic-u

Image-lzma.bin

-rwxr-xr-x1ii3.4M|2017-08-2801:16|openwrt-15.05.1-ar71xx-generic-v

mlinux.bin*

-rwxr-xr-x1ii3.4M|2017-08-2801:16|openwrt-15.05.1-ar71xx-generic-v

mlinux.elf*

-rwxr-xr-x1ii1.2M|2017-08-2801:16|openwrt-15.05.1-ar71xx-generic-v

mlinux-lzma.elf*

-rw-rw-r--1ii1.6M|2017-08-2801:16|openwrt-15.05.1-ar71xx-generic-v

mlinux.gz

-rw-rw-r--1ii1.2M|2017-08-2801:16|openwrt-15.05.1-ar71xx-generic-v

mlinux.lzma

-rw-rw-r--1ii2.4M|2017-08-2801:16|openwrt-15.05.1-ar71xx-generic-r

oot.squashfs

-rw-r--r--1ii2.3M|2017-08-2801:16|openwrt-15.05.1-ar71xx-generic-r

oot.squashfs-64k

默认openwrt安装软件包:

root@OpenWrt:/etc#opkglist-installed|awk'{print$1}'

ChinaDNS

base-files

bind-dig

bind-libs

busybox

curl

dns-forwarder

dnsmasq

dropbear

HOW:openwrt

158

Page 159: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

firewall

fstools

hostapd-common

ip

ip6tables

ipset

iptables

iptables-mod-tproxy

iw

jshn

jsonfilter

kernel

kmod-ath

kmod-ath9k

kmod-ath9k-common

kmod-cfg80211

kmod-crypto-aes

kmod-crypto-arc4

kmod-crypto-core

kmod-gpio-button-hotplug

kmod-ip6tables

kmod-ipt-conntrack

kmod-ipt-core

kmod-ipt-ipset

kmod-ipt-nat

kmod-ipt-tproxy

kmod-ipv6

kmod-lib-crc-ccitt

kmod-mac80211

kmod-nf-conntrack

kmod-nf-conntrack6

kmod-nf-ipt

kmod-nf-ipt6

kmod-nf-nat

kmod-nf-nathelper

kmod-nfnetlink

kmod-nls-base

kmod-ppp

kmod-pppoe

kmod-pppox

kmod-slhc

kmod-usb-core

HOW:openwrt

159

Page 160: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

kmod-usb2

libblobmsg-json

libc

libcurl

libev

libgcc

libip4tc

libip6tc

libiwinfo

libiwinfo-lua

libjson-c

libjson-script

liblua

libmbedtls

libmnl

libnl-tiny

libopenssl

libpcre

libpolarssl

libpthread

libsodium

libubox

libubus

libubus-lua

libuci

libuci-lua

libudns

libxtables

lua

luci

luci-app-chinadns

luci-app-dns-forwarder

luci-app-firewall

luci-app-shadowsocks

luci-base

luci-lib-ip

luci-lib-nixio

luci-mod-admin-full

luci-proto-ipv6

luci-proto-ppp

luci-theme-bootstrap

mtd

HOW:openwrt

160

Page 161: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

netifd

odhcp6c

odhcpd

opkg

ppp

ppp-mod-pppoe

procd

rpcd

shadowsocks-libev

swconfig

uboot-envtools

ubox

ubus

ubusd

uci

uhttpd

uhttpd-mod-ubus

usign

wpad-mini

zlib

删除IPv6、PPP、LuCI相关软件包:

#opkglist-installed|awk'{print$1}'|grep6

ip6tables

kmod-ip6tables

kmod-ipv6

kmod-nf-conntrack6

kmod-nf-ipt6

libip6tc

luci-proto-ipv6

odhcp6c

root@OpenWrt:/etc#opkglist-installed|awk'{print$1}'|grepppp

kmod-ppp

kmod-pppoe

kmod-pppox

luci-proto-ppp

ppp

ppp-mod-pppoe

HOW:openwrt

161

Page 162: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

root@OpenWrt:/etc#opkglist-installed|awk'{print$1}'|grepluci

luci

luci-app-chinadns

luci-app-dns-forwarder

luci-app-firewall

luci-app-shadowsocks

luci-base

luci-lib-ip

luci-lib-nixio

luci-mod-admin-full

luci-proto-ipv6

luci-proto-ppp

luci-theme-bootstrap

root@OpenWrt:/etc#opkgfindkmod-pppox

kmod-pppox-3.18.23-1-KernelhelpermoduleforPPPoEandPPTPsupport

root@OpenWrt:/etc#opkgfindkmod-nf-ipt6

kmod-nf-ipt6-3.18.23-1-Ip6tablescore

root@OpenWrt:/etc#opkgfindodhcp6c

odhcp6c-2015-07-13-024525798c5f6aba3af9b2ef7b3af2f3c14f1db8-EmbeddedDH

CPv6-clientforOpenWrt

-kmod-ipv6-libip6tc-odhcp6c-luci-proto-ipv6-ip6tables-kmod-ip6tables-

kmod-nf-ipt6-ppp-ppp-mod-pppoe-kmod-ppp-kmod-pppoe-kmod-pppox-luci-pr

oto-ppp

ADD'ipset'package

HOW:openwrt

162

Page 163: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

$timemakeimagePROFILE=TLWR703FILES=files/PACKAGES="ChinaDNSdns-forwa

rdershadowsocks-libevipsetipiptables-mod-tproxy-kmod-ipv6-libip6tc-o

dhcp6c-ip6tables-kmod-ip6tables-kmod-nf-ipt6-kmod-nf-conntrack6-ppp-p

pp-mod-pppoe-kmod-ppp-kmod-pppoe-kmod-pppox-luci*"

$ll/home/i/openwrt/OpenWrt-ImageBuilder-15.05.1-ar71xx-generic.Linux-x86_

64/bin/ar71xx/total26M

-rw-rw-r--1ii960|2017-08-2900:45|md5sums

-rw-rw-r--1ii1.5K|2017-08-2900:45|sha256sums

-rw-rw-r--1ii3.8M|2017-08-2900:45|openwrt-15.05.1-ar71xx-generic-t

l-wr703n-v1-squashfs-factory.bin

-rw-rw-r--1ii3.6M|2017-08-2900:45|openwrt-15.05.1-ar71xx-generic-t

l-wr703n-v1-squashfs-sysupgrade.bin

-rw-rw-r--1ii1.6M|2017-08-2900:45|openwrt-15.05.1-ar71xx-generic-u

Image-gzip.bin

-rw-rw-r--1ii1.2M|2017-08-2900:45|openwrt-15.05.1-ar71xx-generic-u

Image-lzma.bin

-rwxr-xr-x1ii3.4M|2017-08-2900:45|openwrt-15.05.1-ar71xx-generic-v

mlinux.bin*

-rwxr-xr-x1ii3.4M|2017-08-2900:45|openwrt-15.05.1-ar71xx-generic-v

mlinux.elf*

-rwxr-xr-x1ii1.2M|2017-08-2900:45|openwrt-15.05.1-ar71xx-generic-v

mlinux-lzma.elf*

-rw-rw-r--1ii1.6M|2017-08-2900:45|openwrt-15.05.1-ar71xx-generic-v

mlinux.gz

-rw-rw-r--1ii1.2M|2017-08-2900:45|openwrt-15.05.1-ar71xx-generic-v

mlinux.lzma

-rw-rw-r--1ii2.7M|2017-08-2900:45|openwrt-15.05.1-ar71xx-generic-r

oot.squashfs

-rw-r--r--1ii2.4M|2017-08-2900:45|openwrt-15.05.1-ar71xx-generic-r

oot.squashfs-64k

$scpopenwrt-15.05.1-ar71xx-generic-tl-wr703n-v1-squashfs-sysupgrade.binr

[email protected]:/tmp

root@wr703n:/tmp#sysupgrade-vopenwrt-15.05.1-ar71xx-generic-tl-wr703n-v1

-squashfs-sysupgrade.bin

reference

HOW:openwrt

163

Page 164: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

使用ImageBuilder编译自动翻墙OpenWrt固件

OpenWrt固件安装的软件包:

conf_url=http://downloads.openwrt.org/snapshots/trunk/ar71xx/generic/config

echo$(wget-qO-"$conf_url"|sed-ne's/^CONFIG_PACKAGE_\([a-z0-9-]*\)=y

/\1/ip')

使用OpenWrtImageGenerator为WR703N路由器定制固件2015-11-05

有两个命令可以升级固件:

sysupgrade-n-v/tmp/firmware.bin

mtd-rwrite/tmp/firmware.binfirmware

-n不保存配置

-v输出详细信息

sourcebuild源码编译:

1. OpenWrt'sbuildsystem–About2. OpenWrtbuildsystem–Installation3. OpenWrtbuildsystem–Usage4. OpenWrtbuildsystem–Patches

编译集成了shadowsocks的openwrt固件

编译适用于8MFlash的固件,需修改 Makefile和 mktplinkfw.c文件

Network--->

<M>ipset

<M>ipset-dns

HOW:openwrt

164

Page 165: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

UCIhttps://wiki.openwrt.org/doc/uci

https://wiki.openwrt.org/zh-cn/doc/uci

about[UCI]OpenWrt-uci命令系统:http://developer.t-firefly.com/forum.php?mod=viewthread&tid=1035

1. UCI命令

一个众所周知的原因,在Linux下各种软件包有各种不同的配置脚本,每个配置脚本的语法格式

和操作方式不同,这样的设计虽然可以体现出各软件包自身的优势,同时也增加了学习曲线。在

这一点上OpenWrt的UCI无疑处理的更胜一筹。UCI是集中式配置信息管理接口(UnifiedConfigurationInterface)的缩写,他是OpenWrt引进的一套配置参数管理系统。UCI管理了

OpenWrt下最主要的系统配置参数并且提供了简单、容易、标准化的人机交互接口。UCI中已

经包含了网络配置、无线配置、系统信息配置等作为基本路由器所需的主要配置参数。同时UCI也可以帮助开发人员快速的建立一套基于OpenWrt的智能路由产品控制界面。

1. UCI的文件和流程

UCI的配置文件全部存储在 /etc/config目录下

root@OpenWrt:~#ls/etc/config/

dhcpdropbearfirewallnetworksystemwireless

日前已有大量软件包支持UCI模式管理,但不是所有的软件包,支持的软件包是这样来完成启

动的(以samba举例):

1. 启动脚本 /etc/init.d/samba2. 启动脚本通过UCI分析库从 /etc/config/samba获得启动参数

3. 启动脚本完成正常启动

UCI

165

Page 166: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

由于UCI的数据文件较为简单,并且具备了很nice的直接观感,所以配置文件既可以使用UCI命令进行修改,也可以使用VI编辑器直接修改文件。但如果两种方式都是用时需要注意UCI命令修改会产生缓存,每次修改好要尽快确认保存避免出现冲突。

最常见的几个UCI配置作用说明

文件 作用

/etc/config/dhcp DHCP服务配置,为LAN口提供IP

/etc/config/dropbear SSH服务配置

/etc/config/firewall 路由转发,端口转发,防火墙规则

/etc/config/network 自身网络接口配置

/etc/config/system 时间服务器时区配置

/etc/config/wireless 无线网络配置

syntax1. UCI的文件语法

keywordUCI文件语法举例

config'section-type''section'

option'key''value'

list'list_key''list_value'

关键字 含义

config 节点

section-type 节点类型

section 节点名称

UCI

166

Page 167: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

config'example''test'

option'string''somevalue'

option'boolean''1'

list'collection''firstitem'

list'collection''seconditem'

Openwrt开发与Luci介绍

注意:UCI的文件名和标识符( optionexampletest中的 example即为标识

符, test为 option的值)可以使用 a-z, 0-9和下划线 _组合的任意字符串,不

允许使用横杠线 -,而 option的值可以使用任意字符

关键字 含义

option 选项(节点中的一个元素)

key 键

value 值

list 列表选项列表形式的一组参数

list_key 列表键

list_value 列表值

config节点语法格式

config'section-type''section'

config节点(后文统一称为节点)原则:

UCI允许只有节点类型的匿名节点存在

节点类型和名字建议使用单引号包含以免引起歧义

节点中可以包含多个 option选项或 list列表选项

节点遇到文件结束或遇到下一个节点代表完成

option选项语法格式:

option'key''value'

option选项(后文统一称为选项)原则:

UCI

167

Page 168: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

选项的键与值建议使用单引号包含

避免相同的选项键存在于同一个节点,否则只有一个生效

list列表选项语法格式:

list'list_key''list_value'

list列表选项(后文统一称为列表)原则:

选项的键与值建议使用单引号包含

列表键的名字如果相同,则相同键的值将会被当作数组传递给相应软件

UCI的语法容错:

optionexamplevalue

option'example'value

optionexample"value"

option"example"'value'

option'example'"value"

UCI无法容忍的语法:

option'example""value'

optionexamplesomevaluewithspace

尽量使用常规字符去处理器UCI,特殊字符有可能会破坏数据结构的完整性

1. UCI命令读写配置

语法格式

uci[<options>]<command>[<arguments>]

读写规则

UCI读取总是先读取内存中的缓存,然后再读取文件中的

进行过增加,修改,删除操作后要执行生效指令,否则所做修改只存留在缓存中

UCI

168

Page 169: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

read取得节点类型:

uciget<config>.<section>

取得一个值:

uciget<config>.<section>.<option>

显示全部UCI配置

ucishow

显示指定文件配置

ucishow<config>

显示指定节点名字配置

ucishow<config>.<section>

显示指定选项配置

ucishow<config>.<section>.<option>

显示尚未生效的修改记录

ucichanges<config>

匿名节点显示(如果所显示内容有匿名节点,使用 -X参数可以显示出匿名节点的 ID)

ucishow-X<config>.<section>.<option>

UCI

169

Page 170: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

write增加一个匿名节点到文件

uciadd<config><section-type>

增加一个节点到文件中

uciset<config>.<section>=<section-type>

增加一个选项和值到节点中

uciset<config>.<section>.<option>=<value>

增加一个值到列表中

uciadd_list<config>.<section>.<option>=<value>

修改一个节点的类型

uciset<config>.<section>=<section-type>

修改一个选项的值

uciset<config>.<section>.<option>=<value>

删除指定名字的节点

ucidelete<config>.<section>

删除指定选项

ucidelete<config>.<section>.<option>

UCI

170

Page 171: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

删除列表

ucidelete<config>.<section>.<list>

删除列表中一个值

ucidel_list<config>.<section>.<option>=<string>

生效修改(任何写入类的语法,最终都要执行生效修改,否则所做修改只在缓存中)

ucicommit<config>

example[UCI+入门]FireWRT新手教程uci设置网络命令:http://developer.t-firefly.com/forum.php?mod=viewthread&tid=1014

在我们将FireWRT固件刷上openwrt系统后,如果openwrt未安装WEB管理界面,所以我们

需要先通过SSH或者telnet对路由器进行网络设置,设置完成后可通过openwrt的软件包管理

opkg安装web设置界面Luci

设置LANIP(即访问路由的ip)

ucisetnetwork.lan.ipaddr=[LAN_IP]

使用pppoe设置

ucisetnetwork.wan.proto=pppoe//设置WAN口类型为pppoe

ucisetnetwork.wan.username=[USER]

ucisetnetwork.wan.password=[PASSWORD]//这两行设置pppoe用户名和密码

如果要挂在上级路由下面,就需要进行下面的设置

UCI

171

Page 172: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

ucisetnetwork.wan.proto=none//关掉wan

ucisetnetwork.lan.gateway=[IP]//网关指向上级路由

ucisetnetwork.lan.dns=[IP]//DNS指向上级路由

ucisetdhcp.lan.ignore=1//关掉LAN的DHCP

最后对无线网络进行配置

ucisetwireless.@wifi-device[0].disabled=0//打开无线

ucisetwireless.@wifi-device[0].txpower=17//设置功率为17dbm太高

会烧无线模块

ucisetwireless.@wifi-device[0].channel=6//设置无线信道为6

ucisetwireless.@wifi-iface[0].mode=ap//设置无线模式为AP

ucisetwireless.@wifi-iface[0].ssid=[SSID]//设置无线SSID

ucisetwireless.@wifi-iface[0].network=lan//无线链接到LAN上

ucisetwireless.@wifi-iface[0].encryption=psk2//设置加密为WPA2-PSK

ucisetwireless.@wifi-iface[0].key=[password]//设置无线密码

提交应用配置

ucicommit//应用

/etc/init.d/networkrestart//重启网络服务

安装LUCI管理界面

opkgupdate//更新软件列表

opkglist-installed//查看已安装软件

opkginstallluci//安装LUCI

opkginstallluci-i18n-chinese//支持中文

即可完成LUCI的安装

输入以下命令开启支持web服务的uhttpd并设置其为自启动:

/etc/init.d/uhttpdenable

/etc/init.d/uhttpdstart

UCI

172

Page 173: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

keeppractice

shadowsocksUCI使用手册:https://sourceforge.net/p/openwrt-dist/wiki/UCI/

查看当前的UCI配置文件

uciexportshadowsocks

修改/增加option

ucisetshadowsocks.@shadowsocks[-1].option='value'

删除option

ucideleteshadowsocks.@shadowsocks[-1].option

提交对UCI配置文件的修改,提交后配置才能生效

ucicommitshadowsocks

UCI

173

Page 174: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

WHAT各个服务的依赖关系:

dns-forwarder通过TCP查询 8.8.8.8作为ChinaDNS的上游替代 ss-tunnel使用UDP查询 8.8.8.8的旧方案

GFW干扰UDP丢包较严重

repoOpenWrt-distisadepotofOpenWrt/LEDEdevice.

http://openwrt-dist.sourceforge.net/packages/

OpenWrt-dist提供 ChinaDNS、 dns-forwarder、 shadowsocks-libev、 simple-

obfs软件包

但http://openwrt-dist.sourceforge.net/被墙了,需要自建软件源:

ChinaDNS+Shadowsocks

174

Page 175: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

1. 安装WEB服务 httpd软件包

2. 下载对应CPU架构的软件包

soeasy

VPS安装并启动 httpd服务:

yuminstall-yhttpd&&servicehttpdstart

查询路由器CPU架构:

root@OpenWrt:~#opkgprint-architecture

archall1

archnoarch1

archar71xx10

root@OpenWrt:~#opkgprint-architecture|tail-n1|awk'{print$2}'

ar71xx

下载openwrt对应CPU架构的源及公钥到 httpd目录下:

arch=ar71xx

opkg_key="http://openwrt-dist.sourceforge.net/packages/openwrt-dist.pub"

luci_repo="http://openwrt-dist.sourceforge.net/packages/OpenWrt/luci/"

base_repo="http://openwrt-dist.sourceforge.net/packages/OpenWrt/base/${arch

}/"

cd/var/www/html/

wget-c-m-np-nv-nH-erobots=off-Rhtml--reject-regex"\?.=.;.=.""$l

uci_repo"

wget-c-m-np-nv-nH-erobots=off-Rhtml--reject-regex"\?.=.;.=.""$b

ase_repo"

wget-c-nv"$opkg_key"-O/var/www/html/packages/openwrt-dist.pub

#du-sh/var/www/html/packages/

744K/var/www/html/packages/

#tree/var/www/html/packages/

/var/www/html/packages/

├──OpenWrt

ChinaDNS+Shadowsocks

175

Page 176: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

│├──base

││└──ar71xx

││├──ChinaDNS_1.3.2-5_ar71xx.ipk

││├──dns-forwarder_1.2.1-1_ar71xx.ipk

││├──libmbedtls_2.5.1-2_ar71xx.ipk

││├──libsodium_1.0.12-1_ar71xx.ipk

││├──libudns_0.4-1_ar71xx.ipk

││├──Packages

││├──Packages.gz

││├──Packages.sig

││├──shadowsocks-libev_3.0.8-1_ar71xx.ipk

││├──shadowsocks-libev-server_3.0.8-1_ar71xx.ipk

││├──ShadowVPN_0.2.0-1_ar71xx.ipk

││├──simple-obfs_0.0.3-1_ar71xx.ipk

││└──simple-obfs-server_0.0.3-1_ar71xx.ipk

│└──luci

│├──luci-app-chinadns_1.6.1-1_all.ipk

│├──luci-app-dns-forwarder_1.6.1-1_all.ipk

│├──luci-app-shadowsocks_1.8.1-1_all.ipk

│├──luci-app-shadowsocks-without-ipset_1.8.1-1_all.ipk

│├──luci-app-shadowvpn_1.6.1-1_all.ipk

│├──Packages

│├──Packages.gz

│└──Packages.sig

└──openwrt-dist.pub

4directories,22files

下载LEDE对应CPU架构的源及公钥到 httpd目录下:

root@LEDE:~#arch=$(opkgprint-architecture|tail-n1|awk'{print$2}')

root@LEDE:~#echo$arch

mipsel_24kc

arch=mipsel_24kc

opkg_key="http://openwrt-dist.sourceforge.net/packages/openwrt-dist.pub"

luci_repo="http://openwrt-dist.sourceforge.net/packages/LEDE/luci/"

base_repo="http://openwrt-dist.sourceforge.net/packages/LEDE/base/${arch}/"

cd/var/www/html

wget-c-m-np-nv-nH-erobots=off-Rhtml--reject-regex"\?.=.;.=.""$l

ChinaDNS+Shadowsocks

176

Page 177: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

uci_repo"

wget-c-m-np-nv-nH-erobots=off-Rhtml--reject-regex"\?.=.;.=.""$b

ase_repo"

wget-c-nv"$opkg_key"-O/var/www/html/packages/openwrt-dist.pub

#tree/var/www/html/packages/LEDE/

/var/www/html/packages/LEDE/

├──base

│└──mipsel_24kc

│├──ChinaDNS_1.3.2-5_mipsel_24kc.ipk

│├──dns-forwarder_1.2.1-1_mipsel_24kc.ipk

│├──libcares_1.13.0-1_mipsel_24kc.ipk

│├──libmbedtls_2.5.1-2_mipsel_24kc.ipk

│├──libsodium_1.0.12-1_mipsel_24kc.ipk

│├──libudns_0.4-1_mipsel_24kc.ipk

│├──Packages

│├──Packages.gz

│├──Packages.manifest

│├──Packages.sig

│├──shadowsocks-libev_3.1.0-1_mipsel_24kc.ipk

│├──shadowsocks-libev-server_3.1.0-1_mipsel_24kc.ipk

│├──ShadowVPN_0.2.0-1_mipsel_24kc.ipk

│├──simple-obfs_0.0.3-2_mipsel_24kc.ipk

│└──simple-obfs-server_0.0.3-2_mipsel_24kc.ipk

└──luci

├──luci-app-chinadns_1.6.1-1_all.ipk

├──luci-app-dns-forwarder_1.6.1-1_all.ipk

├──luci-app-shadowsocks_1.8.1-1_all.ipk

├──luci-app-shadowsocks-without-ipset_1.8.1-1_all.ipk

├──luci-app-shadowvpn_1.6.1-1_all.ipk

├──Packages

├──Packages.gz

├──Packages.manifest

└──Packages.sig

3directories,24files

TPLinkWR703N

ChinaDNS+Shadowsocks

177

Page 178: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

opkg导入 openwrt-dist.pub公钥:

wgethttp://fuckgfw.com/packages/openwrt-dist.pub-O/tmp/openwrt-dist.pub

cat/tmp/openwrt-dist.pub

opkg-keyadd/tmp/openwrt-dist.pub

root@OpenWrt:/#wgethttp://fuckgfw.com/packages/openwrt-dist.pub-O/tmp/o

penwrt-dist.pub

Connectingtofuckgfw.com(45.67.89.10:80)

openwrt-dist.pub100%|****************************************|104

0:00:00ETA

root@OpenWrt:/#cat/tmp/openwrt-dist.pub

untrustedcomment:publickey5c42250627d305bc

RWRcQiUGJ9MFvK9/3ma8yAZebnrCfGvZJN/qbjaVozu6Ey9+Ihgnggae

root@OpenWrt:/#opkg-keyadd/tmp/openwrt-dist.pub

更新软件源:

root@OpenWrt:/tmp#cat/etc/opkg.conf

destroot/

destram/tmp

lists_dirext/var/opkg-lists

optionoverlay_root/overlay

optioncheck_signature1

src/gzopenwrt_disthttp://fuckgfw.com/packages/OpenWrt/base/ar71xx

src/gzopenwrt_dist_lucihttp://fuckgfw.com/packages/OpenWrt/luci

root@OpenWrt:~#opkgupdate

Downloadinghttp://fuckgfw.com/packages/OpenWrt/base/ar71xx/Packages.gz.

Updatedlistofavailablepackagesin/var/opkg-lists/openwrt_dist.

Downloadinghttp://fuckgfw.com/packages/OpenWrt/base/ar71xx/Packages.sig.

Signaturecheckpassed.

Downloadinghttp://fuckgfw.com/packages/OpenWrt/luci/Packages.gz.

Updatedlistofavailablepackagesin/var/opkg-lists/openwrt_dist_luci.

Downloadinghttp://fuckgfw.com/packages/OpenWrt/luci/Packages.sig.

Signaturecheckpassed.

ChinaDNS+Shadowsocks

178

Page 179: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

Downloadinghttp://downloads.openwrt.org/chaos_calmer/15.05.1/ar71xx/generi

c/packages/base/Packages.gz.

Updatedlistofavailablepackagesin/var/opkg-lists/chaos_calmer_base.

Downloadinghttp://downloads.openwrt.org/chaos_calmer/15.05.1/ar71xx/generi

c/packages/base/Packages.sig.

Signaturecheckpassed.

Downloadinghttp://downloads.openwrt.org/chaos_calmer/15.05.1/ar71xx/generi

c/packages/luci/Packages.gz.

Updatedlistofavailablepackagesin/var/opkg-lists/chaos_calmer_luci.

Downloadinghttp://downloads.openwrt.org/chaos_calmer/15.05.1/ar71xx/generi

c/packages/luci/Packages.sig.

Signaturecheckpassed.

Downloadinghttp://downloads.openwrt.org/chaos_calmer/15.05.1/ar71xx/generi

c/packages/packages/Packages.gz.

Updatedlistofavailablepackagesin/var/opkg-lists/chaos_calmer_packages

.

Downloadinghttp://downloads.openwrt.org/chaos_calmer/15.05.1/ar71xx/generi

c/packages/packages/Packages.sig.

Signaturecheckpassed.

Downloadinghttp://downloads.openwrt.org/chaos_calmer/15.05.1/ar71xx/generi

c/packages/routing/Packages.gz.

Updatedlistofavailablepackagesin/var/opkg-lists/chaos_calmer_routing.

Downloadinghttp://downloads.openwrt.org/chaos_calmer/15.05.1/ar71xx/generi

c/packages/routing/Packages.sig.

Signaturecheckpassed.

Downloadinghttp://downloads.openwrt.org/chaos_calmer/15.05.1/ar71xx/generi

c/packages/telephony/Packages.gz.

Updatedlistofavailablepackagesin/var/opkg-lists/chaos_calmer_telephon

y.

Downloadinghttp://downloads.openwrt.org/chaos_calmer/15.05.1/ar71xx/generi

c/packages/telephony/Packages.sig.

Signaturecheckpassed.

Downloadinghttp://downloads.openwrt.org/chaos_calmer/15.05.1/ar71xx/generi

c/packages/management/Packages.gz.

Updatedlistofavailablepackagesin/var/opkg-lists/chaos_calmer_manageme

nt.

Downloadinghttp://downloads.openwrt.org/chaos_calmer/15.05.1/ar71xx/generi

c/packages/management/Packages.sig.

Signaturecheckpassed.

安装软件包:

ChinaDNS+Shadowsocks

179

Page 180: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

root@OpenWrt:~#opkginstallcurlbind-digChinaDNSluci-app-chinadnsdns-f

orwarderluci-app-dns-forwardershadowsocks-libevluci-app-shadowsocks

Installingcurl(7.40.0-3)toroot...

Downloadinghttp://downloads.openwrt.org/chaos_calmer/15.05.1/ar71xx/generi

c/packages/base/curl_7.40.0-3_ar71xx.ipk.

Installinglibcurl(7.40.0-3)toroot...

Downloadinghttp://downloads.openwrt.org/chaos_calmer/15.05.1/ar71xx/generi

c/packages/base/libcurl_7.40.0-3_ar71xx.ipk.

Installinglibpolarssl(1.3.14-1)toroot...

Downloadinghttp://downloads.openwrt.org/chaos_calmer/15.05.1/ar71xx/generi

c/packages/base/libpolarssl_1.3.14-1_ar71xx.ipk.

Installingbind-dig(9.9.8-P3-1)toroot...

Downloadinghttp://downloads.openwrt.org/chaos_calmer/15.05.1/ar71xx/generi

c/packages/packages/bind-dig_9.9.8-P3-1_ar71xx.ipk.

Installingbind-libs(9.9.8-P3-1)toroot...

Downloadinghttp://downloads.openwrt.org/chaos_calmer/15.05.1/ar71xx/generi

c/packages/packages/bind-libs_9.9.8-P3-1_ar71xx.ipk.

Installinglibopenssl(1.0.2g-1)toroot...

Downloadinghttp://downloads.openwrt.org/chaos_calmer/15.05.1/ar71xx/generi

c/packages/base/libopenssl_1.0.2g-1_ar71xx.ipk.

Installingzlib(1.2.8-1)toroot...

Downloadinghttp://downloads.openwrt.org/chaos_calmer/15.05.1/ar71xx/generi

c/packages/base/zlib_1.2.8-1_ar71xx.ipk.

InstallingChinaDNS(1.3.2-5)toroot...

Downloadinghttp://fuckgfw.com/packages/OpenWrt/base/ar71xx/ChinaDNS_1.3.2-

5_ar71xx.ipk.

Installingluci-app-chinadns(1.6.1-1)toroot...

Downloadinghttp://fuckgfw.com/packages/OpenWrt/luci/luci-app-chinadns_1.6.

1-1_all.ipk.

Installingdns-forwarder(1.2.1-1)toroot...

Downloadinghttp://fuckgfw.com/packages/OpenWrt/base/ar71xx/dns-forwarder_1

.2.1-1_ar71xx.ipk.

Installingluci-app-dns-forwarder(1.6.1-1)toroot...

Downloadinghttp://fuckgfw.com/packages/OpenWrt/luci/luci-app-dns-forwarder

_1.6.1-1_all.ipk.

Installingshadowsocks-libev(3.0.8-1)toroot...

Downloadinghttp://fuckgfw.com/packages/OpenWrt/base/ar71xx/shadowsocks-lib

ev_3.0.8-1_ar71xx.ipk.

Installinglibev(4.19-1)toroot...

Downloadinghttp://downloads.openwrt.org/chaos_calmer/15.05.1/ar71xx/generi

c/packages/packages/libev_4.19-1_ar71xx.ipk.

ChinaDNS+Shadowsocks

180

Page 181: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

Installinglibudns(0.4-1)toroot...

Downloadinghttp://fuckgfw.com/packages/OpenWrt/base/ar71xx/libudns_0.4-1_a

r71xx.ipk.

Installinglibpcre(8.38-1)toroot...

Downloadinghttp://downloads.openwrt.org/chaos_calmer/15.05.1/ar71xx/generi

c/packages/packages/libpcre_8.38-1_ar71xx.ipk.

Installinglibpthread(0.9.33.2-1)toroot...

Downloadinghttp://downloads.openwrt.org/chaos_calmer/15.05.1/ar71xx/generi

c/packages/base/libpthread_0.9.33.2-1_ar71xx.ipk.

Installinglibsodium(1.0.12-1)toroot...

Downloadinghttp://fuckgfw.com/packages/OpenWrt/base/ar71xx/libsodium_1.0.1

2-1_ar71xx.ipk.

Installinglibmbedtls(2.5.1-2)toroot...

Downloadinghttp://fuckgfw.com/packages/OpenWrt/base/ar71xx/libmbedtls_2.5.

1-2_ar71xx.ipk.

Installingluci-app-shadowsocks(1.8.1-1)toroot...

Downloadinghttp://fuckgfw.com/packages/OpenWrt/luci/luci-app-shadowsocks_1

.8.1-1_all.ipk.

Installingipset(6.24-1)toroot...

Downloadinghttp://downloads.openwrt.org/chaos_calmer/15.05.1/ar71xx/generi

c/packages/base/ipset_6.24-1_ar71xx.ipk.

Installingkmod-ipt-ipset(3.18.23-1)toroot...

Downloadinghttp://downloads.openwrt.org/chaos_calmer/15.05.1/ar71xx/generi

c/packages/base/kmod-ipt-ipset_3.18.23-1_ar71xx.ipk.

Installingkmod-nfnetlink(3.18.23-1)toroot...

Downloadinghttp://downloads.openwrt.org/chaos_calmer/15.05.1/ar71xx/generi

c/packages/base/kmod-nfnetlink_3.18.23-1_ar71xx.ipk.

Installinglibmnl(1.0.3-2)toroot...

Downloadinghttp://downloads.openwrt.org/chaos_calmer/15.05.1/ar71xx/generi

c/packages/base/libmnl_1.0.3-2_ar71xx.ipk.

Configuringzlib.

Configuringlibev.

Configuringlibudns.

Configuringlibpcre.

Configuringlibpthread.

Configuringlibsodium.

Configuringlibmbedtls.

Configuringshadowsocks-libev.

Configuringkmod-nfnetlink.

Configuringlibpolarssl.

Configuringlibcurl.

Configuringlibmnl.

ChinaDNS+Shadowsocks

181

Page 182: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

ConfiguringChinaDNS.

Configuringluci-app-chinadns.

Configuringcurl.

Configuringdns-forwarder.

Configuringkmod-ipt-ipset.

Configuringipset.

Configuringlibopenssl.

Configuringbind-libs.

Configuringluci-app-dns-forwarder.

Configuringbind-dig.

Configuringluci-app-shadowsocks.

软件包占用大概 3M空间:

root@OpenWrt:~#df-hT

FilesystemTypeSizeUsedAvailableUse%Mounted

on

rootfsrootfs12.5M3.3M9.2M26%/

/dev/rootsquashfs2.3M2.3M0100%/rom

tmpfstmpfs29.8M664.0K29.2M2%/tmp

tmpfstmpfs29.8M44.0K29.8M0%/tmp/roo

t

tmpfstmpfs512.0K0512.0K0%/dev

/dev/mtdblock3jffs212.5M3.3M9.2M26%/overlay

overlayfs:/overlayoverlay12.5M3.3M9.2M26%/

ss-redir支持UDP代理依赖 ip和 iptables-mod-tproxy软件包:

ChinaDNS+Shadowsocks

182

Page 183: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

root@OpenWrt:~#opkgfindip

ip-4.0.0-1-Routingcontrolutility(Minimal)

root@OpenWrt:~#opkgfindip-full

ip-full-4.0.0-1-Routingcontrolutility(Full)

root@OpenWrt:~#opkgfind*tproxy*

iptables-mod-tproxy-1.4.21-1-Transparentproxyiptablesextensions.

Matches:

-socket

Targets:

-TPROXY

kmod-ipt-tproxy-3.18.23-1-KernelmodulesforTransparentProxying

root@OpenWrt:~#opkginstallipiptables-mod-tproxy

Installingip(4.0.0-1)toroot...

Downloadinghttp://downloads.openwrt.org/chaos_calmer/15.05.1/ar71xx/generi

c/packages/base/ip_4.0.0-1_ar71xx.ipk.

Installingiptables-mod-tproxy(1.4.21-1)toroot...

Downloadinghttp://downloads.openwrt.org/chaos_calmer/15.05.1/ar71xx/generi

c/packages/base/iptables-mod-tproxy_1.4.21-1_ar71xx.ipk.

Installingkmod-ipt-tproxy(3.18.23-1)toroot...

Downloadinghttp://downloads.openwrt.org/chaos_calmer/15.05.1/ar71xx/generi

c/packages/base/kmod-ipt-tproxy_3.18.23-1_ar71xx.ipk.

Configuringip.

Configuringkmod-ipt-tproxy.

failedtofindamodulenamednf_tproxy_core

Configuringiptables-mod-tproxy.

config默认配置:

root@OpenWrt:~#ucishowdhcp

dhcp.@dnsmasq[0]=dnsmasq

dhcp.@dnsmasq[0].domainneeded='1'

ChinaDNS+Shadowsocks

183

Page 184: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

dhcp.@dnsmasq[0].boguspriv='1'

dhcp.@dnsmasq[0].filterwin2k='0'

dhcp.@dnsmasq[0].localise_queries='1'

dhcp.@dnsmasq[0].rebind_protection='1'

dhcp.@dnsmasq[0].rebind_localhost='1'

dhcp.@dnsmasq[0].local='/lan/'

dhcp.@dnsmasq[0].domain='lan'

dhcp.@dnsmasq[0].expandhosts='1'

dhcp.@dnsmasq[0].nonegcache='0'

dhcp.@dnsmasq[0].authoritative='1'

dhcp.@dnsmasq[0].readethers='1'

dhcp.@dnsmasq[0].leasefile='/tmp/dhcp.leases'

dhcp.@dnsmasq[0].resolvfile='/tmp/resolv.conf.auto'

dhcp.@dnsmasq[0].localservice='1'

dhcp.lan=dhcp

dhcp.lan.interface='lan'

dhcp.lan.start='100'

dhcp.lan.limit='150'

dhcp.lan.leasetime='12h'

dhcp.lan.dhcpv6='server'

dhcp.lan.ra='server'

dhcp.lan.ra_management='1'

dhcp.wan=dhcp

dhcp.wan.interface='wan'

dhcp.wan.ignore='1'

dhcp.odhcpd=odhcpd

dhcp.odhcpd.maindhcp='0'

dhcp.odhcpd.leasefile='/tmp/hosts/odhcpd'

dhcp.odhcpd.leasetrigger='/usr/sbin/odhcpd-update'

root@OpenWrt:~#cat/etc/config/dhcp

configdnsmasq

optiondomainneeded'1'

optionboguspriv'1'

optionfilterwin2k'0'

optionlocalise_queries'1'

optionrebind_protection'1'

optionrebind_localhost'1'

optionlocal'/lan/'

optiondomain'lan'

optionexpandhosts'1'

ChinaDNS+Shadowsocks

184

Page 185: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

optionnonegcache'0'

optionauthoritative'1'

optionreadethers'1'

optionleasefile'/tmp/dhcp.leases'

optionresolvfile'/tmp/resolv.conf.auto'

optionlocalservice'1'

configdhcp'lan'

optioninterface'lan'

optionstart'100'

optionlimit'150'

optionleasetime'12h'

optiondhcpv6'server'

optionra'server'

optionra_management'1'

configdhcp'wan'

optioninterface'wan'

optionignore'1'

configodhcpd'odhcpd'

optionmaindhcp'0'

optionleasefile'/tmp/hosts/odhcpd'

optionleasetrigger'/usr/sbin/odhcpd-update'

root@OpenWrt:/tmp#ucishowdns-forwarder

dns-forwarder.@dns-forwarder[0]=dns-forwarder

dns-forwarder.@dns-forwarder[0].enable='0'

dns-forwarder.@dns-forwarder[0].listen_addr='0.0.0.0'

dns-forwarder.@dns-forwarder[0].listen_port='5300'

dns-forwarder.@dns-forwarder[0].dns_servers='8.8.8.8'

root@OpenWrt:/tmp#ucishowchinadns

chinadns.@chinadns[0]=chinadns

chinadns.@chinadns[0].enable='0'

chinadns.@chinadns[0].bidirectional='0'

chinadns.@chinadns[0].chnroute='/etc/chinadns_chnroute.txt'

chinadns.@chinadns[0].port='5353'

chinadns.@chinadns[0].server='223.5.5.5,8.8.4.4'

root@OpenWrt:/tmp#ucishowshadowsocks

shadowsocks.@general[0]=general

ChinaDNS+Shadowsocks

185

Page 186: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

shadowsocks.@general[0].startup_delay='0'

shadowsocks.@transparent_proxy[0]=transparent_proxy

shadowsocks.@transparent_proxy[0].main_server='nil'

shadowsocks.@transparent_proxy[0].udp_relay_server='nil'

shadowsocks.@transparent_proxy[0].local_port='1234'

shadowsocks.@socks5_proxy[0]=socks5_proxy

shadowsocks.@socks5_proxy[0].server='nil'

shadowsocks.@socks5_proxy[0].local_port='1080'

shadowsocks.@port_forward[0]=port_forward

shadowsocks.@port_forward[0].server='nil'

shadowsocks.@port_forward[0].local_port='5300'

shadowsocks.@port_forward[0].destination='8.8.4.4:53'

shadowsocks.@servers[0]=servers

shadowsocks.@servers[0].alias='sample'

shadowsocks.@servers[0].fast_open='0'

shadowsocks.@servers[0].server='127.0.0.1'

shadowsocks.@servers[0].server_port='8388'

shadowsocks.@servers[0].timeout='60'

shadowsocks.@servers[0].password='barfoo!'

shadowsocks.@servers[0].encrypt_method='rc4-md5'

shadowsocks.@access_control[0]=access_control

shadowsocks.@access_control[0].self_proxy='1'

root@OpenWrt:~#cat/etc/config/dns-forwarder

configdns-forwarder

optionenable'0'

optionlisten_addr'0.0.0.0'

optionlisten_port'5300'

optiondns_servers'8.8.8.8'

root@OpenWrt:~#cat/etc/config/chinadns

configchinadns

optionenable'0'

optionbidirectional'0'

optionchnroute'/etc/chinadns_chnroute.txt'

optionport'5353'

optionserver'223.5.5.5,8.8.4.4'

root@OpenWrt:~#cat/etc/config/shadowsocks

ChinaDNS+Shadowsocks

186

Page 187: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

configgeneral

optionstartup_delay'0'

configtransparent_proxy

listmain_server'nil'

optionudp_relay_server'nil'

optionlocal_port'1234'

configsocks5_proxy

listserver'nil'

optionlocal_port'1080'

configport_forward

listserver'nil'

optionlocal_port'5300'

optiondestination'8.8.4.4:53'

configservers

optionalias'sample'

optionfast_open'0'

optionserver'127.0.0.1'

optionserver_port'8388'

optiontimeout'60'

optionpassword'barfoo!'

optionencrypt_method'rc4-md5'

configaccess_control

optionself_proxy'1'

配置DNSmasq服务:

ChinaDNS+Shadowsocks

187

Page 188: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

ucisetdhcp.@dnsmasq[0].nohosts=1

ucisetdhcp.@dnsmasq[0].noresolv=1

ucisetdhcp.@dnsmasq[0].local=127.0.0.1#5353

ucichanges

ucicommit

root@OpenWrt:~#ucisetdhcp.@dnsmasq[0].nohosts=1

root@OpenWrt:~#ucisetdhcp.@dnsmasq[0].noresolv=1

root@OpenWrt:~#ucisetdhcp.@dnsmasq[0].local=127.0.0.1#5353

root@OpenWrt:~#ucichanges

dhcp.cfg02411c.nohosts='1'

dhcp.cfg02411c.noresolv='1'

dhcp.cfg02411c.local='127.0.0.1#5353'

root@OpenWrt:~#ucicommit

TODO:关闭「UseDNSserversadvertisedbypeer」避免WAN接口连接外网时被上层路由

器指定DNS服务器:

参考:OpenWrtRouter2017-02-17

ucisetnetwork.wan.peerdns=0

配置shadowsocks服务:

ChinaDNS+Shadowsocks

188

Page 189: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

ucisetshadowsocks.@servers[0].server=45.67.89.10

ucisetshadowsocks.@servers[0].server_port=12345

ucisetshadowsocks.@servers[0].password=SS_SRV_PASS

ucisetshadowsocks.@servers[0].encrypt_method=rc4-md5

ucisetshadowsocks.@transparent_proxy[0].main_server=cfg0a4a8f

ucisetshadowsocks.@access_control[0].lan_target=SS_SPEC_WAN_AC

ucisetshadowsocks.@access_control[0].wan_bp_list=/etc/chinadns_chnroute.t

xt

ucichanges

ucicommit

root@OpenWrt:~#ucisetshadowsocks.@servers[0].server=45.67.89.10

root@OpenWrt:~#ucisetshadowsocks.@servers[0].server_port=12345

root@OpenWrt:~#ucisetshadowsocks.@servers[0].password=SS_SRV_PASS

root@OpenWrt:~#ucisetshadowsocks.@servers[0].encrypt_method=rc4-md5

root@OpenWrt:~#

root@OpenWrt:~#ucisetshadowsocks.@transparent_proxy[0].main_server=cfg0a

4a8f

root@OpenWrt:~#

root@OpenWrt:~#ucisetshadowsocks.@access_control[0].lan_target=SS_SPEC_W

AN_AC

root@OpenWrt:~#ucisetshadowsocks.@access_control[0].wan_bp_list=/etc/chi

nadns_chnroute.txt

root@OpenWrt:~#ucichanges

shadowsocks.cfg0a4a8f.server='45.67.89.10'

shadowsocks.cfg0a4a8f.server_port='12345'

shadowsocks.cfg0a4a8f.password='V_VL_Fuck_GFW'

shadowsocks.cfg043a58.main_server='cfg0a4a8f'

shadowsocks.cfg0c4417.lan_target='SS_SPEC_WAN_AC'

shadowsocks.cfg0c4417.wan_bp_list='/etc/chinadns_chnroute.txt'

root@OpenWrt:~#ucicommit

配置dns-forwarder服务:

ChinaDNS+Shadowsocks

189

Page 190: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

ucisetdns-forwarder.@dns-forwarder[0].enable=1

ucisetdns-forwarder.@dns-forwarder[0].listen_addr='0.0.0.0'

ucisetdns-forwarder.@dns-forwarder[0].listen_port='5300'

ucisetdns-forwarder.@dns-forwarder[0].dns_servers='8.8.8.8'

ucichanges

ucicommit

root@OpenWrt:/tmp#ucisetdns-forwarder.@dns-forwarder[0].enable=1

root@OpenWrt:/tmp#ucichanges

dns-forwarder.cfg02e1e3.enable='1'

root@OpenWrt:/tmp#ucicommit

配置ChinaDNS服务:

ucisetchinadns.@chinadns[0].enable=1

ucisetchinadns.@chinadns[0].server='223.5.5.5,127.0.0.1:5300'

ucichanges

ucicommit

root@OpenWrt:/tmp#ucisetchinadns.@chinadns[0].enable=1

root@OpenWrt:/tmp#ucisetchinadns.@chinadns[0].server='223.5.5.5,127.0.0.

1:5300'

root@OpenWrt:/tmp#ucichanges

chinadns.cfg0265ad.enable='1'

chinadns.cfg0265ad.server='223.5.5.5,127.0.0.1:5300'

root@OpenWrt:/tmp#ucicommit

启动shadowsocks服务:

ChinaDNS+Shadowsocks

190

Page 191: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

/etc/init.d/shadowsocksenable

/etc/init.d/shadowsocksstart

pgrep-lfss

netstat-lntpu|grepss

root@OpenWrt:~#/etc/init.d/shadowsocksenable

root@OpenWrt:~#/etc/init.d/shadowsocksstart

2017-08-2702:14:01INFO:setMTUto1492

root@OpenWrt:~#pgrep-lfss

296ss-redir-c/var/etc/shadowsocks.cfg0a4a8f.json-l1234--mtu1492-f/

var/run/ss-redir-cfg0a4a8f.pid

root@OpenWrt:~#netstat-lntpu|grepss

ProtoRecv-QSend-QLocalAddressForeignAddressStatePID/Progr

amname

tcp000.0.0.0:12340.0.0.0:*LISTEN296/ss-re

dir

启动dns-forwarder服务:

/etc/init.d/dns-forwarderenable

/etc/init.d/dns-forwarderstart

pgrep-lfdns-forwarder

netstat-lntpu|grepdns-forwarder

root@OpenWrt:~#/etc/init.d/dns-forwarderenable

root@OpenWrt:~#/etc/init.d/dns-forwarderstart

root@OpenWrt:~#pgrep-lfdns-forwarder

3180/usr/bin/dns-forwarder-b0.0.0.0-p5300-s8.8.8.8

root@OpenWrt:~#netstat-lntpu|grepdns-for

ProtoRecv-QSend-QLocalAddressForeignAddressStatePID/Progr

amname

udp000.0.0.0:53000.0.0.0:*3180/dns-

forwarder

启动ChinaDNS服务:

ChinaDNS+Shadowsocks

191

Page 192: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

/etc/init.d/chinadnsenable

/etc/init.d/chinadnsstart

pgrep-lfchinadns

netstat-lntpu|grepchinadns

root@OpenWrt:~#/etc/init.d/chinadnsenable

root@OpenWrt:~#/etc/init.d/chinadnsstart

root@OpenWrt:~#pgrep-lfchinadns

3241/usr/bin/chinadns-m-p5353-s223.5.5.5,127.0.0.1:5300-c/etc/china

dns_chnroute.txt

root@OpenWrt:~#netstat-lntpu|grepchinadns

ProtoRecv-QSend-QLocalAddressForeignAddressStatePID/Progr

amname

udp000.0.0.0:53530.0.0.0:*3241/chin

adns

测试DNS解析:

root@OpenWrt:~#[email protected]

8.7.198.45

root@OpenWrt:~#[email protected]

162.125.248.1

root@OpenWrt:~#[email protected]

162.125.248.1

root@OpenWrt:~#dig+shortdropbox.com

162.125.248.1

重启dnsmasq服务:

root@OpenWrt:~#cat/var/etc/dnsmasq.conf

#auto-generatedconfigfilefrom/etc/config/dhcp

conf-file=/etc/dnsmasq.conf

dhcp-authoritative

domain-needed

ChinaDNS+Shadowsocks

192

Page 193: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

localise-queries

read-ethers

bogus-priv

expand-hosts

local-service

domain=lan

server=/lan/

dhcp-leasefile=/tmp/dhcp.leases

resolv-file=/tmp/resolv.conf.auto

addn-hosts=/tmp/hosts

conf-dir=/tmp/dnsmasq.d

stop-dns-rebind

rebind-localhost-ok

dhcp-broadcast=tag:needs-broadcast

dhcp-range=lan,192.168.12.100,192.168.12.249,255.255.255.0,12h

no-dhcp-interface=eth0

root@OpenWrt:~#/etc/init.d/dnsmasqrestart

root@OpenWrt:~#cat/var/etc/dnsmasq.conf

#auto-generatedconfigfilefrom/etc/config/dhcp

conf-file=/etc/dnsmasq.conf

dhcp-authoritative

domain-needed

no-hosts

no-resolv

localise-queries

read-ethers

bogus-priv

expand-hosts

local-service

domain=lan

server=127.0.0.1#5353

dhcp-leasefile=/tmp/dhcp.leases

resolv-file=/tmp/resolv.conf.auto

addn-hosts=/tmp/hosts

conf-dir=/tmp/dnsmasq.d

stop-dns-rebind

rebind-localhost-ok

dhcp-broadcast=tag:needs-broadcast

dhcp-range=lan,192.168.12.100,192.168.12.249,255.255.255.0,12h

ChinaDNS+Shadowsocks

193

Page 194: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

no-dhcp-interface=eth0

xiaominano

repo注意:网线插在LAN口才能SSH

[email protected]

BusyBoxv1.25.1()built-inshell(ash)

_________

//\__________

/LE/\|||__|\|__|

/DE/\||__|_|||)|_|

/________/LE\|____|___|___/|___|lede-project.o

rg

\\DE/

\LE\/--------------------------------------------------------

---

\DE\/Reboot(17.01.2,r3435-65eec8bd5f)

\________\/--------------------------------------------------------

---

===WARNING!=====================================

Thereisnorootpassworddefinedonthisdevice!

Usethe"passwd"commandtosetupanewpassword

inordertopreventunauthorizedSSHlogins.

--------------------------------------------------

root@LEDE:~#netstat-lntp

ActiveInternetconnections(onlyservers)

ProtoRecv-QSend-QLocalAddressForeignAddressState

PID/Programname

tcp000.0.0.0:800.0.0.0:*LISTEN

842/uhttpd

tcp000.0.0.0:530.0.0.0:*LISTEN

1005/dnsmasq

ChinaDNS+Shadowsocks

194

Page 195: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

tcp000.0.0.0:220.0.0.0:*LISTEN

1027/dropbear

tcp00:::80:::*LISTEN

842/uhttpd

tcp00:::53:::*LISTEN

1005/dnsmasq

tcp00:::22:::*LISTEN

1027/dropbear

root@LEDE:~#df-hT

FilesystemTypeSizeUsedAvailableUse%Mounted

on

/dev/rootsquashfs2.3M2.3M0100%/rom

tmpfstmpfs29.8M428.0K29.4M1%/tmp

tmpfstmpfs29.8M52.0K29.8M0%/tmp/roo

t

tmpfstmpfs512.0K0512.0K0%/dev

/dev/mtdblock6jffs24.3M276.0K4.0M6%/overlay

overlayfs:/overlayoverlay4.3M276.0K4.0M6%/

安装软件包:

arch=mipsel_24kc

echo"src/gzopenwrt_disthttp://fuckgfw.com/packages/LEDE/base/${arch}

src/gzopenwrt_dist_lucihttp://fuckgfw.com/packages/LEDE/luci">>/etc/opk

g.conf

cat/etc/opkg.conf

root@LEDE:~#cat/etc/opkg.conf

destroot/

destram/tmp

lists_dirext/var/opkg-lists

optionoverlay_root/overlay

optioncheck_signature1

src/gzopenwrt_disthttp://fuckgfw.com/packages/LEDE/base/mipsel_24kc

src/gzopenwrt_dist_lucihttp://fuckgfw.com/packages/LEDE/luci

root@LEDE:~#wgethttp://fuckgfw.com/packages/openwrt-dist.pub-O/tmp/open

wrt-dist.pub

Downloading'http://fuckgfw.com/packages/openwrt-dist.pub'

Connectingto45.67.89.10:80

ChinaDNS+Shadowsocks

195

Page 196: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

Writingto'/tmp/openwrt-dist.pub'

/tmp/openwrt-dist.pu100%|*******************************|1040:00:00

ETA

Downloadcompleted(104bytes)

root@LEDE:~#opkg-keyadd/tmp/openwrt-dist.pub

root@LEDE:~#opkgupdate

Downloadinghttp://fuckgfw.com/packages/LEDE/base/mipsel_24kc/Packages.gz

Updatedlistofavailablepackagesin/var/opkg-lists/openwrt_dist

Downloadinghttp://fuckgfw.com/packages/LEDE/base/mipsel_24kc/Packages.sig

Signaturecheckpassed.

Downloadinghttp://fuckgfw.com/packages/LEDE/luci/Packages.gz

Updatedlistofavailablepackagesin/var/opkg-lists/openwrt_dist_luci

Downloadinghttp://fuckgfw.com/packages/LEDE/luci/Packages.sig

Signaturecheckpassed.

Downloadinghttp://downloads.lede-project.org/releases/17.01.2/targets/rami

ps/mt7628/packages/Packages.gz

Updatedlistofavailablepackagesin/var/opkg-lists/reboot_core

Downloadinghttp://downloads.lede-project.org/releases/17.01.2/targets/rami

ps/mt7628/packages/Packages.sig

Signaturecheckpassed.

Downloadinghttp://downloads.lede-project.org/releases/17.01.2/packages/mip

sel_24kc/base/Packages.gz

Updatedlistofavailablepackagesin/var/opkg-lists/reboot_base

Downloadinghttp://downloads.lede-project.org/releases/17.01.2/packages/mip

sel_24kc/base/Packages.sig

Signaturecheckpassed.

Downloadinghttp://downloads.lede-project.org/releases/17.01.2/packages/mip

sel_24kc/luci/Packages.gz

Updatedlistofavailablepackagesin/var/opkg-lists/reboot_luci

Downloadinghttp://downloads.lede-project.org/releases/17.01.2/packages/mip

sel_24kc/luci/Packages.sig

Signaturecheckpassed.

Downloadinghttp://downloads.lede-project.org/releases/17.01.2/packages/mip

sel_24kc/packages/Packages.gz

Updatedlistofavailablepackagesin/var/opkg-lists/reboot_packages

Downloadinghttp://downloads.lede-project.org/releases/17.01.2/packages/mip

sel_24kc/packages/Packages.sig

Signaturecheckpassed.

Downloadinghttp://downloads.lede-project.org/releases/17.01.2/packages/mip

sel_24kc/routing/Packages.gz

ChinaDNS+Shadowsocks

196

Page 197: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

Updatedlistofavailablepackagesin/var/opkg-lists/reboot_routing

Downloadinghttp://downloads.lede-project.org/releases/17.01.2/packages/mip

sel_24kc/routing/Packages.sig

Signaturecheckpassed.

Downloadinghttp://downloads.lede-project.org/releases/17.01.2/packages/mip

sel_24kc/telephony/Packages.gz

Updatedlistofavailablepackagesin/var/opkg-lists/reboot_telephony

Downloadinghttp://downloads.lede-project.org/releases/17.01.2/packages/mip

sel_24kc/telephony/Packages.sig

Signaturecheckpassed.

root@LEDE:~#opkginstallbind-digChinaDNSluci-app-chinadnsdns-forwarder

luci-app-dns-forwardershadowsocks-libevluci-app-shadowsockssimple-obfs

ip-fulliptables-mod-tproxy

Installingbind-dig(9.10.4-P5-1)toroot...

Downloadinghttp://downloads.lede-project.org/releases/17.01.2/packages/mip

sel_24kc/packages/bind-dig_9.10.4-P5-1_mipsel_24kc.ipk

Installingzlib(1.2.11-1)toroot...

Downloadinghttp://downloads.lede-project.org/releases/17.01.2/packages/mip

sel_24kc/base/zlib_1.2.11-1_mipsel_24kc.ipk

Installinglibopenssl(1.0.2k-1)toroot...

Downloadinghttp://downloads.lede-project.org/releases/17.01.2/packages/mip

sel_24kc/base/libopenssl_1.0.2k-1_mipsel_24kc.ipk

Installingbind-libs(9.10.4-P5-1)toroot...

Downloadinghttp://downloads.lede-project.org/releases/17.01.2/packages/mip

sel_24kc/packages/bind-libs_9.10.4-P5-1_mipsel_24kc.ipk

InstallingChinaDNS(1.3.2-5)toroot...

Downloadinghttp://fuckgfw.com/packages/LEDE/base/mipsel_24kc/ChinaDNS_1.3.

2-5_mipsel_24kc.ipk

Installingluci-app-chinadns(1.6.1-1)toroot...

Downloadinghttp://fuckgfw.com/packages/LEDE/luci/luci-app-chinadns_1.6.1-1

_all.ipk

Installingdns-forwarder(1.2.1-1)toroot...

Downloadinghttp://fuckgfw.com/packages/LEDE/base/mipsel_24kc/dns-forwarder

_1.2.1-1_mipsel_24kc.ipk

Installingluci-app-dns-forwarder(1.6.1-1)toroot...

Downloadinghttp://fuckgfw.com/packages/LEDE/luci/luci-app-dns-forwarder_1.

6.1-1_all.ipk

Installingshadowsocks-libev(3.1.0-1)toroot...

Downloadinghttp://fuckgfw.com/packages/LEDE/base/mipsel_24kc/shadowsocks-l

ibev_3.1.0-1_mipsel_24kc.ipk

Installinglibev(4.22-1)toroot...

ChinaDNS+Shadowsocks

197

Page 198: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

Downloadinghttp://downloads.lede-project.org/releases/17.01.2/packages/mip

sel_24kc/packages/libev_4.22-1_mipsel_24kc.ipk

Installinglibcares(1.13.0-1)toroot...

Downloadinghttp://fuckgfw.com/packages/LEDE/base/mipsel_24kc/libcares_1.13

.0-1_mipsel_24kc.ipk

Installinglibpcre(8.41-2)toroot...

Downloadinghttp://downloads.lede-project.org/releases/17.01.2/packages/mip

sel_24kc/packages/libpcre_8.41-2_mipsel_24kc.ipk

Installinglibsodium(1.0.12-1)toroot...

Downloadinghttp://fuckgfw.com/packages/LEDE/base/mipsel_24kc/libsodium_1.0

.12-1_mipsel_24kc.ipk

Installinglibmbedtls(2.5.1-2)toroot...

Downloadinghttp://downloads.lede-project.org/releases/17.01.2/packages/mip

sel_24kc/base/libmbedtls_2.5.1-2_mipsel_24kc.ipk

Installingluci-app-shadowsocks(1.8.1-1)toroot...

Downloadinghttp://fuckgfw.com/packages/LEDE/luci/luci-app-shadowsocks_1.8.

1-1_all.ipk

Installingkmod-nfnetlink(4.4.71-1)toroot...

Downloadinghttp://downloads.lede-project.org/releases/17.01.2/targets/rami

ps/mt7628/packages/kmod-nfnetlink_4.4.71-1_mipsel_24kc.ipk

Installingkmod-ipt-ipset(4.4.71-1)toroot...

Downloadinghttp://downloads.lede-project.org/releases/17.01.2/targets/rami

ps/mt7628/packages/kmod-ipt-ipset_4.4.71-1_mipsel_24kc.ipk

Installinglibmnl(1.0.4-1)toroot...

Downloadinghttp://downloads.lede-project.org/releases/17.01.2/packages/mip

sel_24kc/base/libmnl_1.0.4-1_mipsel_24kc.ipk

Installingipset(6.30-1)toroot...

Downloadinghttp://downloads.lede-project.org/releases/17.01.2/packages/mip

sel_24kc/base/ipset_6.30-1_mipsel_24kc.ipk

Installingsimple-obfs(0.0.3-2)toroot...

Downloadinghttp://fuckgfw.com/packages/LEDE/base/mipsel_24kc/simple-obfs_0

.0.3-2_mipsel_24kc.ipk

Installingip-full(4.4.0-9)toroot...

Downloadinghttp://downloads.lede-project.org/releases/17.01.2/packages/mip

sel_24kc/base/ip-full_4.4.0-9_mipsel_24kc.ipk

Installingiptables-mod-tproxy(1.4.21-2)toroot...

Downloadinghttp://downloads.lede-project.org/releases/17.01.2/packages/mip

sel_24kc/base/iptables-mod-tproxy_1.4.21-2_mipsel_24kc.ipk

Installingkmod-ipt-tproxy(4.4.71-1)toroot...

Downloadinghttp://downloads.lede-project.org/releases/17.01.2/targets/rami

ps/mt7628/packages/kmod-ipt-tproxy_4.4.71-1_mipsel_24kc.ipk

Configuringzlib.

ChinaDNS+Shadowsocks

198

Page 199: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

Configuringlibev.

Configuringlibcares.

Configuringlibpcre.

Configuringlibsodium.

Configuringlibmbedtls.

Configuringshadowsocks-libev.

Configuringip-full.

Configuringkmod-nfnetlink.

Configuringkmod-ipt-tproxy.

Configuringlibmnl.

ConfiguringChinaDNS.

Configuringluci-app-chinadns.

Configuringdns-forwarder.

Configuringkmod-ipt-ipset.

Configuringipset.

Configuringiptables-mod-tproxy.

Configuringlibopenssl.

Configuringbind-libs.

Configuringsimple-obfs.

Configuringluci-app-dns-forwarder.

Configuringbind-dig.

Configuringluci-app-shadowsocks.

配置 shadowsocks-libev服务:

root@LEDE:~#ucisetshadowsocks.@servers[0]=servers

root@LEDE:~#ucisetshadowsocks.@servers[0].server='45.67.89.10'

root@LEDE:~#ucisetshadowsocks.@servers[0].server_port=12345

root@LEDE:~#ucisetshadowsocks.@servers[0].password=YOUR_SS_PASSWORD

root@LEDE:~#ucisetshadowsocks.@servers[0].encrypt_method='rc4-md5'

root@LEDE:~#ucichanges

shadowsocks.cfg0a4a8f='servers'

shadowsocks.cfg0a4a8f.server='45.67.89.10'

shadowsocks.cfg0a4a8f.server_port='12345'

shadowsocks.cfg0a4a8f.password='YOUR_SS_PASSWORD'

root@LEDE:~#SS_CFGID=$(ucishowshadowsocks.@servers[0].alias|awk-F'.''

{print$2}')

root@LEDE:~#ucisetshadowsocks.@transparent_proxy[0].main_server="$SS_CFG

ID"

ChinaDNS+Shadowsocks

199

Page 200: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

root@LEDE:~#ucichanges

shadowsocks.cfg0a4a8f='servers'

shadowsocks.cfg0a4a8f.server='45.67.89.10'

shadowsocks.cfg0a4a8f.server_port='12345'

shadowsocks.cfg0a4a8f.password='YOUR_SS_PASSWORD'

shadowsocks.cfg043a58.main_server='cfg0a4a8f'

root@LEDE:~#ucisetshadowsocks.@access_control[0].lan_target='SS_SPEC_WAN

_AC'

root@LEDE:~#ucisetshadowsocks.@access_control[0].wan_bp_list='/etc/china

dns_chnroute.txt'

root@LEDE:~#ucichanges

shadowsocks.cfg0a4a8f='servers'

shadowsocks.cfg0a4a8f.server='45.67.89.10'

shadowsocks.cfg0a4a8f.server_port='12345'

shadowsocks.cfg0a4a8f.password='YOUR_SS_PASSWORD'

shadowsocks.cfg043a58.main_server='cfg0a4a8f'

shadowsocks.cfg0c4417.lan_target='SS_SPEC_WAN_AC'

shadowsocks.cfg0c4417.wan_bp_list='/etc/chinadns_chnroute.txt'

root@LEDE:~#ucishowshadowsocks

shadowsocks.@general[0]=general

shadowsocks.@general[0].startup_delay='0'

shadowsocks.@transparent_proxy[0]=transparent_proxy

shadowsocks.@transparent_proxy[0].udp_relay_server='nil'

shadowsocks.@transparent_proxy[0].local_port='1234'

shadowsocks.@transparent_proxy[0].main_server='cfg0a4a8f'

shadowsocks.@socks5_proxy[0]=socks5_proxy

shadowsocks.@socks5_proxy[0].server='nil'

shadowsocks.@socks5_proxy[0].local_port='1080'

shadowsocks.@port_forward[0]=port_forward

shadowsocks.@port_forward[0].server='nil'

shadowsocks.@port_forward[0].local_port='5300'

shadowsocks.@port_forward[0].destination='8.8.4.4:53'

shadowsocks.@servers[0]=servers

shadowsocks.@servers[0].alias='sample'

shadowsocks.@servers[0].fast_open='0'

shadowsocks.@servers[0].timeout='60'

shadowsocks.@servers[0].encrypt_method='rc4-md5'

shadowsocks.@servers[0].server='45.67.89.10'

ChinaDNS+Shadowsocks

200

Page 201: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

shadowsocks.@servers[0].server_port='12345'

shadowsocks.@servers[0].password='YOUR_SS_PASSWORD'

shadowsocks.@access_control[0]=access_control

shadowsocks.@access_control[0].self_proxy='1'

shadowsocks.@access_control[0].lan_target='SS_SPEC_WAN_AC'

shadowsocks.@access_control[0].wan_bp_list='/etc/chinadns_chnroute.txt'

root@LEDE:~#/etc/init.d/shadowsocksenable

root@LEDE:~#/etc/init.d/shadowsocksstart

2017-09-2314:28:43INFO:setMTUto1492

root@LEDE:~#pgrep-lfss

379ss-redir-c/var/etc/shadowsocks.cfg0a4a8f.json-l1234--mtu1492-f/

var/run/ss-redir-cfg0a4a8f.pid

root@LEDE:~#netstat-lntpu|grepss

ProtoRecv-QSend-QLocalAddressForeignAddressState

PID/Programname

tcp000.0.0.0:12340.0.0.0:*LISTEN

379/ss-redir

配置 dns-forwarder服务:

ChinaDNS+Shadowsocks

201

Page 202: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

root@LEDE:~#ucisetdns-forwarder.@dns-forwarder[0]=dns-forwarder

root@LEDE:~#ucisetdns-forwarder.@dns-forwarder[0].listen_addr='0.0.0.0'

root@LEDE:~#ucisetdns-forwarder.@dns-forwarder[0].listen_port='5300'

root@LEDE:~#ucisetdns-forwarder.@dns-forwarder[0].dns_servers='8.8.8.8'

root@LEDE:~#ucisetdns-forwarder.@dns-forwarder[0].enable='1'

root@LEDE:~#ucichanges

dns-forwarder.cfg02e1e3='dns-forwarder'

dns-forwarder.cfg02e1e3.enable='1'

root@LEDE:~#ucicommit

root@LEDE:~#ucishowdns-forwarder

dns-forwarder.@dns-forwarder[0]=dns-forwarder

dns-forwarder.@dns-forwarder[0].listen_addr='0.0.0.0'

dns-forwarder.@dns-forwarder[0].listen_port='5300'

dns-forwarder.@dns-forwarder[0].dns_servers='8.8.8.8'

dns-forwarder.@dns-forwarder[0].enable='1'

root@LEDE:~#/etc/init.d/dns-forwarderenable

root@LEDE:~#/etc/init.d/dns-forwarderstart

root@LEDE:~#pgrep-lfdns-for

3763/usr/bin/dns-forwarder-b0.0.0.0-p5300-s8.8.8.8

root@LEDE:~#netstat-lntpu|grepdns-for

udp000.0.0.0:53000.0.0.0:*

3763/dns-forwarder

配置 ChinaDNS服务:

ChinaDNS+Shadowsocks

202

Page 203: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

root@LEDE:~#ucisetchinadns.@chinadns[0]=chinadns

root@LEDE:~#ucisetchinadns.@chinadns[0].bidirectional='0'

root@LEDE:~#ucisetchinadns.@chinadns[0].chnroute='/etc/chinadns_chnroute

.txt'

root@LEDE:~#ucisetchinadns.@chinadns[0].port='5353'

root@LEDE:~#ucisetchinadns.@chinadns[0].enable='1'

root@LEDE:~#ucisetchinadns.@chinadns[0].server='223.5.5.5,127.0.0.1:5300

'

root@LEDE:~#ucichanges

chinadns.cfg0265ad='chinadns'

chinadns.cfg0265ad.enable='1'

chinadns.cfg0265ad.server='223.5.5.5,127.0.0.1:5300'

root@LEDE:~#ucicommit

root@LEDE:~#/etc/init.d/chinadnsenable

root@LEDE:~#/etc/init.d/chinadnsstart

root@LEDE:~#pgrep-lfchinadns

3895/usr/bin/chinadns-m-p5353-s223.5.5.5,127.0.0.1:5300-c/etc/china

dns_chnroute.txt

root@LEDE:~#netstat-lntpu|grepchinadns

udp000.0.0.0:53530.0.0.0:*

3895/chinadns

配置WIFI:

ChinaDNS+Shadowsocks

203

Page 204: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

ucisetwireless.@wifi-device[0].country='CN'

ucisetwireless.@wifi-device[0].disabled='0'

ucisetwireless.@wifi-device[0].txpower='17'

ucisetwireless.@wifi-iface[0].ssid='fuckgfw'

ucisetwireless.@wifi-iface[0].encryption='psk2'

ucisetwireless.@wifi-iface[0].key='YOUR_WIFI_PASSWORD'

root@LEDE:~#ucichanges

wireless.radio0.disabled='0'

wireless.radio0.country='CN'

wireless.radio0.txpower='17'

wireless.default_radio0.ssid='fuckgfw'

wireless.default_radio0.encryption='psk2'

wireless.default_radio0.key='YOUR_WIFI_PASSWORD'

root@LEDE:~#ucicommit

root@LEDE:~#ucishowwireless

wireless.radio0=wifi-device

wireless.radio0.type='mac80211'

wireless.radio0.channel='11'

wireless.radio0.hwmode='11g'

wireless.radio0.path='platform/10300000.wmac'

wireless.radio0.htmode='HT20'

wireless.radio0.disabled='0'

wireless.radio0.country='CN'

wireless.radio0.txpower='17'

wireless.default_radio0=wifi-iface

wireless.default_radio0.device='radio0'

wireless.default_radio0.network='lan'

wireless.default_radio0.mode='ap'

wireless.default_radio0.ssid='fuckgfw'

wireless.default_radio0.encryption='psk2'

wireless.default_radio0.key='YOUR_WIFI_PASSWORD'

使用 wifi命令启动无线:

root@LEDE:~#wifistatus

{

"radio0":{

ChinaDNS+Shadowsocks

204

Page 205: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

"up":false,

"pending":false,

"autostart":true,

"disabled":true,

"retry_setup_failed":false,

"config":{

"channel":"11",

"hwmode":"11g",

"path":"platform\/10300000.wmac",

"htmode":"HT20",

"disabled":true

},

"interfaces":[

{

"section":"default_radio0",

"config":{

"mode":"ap",

"ssid":"LEDE",

"encryption":"none",

"network":[

"lan"

],

"mode":"ap"

}

}

]

}

}

root@LEDE:~#wifi

root@LEDE:~#wifistatus

{

"radio0":{

"up":true,

"pending":false,

"autostart":true,

"disabled":false,

"retry_setup_failed":false,

"config":{

"channel":"11",

"hwmode":"11g",

ChinaDNS+Shadowsocks

205

Page 206: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

"path":"platform\/10300000.wmac",

"htmode":"HT20",

"country":"CN",

"disabled":false

},

"interfaces":[

{

"section":"default_radio0",

"ifname":"wlan0",

"config":{

"mode":"ap",

"ssid":"fuckgfw",

"encryption":"psk2",

"key":"YOUR_WIFI_PASSWORD",

"network":[

"lan"

],

"mode":"ap"

}

}

]

}

}

配置network:

root@LEDE:~#ucideletenetwork.globals.ula_prefix

root@LEDE:~#ucideletenetwork.wan6

root@LEDE:~#ucisetnetwork.wan.peerdns=0

root@LEDE:~#ucisetnetwork.lan.ipaddr='192.168.11.1'

root@LEDE:~#ucichanges

-network.globals.ula_prefix

-network.wan6

network.wan.peerdns='0'

network.lan.ipaddr='192.168.11.1'

root@LEDE:~#ucicommit

配置DNSmasq服务:

ChinaDNS+Shadowsocks

206

Page 207: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

root@LEDE:~#pgrep-lfdnsmasq

1069/usr/sbin/dnsmasq-C/var/etc/dnsmasq.conf.cfg02411c-k-x/var/run/dn

smasq/dnsmasq.cfg02411c.pid

root@LEDE:~#cat/var/etc/dnsmasq.conf.cfg02411c|sed-e'/^#/d'-e'/^$/d'

conf-file=/etc/dnsmasq.conf

dhcp-authoritative

domain-needed

localise-queries

read-ethers

bogus-priv

expand-hosts

local-service

domain=lan

server=/lan/

dhcp-leasefile=/tmp/dhcp.leases

resolv-file=/tmp/resolv.conf.auto

stop-dns-rebind

rebind-localhost-ok

dhcp-broadcast=tag:needs-broadcast

addn-hosts=/tmp/hosts

conf-dir=/tmp/dnsmasq.d

user=dnsmasq

group=dnsmasq

dhcp-range=lan,192.168.1.100,192.168.1.249,255.255.255.0,12h

no-dhcp-interface=eth0.2

ucisetdhcp.@dnsmasq[0].nohosts='1'

ucisetdhcp.@dnsmasq[0].noresolv='1'

ucisetdhcp.@dnsmasq[0].local='127.0.0.1#5353'

ucichanges

ucicommit

root@LEDE:~#ucisetdhcp.@dnsmasq[0].nohosts='1'

root@LEDE:~#ucisetdhcp.@dnsmasq[0].noresolv='1'

root@LEDE:~#ucisetdhcp.@dnsmasq[0].local='127.0.0.1#5353'

root@LEDE:~#ucichanges

dhcp.cfg02411c.nohosts='1'

dhcp.cfg02411c.noresolv='1'

dhcp.cfg02411c.local='127.0.0.1#5353'

ChinaDNS+Shadowsocks

207

Page 208: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

root@LEDE:~#ucicommit

重启网络服务和DNSmasq服务(备份 history记录):

root@LEDE:~#/etc/init.d/networkrestart&&/etc/init.d/dnsmasqrestart

root@LEDE:~#cat/var/etc/dnsmasq.conf.cfg02411c|sed-e'/^#/d'-e'/^$/d'

conf-file=/etc/dnsmasq.conf

dhcp-authoritative

domain-needed

no-hosts

no-resolv

localise-queries

read-ethers

bogus-priv

expand-hosts

local-service

domain=lan

server=127.0.0.1#5353

dhcp-leasefile=/tmp/dhcp.leases

stop-dns-rebind

rebind-localhost-ok

dhcp-broadcast=tag:needs-broadcast

addn-hosts=/tmp/hosts

conf-dir=/tmp/dnsmasq.d

user=dnsmasq

group=dnsmasq

dhcp-range=lan,192.168.11.100,192.168.11.249,255.255.255.0,12h

root@LEDE:~#dig+shortdropbox.com

162.125.248.1

DNSmasq配置 no-resolv没有生效:

ChinaDNS+Shadowsocks

208

Page 209: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

root@LEDE:~#cat/etc/resolv.conf

#Interfacewan

nameserver192.168.8.1

searchlan

#Interfacewan6

nameserverfe80::e695:6eff:fe40:6576%eth0.2

searchlan

root@LEDE:~#[email protected]

162.125.248.1

root@LEDE:~#dig+shortdropbox.com

243.185.187.39

需要:

禁用IPv6禁用上游DHCP分配的 nameserver

禁用IPv6

[OpenWrt-Users]howtoswitchoffIPV6completely[onaBB14.07(r42625)-finalrelease]

Isetthedhcpserveripv6settingsalltodisabledonbothwanandlan(i.e.RouterAdvertisement-Service->disabled,DHCPv6-Service->disabled,NDP-Proxy->disabled)

DisableIPv6withOpenWRT

Network>InterfacesblankouttheIPv6ULA-Prefixbox

清空IPv6ULA-Prefix:

root@LEDE:~#ucishownetwork.globals

network.globals=globals

network.globals.ula_prefix='fdd3:b9a9:2288::/48'

ucideletenetwork.globals.ula_prefix

删除 wan6网卡设备:

ChinaDNS+Shadowsocks

209

Page 210: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

ucideletenetwork.wan6

禁用上游DHCP分配的 nameserver

ucisetnetwork.wan.peerdns=0

排障过程:

root@LEDE:~#ucisetnetwork.wan.peerdns=0

root@LEDE:~#ucichanges

network.wan.peerdns='0'

root@LEDE:~#cat/etc/resolv.conf

#Interfacewan

#Interfacewan6

nameserverfe80::e695:6eff:fe40:6576%eth0.2##

---+

searchlan

|

|

root@LEDE:~#digdropbox.com

|

|

;<<>>DiG9.10.4-P5<<>>dropbox.com

|

;;globaloptions:+cmd

|

;;Gotanswer:

|

;;->>HEADER<<-opcode:QUERY,status:NOERROR,id:51090

|

;;flags:qrrdra;QUERY:1,ANSWER:1,AUTHORITY:0,ADDITIONAL:1

|

|

;;OPTPSEUDOSECTION:

|

ChinaDNS+Shadowsocks

210

Page 211: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

;EDNS:version:0,flags:;udp:1280

|

;;QUESTIONSECTION:

|

;dropbox.com.INA

|

|

;;ANSWERSECTION:

|

dropbox.com.227INA243.185.187.39

|

|

;;Querytime:13msec

|

;;SERVER:fe80::e695:6eff:fe40:6576%6#53(fe80::e695:6eff:fe40:6576%6)##

---+上游IPv6DNS

;;WHEN:WedAug3000:38:57UTC2017

;;MSGSIZErcvd:56

root@LEDE:~#[email protected]

162.125.248.1

root@LEDE:~#dig+shortdropbox.com

243.185.187.39

root@LEDE:~#ucishownetwork.globals

network.globals=globals

network.globals.ula_prefix='fdd3:b9a9:2288::/48'

root@LEDE:~#ucideletenetwork.globals.ula_prefix

root@LEDE:~#ucideletenetwork.wan6

root@LEDE:~#ucichanges

-dhcp.lan.ra

-dhcp.lan.dhcpv6

-network.globals.ula_prefix

-network.wan6

root@LEDE:~#cat/etc/resolv.conf

#Interfacewan

ChinaDNS+Shadowsocks

211

Page 212: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

root@LEDE:~#dig+shortdropbox.com

162.125.248.1

ChinaDNS

release datev1.3.2-5 2017-08-24

v1.3.2-4 2016-08-30

源码:https://github.com/aa65535/openwrt-chinadns/releases

下载:http://openwrt-dist.sourceforge.net/archives/ChinaDNS/1.3.2-5/

原理:

关于线路优化的问题#59

ChinaDNS需要设置两组上游DNS服务器:国内DNS和「国外DNS或者可信DNS」是否

是国内DNS是根据chnroute判断的。国内DNS通过当前ISP提供的流量解析(不经过代

理),如果返回的结果也是国内IP,则采用此结果,否则采用「国外DNS或者可信DNS」的解析结果。

国外DNS通过所使用的代理流量解析,而访问解析的目标站点也是提供代理流量。另外「国外

DNS或者可信DNS」的结果优先级是高于国内DNS的,所以一旦先返回的结果是「国外

DNS或者可信DNS」的,就直接采用了,导致国内DNS的解析结果被忽略,导致访问国内站

点速度变慢(因为是「国外DNS或者可信DNS」的解析结果),所以ChinaDNS上游服务器

是不能在本地做缓存的。

ChinaDNS默认是国内DNS比「国外DNS或者可信DNS」响应速度要快

ChinaDNS每次都会向所有上游DNS同时发送解析请求

使用pdnsd作为「国外DNS或者可信DNS」时,第一次请求的确是这样,这时ChinaDNS可以正确处理,但是当第二次请求时,因为pdnsd缓存的作用,pdnsd比国内DNS先响应,这

样的结果就是解析国内站点时也采用的是pdnsd的结果,可能会导致国内站点解析到国外影响访问速度。

一个域名解析请求会同时向国内DNS和国外DNS(ChinaDNS设置的上游DNS)发送,请求

的结果如果是国外DNS先返回,那么采用国外DNS的结果(你上面说国外DNS结果有优

先);请求的结果如果是国内DNS先返回,又分两种情况:1、如果国内DNS返回的结果是国

ChinaDNS+Shadowsocks

212

Page 213: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

内的IP地址,那么采用;2、如果返回的是国外的地址,那么不采用国内DNS的结果而采用国

外DNS的结果。

pdnsd不适合做上游是因为有缓存,有缓存会出现上游设置的国外DNS(pdnsd)的返回结果速

度永远比国内DNS返回快

可信DNS比国内DNS先返回结果#48

不要在可信DNS上面使用缓存,应该在ChinaDNS下游使用缓存。

ChinaDNS不能使用国外IP#55

如果国内DNS返回的结果是国内的IP,且比国外DNS返回的要快,是会采用国内DNS的结

果,建议不要使用运营商提供的DNS服务器,改用114或者其他公共DNS

使用 -v调试:

root@OpenWrt:~#ps|awk'$5=="\/usr\/bin\/chinadns"{for(i=5;i<=NF;i++)pr

intf$i"";print"-v"}'

/usr/bin/chinadns-p5354-s223.5.5.5,127.0.0.1:5353-c/etc/shadowsocks/i

gnore.list-m-v

https://github.com/aa65535/openwrt-chinadns/releases/tag/v1.3.2-2

使用 #分开IP和port的DNS服务器即被认为是可信DNS,如:

-s223.5.5.5,127.0.0.1#5353

此处的 127.0.0.1即可信DNS服务器,当指定了可信DNS后其他国外IP的DNS将被忽

略,且压缩指针功能也不再生效(但是 -m参数依然需要加)

可信DNS服务器不论IP是否国外,一律被当做国外DNS处理

国外DNS和可信DNS至少指定一个

配置:

ChinaDNS+Shadowsocks

213

Page 214: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

root@OpenWrt:~#opkgfilesChinaDNS

PackageChinaDNS(1.3.2-1)isinstalledonrootandhasthefollowingfiles

:

/etc/init.d/chinadns

/usr/bin/chinadns

/etc/config/chinadns

/etc/chinadns_chnroute.txt

root@OpenWrt:~#ucishowchinadns

chinadns.@chinadns[0]=chinadns

chinadns.@chinadns[0].enable=1

chinadns.@chinadns[0].compression=1

chinadns.@chinadns[0].bidirectional=0

chinadns.@chinadns[0].port=5354

chinadns.@chinadns[0].chnroute=/etc/shadowsocks/ignore.list

chinadns.@chinadns[0].server=223.5.5.5,127.0.0.1:5353

使用一段时间后只有国内DNS在工作#14

不需要使用ChinaDNS查询的域名可以在dnsmasq中设置

server=/.microsoft.com/223.5.5.5

国内小运营商网络访问cdn节点#42

没错,这小运营商的网络极不稳定,连baidu.com的延迟变化幅度极大。也就是说查询CDN节点时,国内DNS返回时间可能比国外要长,然后chinadns直接使用了先返回的国外节点。

OpenWRT自动翻墙路由器DNS解析的改善(旧)

https://github.com/felixonmars/dnsmasq-china-list

解析Google域名的问题#68

此应为ChinaDNS误判,是FAKEIP。在现在污染IP完全随机的情况下会有各种bug

注意:使用ChinaDNS做防污染并不是他主要的作用,并且在当前的环境下,尽量不要单纯使

用CHinaDNS作为防污染手段,一来有bug,二来DNS服务器是根据你的实际IP返回的解析

结果而不是根据代理服务器的IP这样造成解析出的IP可能离你的实际位置近但是离代理较远,

ChinaDNS+Shadowsocks

214

Page 215: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

反而速度慢。比如说服务器在美国,但是单纯使用chinadns就可能造成解析google.com到香

港的情况。ChinaDNS的主要作用是优选解析结果,国外DNS一定要通过代理走;这样既杜绝

了污染也可以获取最佳的解析结果。

dns-forwarder是走TCP的吗?#4

向上游DNS查询时使用的是TCP。0.0.0.0:5300是内网的监听端口当然是UDP了,不然怎么

接受DNS查询。

DNS-Forwarder的作用就是将下游的UDP协议的DNS查询转换成TCP协议的DNS查询后发

送到上游服务器。

抛弃UDP,用TCP查询DNS我的DNS查询的流程就是:dnsmasq->ChinaDNS->DNS-Forwarder->SS(TCP)->国外DNS服务器(e.g:8.8.8.8)

shadowsocks-libev

release datev3.0.8 2017-07-27

源码:https://github.com/shadowsocks/openwrt-shadowsocks/releases

下载:http://openwrt-dist.sourceforge.net/archives/shadowsocks-libev/3.0.8/

crontab更新IP列表:

root@OpenWrt:~#crontab-l

05**1sh-x/root/update.apnic.ip.sh>/tmp/update.apinic.ip.log2>&1

更新脚本:

#!/bin/sh

apnic_url='http://ftp.apnic.net/apnic/stats/apnic/delegated-apnic-latest'

#wget-c-O-"$apnic_url"|awk-F\|'/CN\|ipv4/{printf("%s/%d\n",$4,32-l

og($5)/log(2))}'>/etc/shadowsocks/ignore.list.new

ChinaDNS+Shadowsocks

215

Page 216: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

curl-s"$apnic_url"|awk-F\|'/CN\|ipv4/{printf("%s/%d\n",$4,32-log($5)

/log(2))}'>/etc/shadowsocks/ignore.list.new

service_stop(){

echo"__STOP:$1---------------------------"

localservice="$1"

localcount=0

while[$count-le5]

do

ifpgrep-lf"$service"

then

[x"$service"=x'ss']&&service='shadowsocks'

echo"/etc/init.d/$servicestop"

/etc/init.d/$servicestop

sleep1s

count=`expr$count+1`

continue

else

break

fi

done

}

service_start(){

echo"__START:$1---------------------------"

localservice="$1"

localcount=0

while[$count-le5]

do

ifpgrep-lf"$service"

then

break

else

[x"$service"=x'ss']&&service='shadowsocks'

echo"/etc/init.d/$servicestart"

/etc/init.d/$servicestart

sleep1s

count=`expr$count+1`

continue

fi

done

}

ChinaDNS+Shadowsocks

216

Page 217: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

pgrep-lf'dns|ss'

if[-s/etc/shadowsocks/ignore.list.new]

then

ls-l/etc/shadowsocks/ignore.list*

wc-l/etc/shadowsocks/ignore.list*

mv-f/etc/shadowsocks/ignore.list/etc/shadowsocks/ignore.list.bak

mv-f/etc/shadowsocks/ignore.list.new/etc/shadowsocks/ignore.list

service_stopdnsmasq

service_stopchinadns

service_stopss

sleep2s

service_startss

service_startchinadns

service_startdnsmasq

else

echo"__ERROR:downloadapnicIPlistFAILED"

fi

TODO:

curl下载优化

备份日期

ss黑名单(BypassedIP):

shadowsocks.cfg0c4417.wan_bp_ips+=45.67.89.10

用OpenWRT+Shadowsocks实现全自动爬梯子指南2015-11-08

分析 iptables+ ipset匹配规则

如何让路由器科学上网2016-11-25

ChinaDNS+Shadowsocks

217

Page 218: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

Name:ss_spec_lan_no#局域网禁止访问的IP段集合

Name:ss_spec_lan_bp#局域网可以直连的IP段集合

Name:ss_spec_lan_fw#局域网需要转发的IP段集合

Name:ss_spec_wan_sp#局域网或者是shadowsocks服务器等IP段集合

Name:ss_spec_wan_bp#外网需要直连的IP段集合这个集合非常大

Name:ss_spec_wan_fw#外网需要转发的IP段集合

http://code.taobao.org/svn/luci-app-adbyby/

http://code.taobao.org/svn/luci-app-adbyby/adbyby_2.7-7.0_ar71xx.ipk为ar71

xx版

http://code.taobao.org/svn/luci-app-adbyby/adbyby_2.7-7.0_arm.ipk为arm版

http://code.taobao.org/svn/luci-app-adbyby/adbyby_2.7-7.0_armv7.ipk为armv7

http://code.taobao.org/svn/luci-app-adbyby/adbyby_2.7-7.0_ralink.ipk为7620

A(N)和7621潘多拉专用版

http://code.taobao.org/svn/luci-app-adbyby/adbyby_2.7-7.0_ramips_24kec.ipk

为7620A(N)和7621OPENWRT官版专用版

http://code.taobao.org/svn/luci-app-adbyby/adbyby_2.7-7.0_x64.ipk为X64版

http://code.taobao.org/svn/luci-app-adbyby/adbyby_2.7-7.0_x86.ipk为X86版

http://code.taobao.org/svn/luci-app-adbyby/adbyby_2.7-7.0_mipsel_24kec_dsp.

ipk为最新潘多拉专用版(2016.10之后)

http://code.taobao.org/svn/luci-app-adbyby/adbyby_mini_2.7-7.0_ralink.ipk

为7620A(N)和7621潘多拉小闪存专用版(每次开机时下载主程序到内存中运行)

http://code.taobao.org/svn/luci-app-adbyby/adbyby_mini_2.7-7.0_mipsel_24kec

_dsp.ipk为最新潘多拉小闪存专用版(2016.10之后)

opkginstallhttp://code.taobao.org/svn/luci-app-adbyby/adbyby_2.7-7.0_rali

nk.ipk

referenceopenwrt-dist项目介绍的防DNS劫持:https://sourceforge.net/p/openwrt-dist/wiki/DNS/

防DNS劫持-方案五(已过时,但原理一致):https://sourceforge.net/p/openwrt-dist/wiki/Plan5/

抛弃UDP用TCP查询DNS2017-05-17

ChinaDNS+Shadowsocks

218

Page 219: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

DNS查询流程:DNSmasq->ChinaDNS->dns-forwarder->SS(TCP)->国外DNS服务器

(8.8.8.8)

通过抓包介绍DNS污染:科学上网的一些原理2015-02-08

x86_64服务器翻墙翻案:ss-redir透明代理2017-04-29

openwrt下shadowsocks+chinadns自动分流的补遗2015-01-10

目前污染源采用了随机污染的手段,将目标导引到随机的外国网站去(这是一种恐怖主义行为!

大炮)

当查询结果不是中国地址时,选择国际服务器的那个结果,但要求这个查询结果必须至少 0.3秒后才有效(防止污染)

对于SS中转DNS请求,这个想法很好,但是性能也堪忧。就算是亚太地区的SS服务器

100ms延迟总是有的,一个查询 0.1秒来再 0.1秒去,再加上SS服务器到DNS的时

间(双向),速度也几乎等同于直接连接 8.8.8.8

使用EdgeMax路由器自动翻墙2016-10-20

参数 含义

-d 双向过滤:默认开启

-m 启用压缩指针:默认开启

ChinaDNS+Shadowsocks

219

Page 220: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

双向过滤:当国外DNS服务器返回的查询结果是国内IP,或者当国内DNS服务器返回的查询

结果是国外IP则过滤掉这个结果(较为严格的模式);去掉勾选的话只是过滤国内DNS的国

外IP结果

利用GFW遇到压缩指针时的一个bug来精确识别来自GFW的抢答污染,从而极大提高识别的

准确性和识别的效率,推荐启用,启用后IPList和等待时间将禁用(因为用不到了)

图文教程:

OpenWRT编译Shadowsocks实现透明代理2017-08-18

从头到尾,通过OpenWrt固件实现路由器智能代理及建立访客网络流量控制2017-05-20

ipset+iptables

root@LEDE:~#sysctlnet.ipv4.ip_forward

net.ipv4.ip_forward=1

root@LEDE:~#ipset-L|grepName

Name:ss_spec_src_ac

Name:ss_spec_src_bp

Name:ss_spec_src_fw

Name:ss_spec_dst_sp

Name:ss_spec_dst_bp

Name:ss_spec_dst_fw

root@LEDE:~#iptables-tnat-nvL

ChainPREROUTING(policyACCEPT17347packets,2136Kbytes)

pktsbytestargetprotoptinoutsourcedestina

tion

8042561KSS_SPEC_LAN_DGtcp--**0.0.0.0/0

0.0.0.0/0

173472136Kprerouting_ruleall--**0.0.0.0/0

0.0.0.0/0/*!fw3:userchainforprerouting*/

142441080Kzone_lan_preroutingall--br-lan*0.0.0.0/0

0.0.0.0/0/*!fw3*/

31031057Kzone_wan_preroutingall--eth0.2*0.0.0.0/0

0.0.0.0/0/*!fw3*/

ChainINPUT(policyACCEPT7919packets,577Kbytes)

ChinaDNS+Shadowsocks

220

Page 221: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

pktsbytestargetprotoptinoutsourcedestina

tion

ChainOUTPUT(policyACCEPT17338packets,1106Kbytes)

pktsbytestargetprotoptinoutsourcedestina

tion

16216973KSS_SPEC_WAN_DGtcp--**0.0.0.0/00.

0.0.0/0

ChainPOSTROUTING(policyACCEPT13834packets,885Kbytes)

pktsbytestargetprotoptinoutsourcedestina

tion

305202059Kpostrouting_ruleall--**0.0.0.0/0

0.0.0.0/0/*!fw3:userchainforpostrouting*/

4811264zone_lan_postroutingall--*br-lan0.0.0.0/0

0.0.0.0/0/*!fw3*/

166861174Kzone_wan_postroutingall--*eth0.20.0.0.0/0

0.0.0.0/0/*!fw3*/

ChainSS_SPEC_LAN_AC(1references)

pktsbytestargetprotoptinoutsourcedestina

tion

00RETURNall--**0.0.0.0/00.

0.0.0/0match-setss_spec_src_bpsrc

00SS_SPEC_WAN_FWall--**0.0.0.0/00.

0.0.0/0match-setss_spec_src_fwsrc

00SS_SPEC_WAN_ACall--**0.0.0.0/00.

0.0.0/0match-setss_spec_src_acsrc

7901552KSS_SPEC_WAN_ACall--**0.0.0.0/00.

0.0.0/0

ChainSS_SPEC_LAN_DG(1references)

pktsbytestargetprotoptinoutsourcedestina

tion

1418554RETURNall--**0.0.0.0/00.

0.0.0/0match-setss_spec_dst_spdst

7901552KSS_SPEC_LAN_ACtcp--**0.0.0.0/00.

0.0.0/0

ChainSS_SPEC_WAN_AC(3references)

pktsbytestargetprotoptinoutsourcedestina

tion

ChinaDNS+Shadowsocks

221

Page 222: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

00SS_SPEC_WAN_FWall--**0.0.0.0/00.

0.0.0/0match-setss_spec_dst_fwdst

4693302KRETURNall--**0.0.0.0/00.

0.0.0/0match-setss_spec_dst_bpdst

9925653KSS_SPEC_WAN_FWall--**0.0.0.0/00.

0.0.0/0

ChainSS_SPEC_WAN_DG(1references)

pktsbytestargetprotoptinoutsourcedestina

tion

9499570KRETURNall--**0.0.0.0/00.

0.0.0/0match-setss_spec_dst_spdst

6717403KSS_SPEC_WAN_ACtcp--**0.0.0.0/00.

0.0.0/0

ChainSS_SPEC_WAN_FW(3references)

pktsbytestargetprotoptinoutsourcedestina

tion

9925653KREDIRECTtcp--**0.0.0.0/00.0.0.0

/0redirports1234

Chainpostrouting_lan_rule(1references)

pktsbytestargetprotoptinoutsourcedestina

tion

Chainpostrouting_rule(1references)

pktsbytestargetprotoptinoutsourcedestina

tion

Chainpostrouting_wan_rule(1references)

pktsbytestargetprotoptinoutsourcedestina

tion

Chainprerouting_lan_rule(1references)

pktsbytestargetprotoptinoutsourcedestina

tion

Chainprerouting_rule(1references)

pktsbytestargetprotoptinoutsourcedestina

tion

Chainprerouting_wan_rule(1references)

ChinaDNS+Shadowsocks

222

Page 223: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

pktsbytestargetprotoptinoutsourcedestina

tion

Chainzone_lan_postrouting(1references)

pktsbytestargetprotoptinoutsourcedestina

tion

4811264postrouting_lan_ruleall--**0.0.0.0/0

0.0.0.0/0/*!fw3:userchainforpostrouting*/

Chainzone_lan_prerouting(1references)

pktsbytestargetprotoptinoutsourcedestina

tion

142441080Kprerouting_lan_ruleall--**0.0.0.0/0

0.0.0.0/0/*!fw3:userchainforprerouting*/

Chainzone_wan_postrouting(1references)

pktsbytestargetprotoptinoutsourcedestina

tion

166861174Kpostrouting_wan_ruleall--**0.0.0.0/0

0.0.0.0/0/*!fw3:userchainforpostrouting*/

166861174KMASQUERADEall--**0.0.0.0/0

0.0.0.0/0/*!fw3*/

Chainzone_wan_prerouting(1references)

pktsbytestargetprotoptinoutsourcedestina

tion

31031057Kprerouting_wan_ruleall--**0.0.0.0/0

0.0.0.0/0/*!fw3:userchainforprerouting*/

ChinaDNS+Shadowsocks

223

Page 224: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

openwrtentware-ngisasoftwarerepositoryfornetworkattachedstorages,routersandotherembeddeddevices.

Browsethrough2000+packagesfordifferentplatforms:

arch URLarmv5 http://pkg.entware.net/binaries/armv5/Packages.html

armv7 http://pkg.entware.net/binaries/armv7/Packages.html

mipsel http://pkg.entware.net/binaries/mipsel/Packages.html

x86-32 http://pkg.entware.net/binaries/x86-32/Packages.html

x86-64 http://pkg.entware.net/binaries/x86-64/Packages.html

projectVillageTelco

TheVillageTelcoaimstoprovideaffordablevoiceanddataservicesforthebillionsofpeoplewhoarecurrentlyunconnectedtoeitheraphoneortheInternet.Byloweringthecostofentryforusers,italsoseekstomakecallingandaccesstotheInternetcheaperforexistingusers.Butitwillnotonlyofferaffordableaccessbutputthepowertoprovideitinthehandsoflocalcommunities,creatinganewgenerationofcommunicationsentrepreneursindevelopingcountries.

Router

UBNT就爱非主流,从MikroTik玩到UBNT入手EdgeMAXER-X2016-11-08

EdgeMax可玩性比Routerboard高多了。EdgeOS系统就是个Debian很主流的Linux发行

版,所以基本上电脑里的Debian能怎么玩它就能怎么玩

HOW:收集

224

Page 225: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

UBNTER-X与MikrotikRB750Gr3纠结买哪个2016-11-24

功能的话是ROS会好一些,稳定性UBNT更好;ROS每次更新都有奇怪的问题;转发性能是

UBNT好,有硬件加速,ROS纯靠软件;如果你用ROS又希望瓶颈小一些,直接上X86的,

其它都是浮云。另:开启硬件加速后QOS防火墙什么的会失效,所以加速是有利有弊的。要性

能就没什么可玩性

ERX胜在稳定,资料是ROS的多

稳定性还是ER-X胜出

UbntUniFi产品开箱2017-04-30

VPN

shadowsocks地瓜SS

QuickTunQuickTunSimpleandsecureVPNsoftwarehttp://oss.ucis.nl/

https://github.com/UCIS/QuickTun

SigmaVPNSigmaVPNLight-weight,secureandmodularVPNsolution

https://github.com/neilalexander/sigmavpn

HOW:收集

225

Page 226: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

推广赞助

想自己买VPS搭建ss服务的,可以使用我的推广链接注册:

VPS主机商 推广链接

DigitalOcean https://m.do.co/c/7556068f65ab

Vultr http://www.vultr.com/?ref=6849100

Linode https://www.linode.com/?r=bf1ac8d4f5d34c896881138bb556031fb396ff4d

搬瓦工(镜像) https://bwh1.net/aff.php?aff=8583

谢谢支持!

假如你真的要给我钱

打开微信

点击扫一扫

扫描下面的二维码

HOW:赞助

226

Page 227: Table of Contentshome.ustc.edu.cn/~huangzs/ZX-USTC-VPN/outman.pdf图片出处:胡武功《告别老西安》 普通用户 介绍常见平台 ( Windows, Mac OS X, android, iOS ) 科学上网方法:

HOW:赞助

227


Top Related