搭建VPN中转服务器

家里用的垃圾的宽带通服务,宽带质量实在没法恭维。晚上高峰时期下载速度估计只有1Mbps,然而打广告时却标榜100Mbps,虽然有心理准备根本达不到这么高的带宽,可谁曾想到会如此之慢。不过,这些都忍了,最让人无法接受的是这破宽带竟然连不到linode主机上。。我试过在其他运营商的宽带下是可以访问的。

最终,在暂时不换运营商的前提下,我找了一台国内中转服务器,使用haproxy来转发流量连接到linode。然而这种方式电脑用起来挺方便的,但是对iPhone等移动设备却不那么友好,众所周知,iPhone**的最好方法是使用VPN。为了手上的iPhone也能利用上我花钱买的两台主机,最近研究了一下使用国内中转服务器来转发VPN至海外服务器。

下面我讲一下主要思路,具体的步骤可以参考引文。

这个搭建过程主要有以下几个步骤:

  • 在国内主机上安装OpenVPN服务端
  • 在国内主机上安装ShadowVPN客户端
  • 在国外主机上安装ShadowVPN服务端
  • 在国内主机上将OpenVPN接受的流量转发到ShadowVPN
  • 最后就是在苹果设备上使用OpenVPN客户端来连接国内主机了(当然电脑也可以安装相关软件连接)

附:ShadowVPN启动和停止时的脚本

启动:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#!/bin/sh

# shadow routing table is for shadowVPN
# echo "200 shadow" >> /etc/iproute2/rt_tables

# tun1 is shadowVPN interface
ip route add default dev tun1

# specify which ip range to use this routing table, 10.8.0.0/24 is the source ip range for openVPN
ip rule add from 10.8.0.0/24 table shadow

# use SNAT to change ip packets' source ip address, 10.7.0.2 is shadowVPN's ip
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -j SNAT --to-source 10.7.0.2

# flush routing cache
ip route flush cache

# start shadowVPN process
shadowvpn -c /etc/shadowvpn/client.conf -s start

停止:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#!/bin/sh

# shadow routing table is for shadowVPN
# echo "200 shadow" >> /etc/iproute2/rt_tables

# tun1 is shadowVPN interface
# delete interface
ip route del default dev tun1

# specify which ip range to use this routing table, 10.8.0.0/24 is the source ip range for openVPN
# delete rule
ip rule del from 10.8.0.0/24 table shadow

# use SNAT to change ip packets' source ip address, 10.7.0.2 is shadowVPN's ip
# remove rule
iptables -t nat -D POSTROUTING -s 10.8.0.0/24 -j SNAT --to-source 10.7.0.2

# flush routing cache
ip route flush cache

# stop shadowVPN process
shadowvpn -c /etc/shadowvpn/client.conf -s stop

References: