文章目录
  1. 1. OpenVPN设置条件代理的方法
    1. 1.1. 条件代理
    2. 1.2. 添加例外
  2. 2. demo
  3. 3. Linux下添加开机自启

引言:每次上学校的一些网站都得手动挂VPN,挂了VPN下载速度又慢,所以往往干别的事儿的时候又得把VPN下了,特别麻烦,所以找到了一个OpenVPN条件代理的方法供大家参考。


OpenVPN设置条件代理的方法

route命令第一参数为IP地址,第二地址为网子掩码,位与得到网段。

条件代理

  • 在vpn.shu.edu.cn下载ovpn文件,修改ovpn文件添加如下一行:

route-nopull

​ 解释:不从服务端拉取代理配置。


  • 修改ovpn文件添加如下一行:

route 202.120.127.0 255.255.255.0 vpn_gateway

​ 解释:将202.120.127.*设置为OpenVPN代理。

添加例外

  • 修改ovpn文件添加如下一行:

route 202.120.127.0 255.255.255.0 vpn_gateway

route 202.120.127.105 255.255.255.255 net_gateway

​ 解释:将202.120.127.*设置为OpenVPN代理,但202.120.127.105走本地网络(202.120.127.105是我们VPN连接的目标服务器的IP地址,应该加入例外)。

demo

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
client
dev tun
proto tcp

remote 202.120.127.105 80

comp-lzo
resolv-retry infinite
nobind
persist-key
persist-tun
setenv CLIENT_CERT 0
auth-user-pass
remote-cert-tls server
verb 3

sndbuf 0
rcvbuf 0
cipher none

route-nopull
route 10.95.192.1 255.255.255.255 vpn_gateway
route 9.9.9.2 255.255.255.255 vpn_gateway
route 10.105.3.129 255.255.255.255 vpn_gateway
route 172.16.255.253 255.255.255.255 vpn_gateway
#route 172.31.0.0 255.255.0.0 vpn_gateway
route 202.120.0.0 255.255.0.0 vpn_gateway
route 202.121.0.0 255.255.0.0 vpn_gateway
route 202.120.127.105 255.255.255.255 net_gateway

