树莓派3B开启openvpn

刚刚从树莓派1B升级到3B,性能的确提高很大,像PHP写的网站都是瞬间打开的,几乎没有等候时间,已经完全可以作为一个日常开发的小服务器了。

为了可以在任何地方访问家中的树莓派,我需要在树莓派上安装一个Openvpn服务。

前置条件

首先,家中的树莓派必须可以外网访问,我家是联通宽带,具有动态公网IP。

一般路由器都支持类似花生壳的工具,通过上报自己的公网IP到DNS服务商,从而可以通过固定域名访问到路由器,这样就不怕IP变来变去了。

其次,路由器一般支持端口映射,可以将到达路由器某个端口的流量转发到内网某个IP的某个PORT上。

VPN原理

VPN是一个服务进程,通过TCP/UDP可以访问到。为了让树莓派上的VPN可以被外网连接,需要上述”前置条件”来帮助我们把内部端口映射到公网。

假设我在公司利用VPN客户端连接到了家中的树莓派VPN服务,其实相当于在树莓派和公司电脑之间搭了一个桥,这个桥对于公司电脑来说就是一块虚拟的网卡。

后续当我们在公司电脑试图访问家中的IP地址时,流量会经过这个虚拟网卡到达VPN进程,由VPN进程继续向内网IP转发。

VPN意义

既然通过VPN可以在公司直接访问家里的任何IP和PORT,那么此时就和坐在家里没有任何区别了。

我们可以给树莓派打开samba,http,ssh等各种服务,随心所欲的连接与调试代码。

尤其现在树莓派3B性能非常好,的确是个不错的全球工作站

怎么安装VPN

openvpn本身安装很繁琐,不过树莓派有个开源项目让一切变得超级简单:pivpn,里面有详细的安装步骤。

服务端

一些安装的要点参考博客:《使用树莓派Raspberry Pi搭建VPN并实现远程访问》

其中有几个注意点:

  1. 安装时选择UDP或者TCP协议都可以,但是端口号一定要改一下,因为默认端口号一般都被运营商封杀了。
  2. 尝试在VPN服务器上dig @8.8.8.8 www.baidu.com,如果连续可以解析成功则选择google DNS,否则说明运营商或者路由器对DNS做了拦截,此时你应该选择Custom dns设置DNS地址为路由器网关,例如192.168.1.1。

客户端

Openvpn官方提供了windows、mac等标准客户端,谷歌市场或者github可以下载到android版本的客户端。

为了连接VPN,需要将安装中产生的.ovpn文件导入到客户端,接下来连接并输入密码即可连接。

在客户端中勾选允许服务端推送网络配置变更(VPN服务端会推送DNS配置到客户端的/etc/resolve.conf),勾选自动重连。

shadowsocks

目前我还没有找到同时开启openvpn和shadowsocks的方法,一旦开启shadowsocks就会导致openvpn掉线。

 

 

如果文章帮助您解决了工作难题,您可以帮我点击屏幕上的任意广告,或者赞助少量费用来支持我的持续创作,谢谢~