<ca>
-----BEGIN CERTIFICATE-----
MIIEoTCCA4mgAwIBAgIJAMW52H83M9JAMA0GCSqGSIb3DQEBCwUAMIGRMQswCQYD
VQQGEwJDTjELMAkGA1UECBMCU0gxETAPBgNVBAcTCFNoYW5nSGFpMQwwCgYDVQQK
EwNTSFUxDDAKBgNVBAsTA1NIVTEPMA0GA1UEAxMGU0hVIENBMRAwDgYDVQQpEwdF
YXN5UlNBMSMwIQYJKoZIhvcNAQkBFhRyb2RkeTE5ODZAc2h1LmVkdS5jbjAeFw0x
NzA2MjEwOTQwMjlaFw0yNzA2MTkwOTQwMjlaMIGRMQswCQYDVQQGEwJDTjELMAkG
A1UECBMCU0gxETAPBgNVBAcTCFNoYW5nSGFpMQwwCgYDVQQKEwNTSFUxDDAKBgNV
BAsTA1NIVTEPMA0GA1UEAxMGU0hVIENBMRAwDgYDVQQpEwdFYXN5UlNBMSMwIQYJ
KoZIhvcNAQkBFhRyb2RkeTE5ODZAc2h1LmVkdS5jbjCCASIwDQYJKoZIhvcNAQEB
BQADggEPADCCAQoCggEBAJ17qOLBJgX7DKsBxVhqpfYkZcPwy8DggDiwRHNLLP3h
aEWRcS5NViqGthWh4mWvVkD9RypYlUywbYewoSkuLyllsFuw+iZUR93cWGMjccq/
9ZdhVPpYCGRJrtkTNeVtU9XTXEjZ3vWEwAMpOcVdhLQz6kxCVTt2qrB4ClhIAdPh
jaz5tusNlwVGzaM7EMIr3O08Y8gYlAe78tkD+18uCMYIyKPORs9H31UHbreLcONv
4Lc3dOz/g4KOQTkuwqcRnTJN1AVVfpjFUQeabyxFV/u4BkSvU33HWxLzYiyDGZkU
W8PLr1mouNEXWGHxfhooZb9wozk+jfuLYk3KhKh9+ZMCAwEAAaOB+TCB9jAdBgNV
HQ4EFgQU2sjeWJZf5o/1eL1Ke5PyE7K1nw4wgcYGA1UdIwSBvjCBu4AU2sjeWJZf
5o/1eL1Ke5PyE7K1nw6hgZekgZQwgZExCzAJBgNVBAYTAkNOMQswCQYDVQQIEwJT
SDERMA8GA1UEBxMIU2hhbmdIYWkxDDAKBgNVBAoTA1NIVTEMMAoGA1UECxMDU0hV
MQ8wDQYDVQQDEwZTSFUgQ0ExEDAOBgNVBCkTB0Vhc3lSU0ExIzAhBgkqhkiG9w0B
CQEWFHJvZGR5MTk4NkBzaHUuZWR1LmNuggkAxbnYfzcz0kAwDAYDVR0TBAUwAwEB
/zANBgkqhkiG9w0BAQsFAAOCAQEATqu24naX9L6jyzXt+mBJAS5IWr7gfh5Ymi7X
Tl+uSXS+H0w7VYqSGsrQsd17U9RfcAxglhGx2FtYvuYVWHQ4InaUjbrzxDrFO+ZG
rN471ASybovHR97rHfPOnqigAbDaKLynb8JoFYkzAxRAclPh/jZFXpG06KC+fkW/
ox+1WKF/6d5gXOZOTf0GuJi4JHRojDzb5p/Z6/8gxE9krVsQmfiR3HnaegyTVMle
KzpCQRuEx5rn/uDvV6joYCwy4q0BkQTKGBeUofR2ETlTeC7t6l+GKRPwCQ8BeBvL
e0+RSP6QWl/+flS0qdmtSswuZF98OqAuu6wW2PHXB3auUn77nw==
-----END CERTIFICATE-----
</ca>

思路:linux下挂上全局OpenVPN,使用traceroute命令访问被教育网墙掉的几个网站,记录经过的几个IP地址,逐一添加到条件代理中去。经查询,202.120.112~202.120.127段与202.121.192~202.121.199是SHU的公网段。由于202.120.127.105是目标服务器IP地址,因此加入例外,否则OpenVPN将无法正常工作。

Linux下添加开机自启

1
sudo openvpn --daemon --config ~/shu.ovpn --auth-user-pass ~/pass.txt

使用上述命令可以启动OpenVPN的守护进程,其中pass.txt文件保存了连接所需的账号密码,第一行为账号,第二行为密码,两处文件路径均需完整路径。

linux版本不同方法也不同,有的linux版本自启时没有su权限,使用sudo会无法进入图形界面(好像是Fedora),下面仅以deepin为例(debian系):

使用systemd执行rc.local

在使用了systemd作为启动器的系统(如较新版的deepin)中,默认不包含rc.local文件。此时请在/etc目录下以管理员权限创建一个名为rc.local的纯文本文件,并写入如下内容:

1
2
3
4
5
6
7
> #!/bin/bash
> # rc.local config file created by use
>
> 把你需要执行的命令写在这里
>
> exit 0
>

保存后,赋予该文件可执行权限:sudo chmod +x /etc/rc.local。下次重启时,systemd就会自动执行rc.local里面的命令了

因此我们如法炮制,把sudo openvpn --daemon --config ~/shu.ovpn --auth-user-pass ~/pass.txt写入即可(deepin自启有su权限,故可以加sudo)。

Shell中敲入reboot回车,一切明朗。

comments powered by HyperComments
文章目录
  1. 1. OpenVPN设置条件代理的方法
    1. 1.1. 条件代理
    2. 1.2. 添加例外
  2. 2. demo
  3. 3. Linux下添加开机自启