技术博文 · 2021-04-07 3

openvpn同时连接多个以及如何配置

背景:因为需要维护多家医院的内网服务器,经常需要访问多个不同地点的网络,要通过不断地切换vpn实现,效率极低

解决方法:增加虚拟网卡

解决步骤:用管理员权限执行以下命令,即可增加一块TAP虚拟网卡,需要多块执行多次即可,然后在ovpn配置文件中增加“ nobind ”的配置项。

"C:\Program Files\TAP-Windows\bin\addtap.bat"

查看网络连接

image-20210407213730041

 

也可以通过命令检查虚拟网卡:

"C:\Program Files\OpenVPN\bin\openvpn" --show-adapters

也可以在配置文件中制定使用特定的虚拟网卡的,将配置项设置为

dev tap
dev-node "以太网 2"

原因:Windows 版 OpenVPN 客户端安装时默认只安装一个TAP虚拟网卡,如果需要同时连接多个,则需要为每个VPN配置一个TAP虚拟网卡。

如何将openvpn的 密钥写入一个文件

一般openvpn的认证会生成4个文件

例如: ahertongyy.ovpn、ca.crt、tangwenzhi.crt、tangwenzhi.key、ta.key

image-20210407215234036

openvpn的客户端其实只认识*.ovpn,所以可以把其他的几个文件的内容全部写入*.ovpn文件来实现多个配置文件

ovpn的格式如下:

client						##定义这是一个client
dev tun						##定义openvpn运行时使用哪一种模式,一种是tap一种是tun,需要和server端保持一致
proto tcp					##客户端和服务器数据传输使用tcp协议,tcp协议丢包时会重传,udp则不会,也是和server端保持一致
remote XXX.XXX.XX.XXX 2349	##设置server的ip地址和端口,如果是负载的openvpn,可以多次出现remote
resolv-retry infinite		##始终重新解析server的IP地址(如果remote后面接的是域名),如果server ip地址是动态的,改配置可以不用重启保证vpn重新接入
nobind						##定义在本机不绑定任何端口
persist-key					##通过keepalive检测超时后重新启动vpn,不重新读取keys,保留第一次使用的keys
persist-tun					##通过keepalive检测超时后重新启动vpn,一直保持tun或者tap设备是linkup,否则会xianlinkdown然后linkup
ca ca.crt					##CA证书文件,可以使用相对路径,默认是同级目录文件,例如:ca .\aaa\ca.crt
cert tangwenzhi.crt			##客户端证书文件,可以使用相对路径,默认是同级目录文件,例如:ca .\aaa\tangwenzhi.crt
key tangwenzhi.key			##客户端的密钥文件,可以使用相对路径,默认是同级目录文件,例如:ca .\aaa\tangwenzhi.key
tls-auth ta.key 1			##和server配置里一致,ta.key文件,可以使用相对路径,默认是同级目录文件,例如:ca .\aaa\ta.key
comp-lzo					##压缩选项,和server严格一致
verb 3						##设置日志记录冗长级别

可以将证书文件放入一个文件夹中然后在ovpn文件里面使用相对路径来实现加载多个ovpn文件

例如image-20210407221458967image-20210407221537913

client
dev tun
proto tcp
remote 60.168.134.247 2349
resolv-retry infinite
nobind
persist-key
persist-tun
ca .\aaa\ca.crt
cert .\aaa\tangwenzhi.crt
key .\aaa\tangwenzhi.key
tls-auth .\aaa\ta.key 1
comp-lzo
verb 3

还有另外一种方式,我一直使用的方式,将证书文件的内容写到ovpn配置文件里面

例如:(密钥进行删减,根据自己的证书文件填写)

client
dev tun
proto tcp
remote XXX.XXX.XX.XXX 2349
resolv-retry infinite
nobind
persist-key
persist-tun
<ca>
-----BEGIN CERTIFICATE-----
MIIEoTCCA4mgAwIBAgIJALPHO9eSVEWjMA0GCSqGSIb3DQEBCwUAMIGRMQswCQYD
VQQGEwJDTjELMAkGA1UECBMCWkoxCzAJBgNVBAcTAkhaMQswCQYDVQQKEwJZVDEP
MA0GA1UECxMGZGV2b3BzMQ4wDAYDVQQDEwVZVCBDQTEXXX.XXX.XX.XXXQMA4GA1UEKRMHRWFzeVJT
QTEoMCYGCSqGSIb3DQEJARYZdGFuZ3dlbnpoaUB5dWFudHV0ZWNoLmNvbTAeFw0x
OTAzMjMxMDMx7yY5D7Uv4AibkVEnKeRphQs7Z1o6b+wFyloGaWQk
Gdha6dBS6EfBjV/aENclHX/0CIBcIoKTizlCgWQ0FFYFFvLLeKp6sUeUn3rkIBQD
V8Mi1wGcbSe2RpqQ/1ouyj07Yc276Dh5Rns5ryZQYTUCAwEAAaOB+TCB9jAdBgNV
HQ4EFgQUjqSA+fPA79R14we467rPx+hH1V4wgcYGA1UdIwSBvjCBu4AUjqSA+fPA
79R14we467rPx+hH1V6hgZekgZQwgZExCzAJBgNVBAYTAkNOMQswCQYDVQQIEwJa
SjELMAkGA1UEBxMCSFoxCzAJBgNVBAoTAllUMQ8wDQYDVQQLEwZkZXZvcHMxDjAM
BgNVBAMTBVlUIENBMRAwDgYDVQQpEwdFYXN5UlNBMSgwJgYJKoZIhvcNAQkBFhl0
YW5nd2VuemhpQHl1YW50dXRlY2guY29tggkAs8c715JURaMwDAYDVR0TBAUwAwEB
/zANBgkqhkiG9w0BAQsFAAOCAQEAiuK8JEkRgVkatONpQtil7k69NZhb7DgUFhXE
WFkuLY1FlmVYSf0WBNGg8r82COA9miqsJTReT1vJSCkssn2liTATEF1YVHEMoYi4
9+Ycx5hrnRX0IQ8f103nJBUTGzlhTXo+GgBCNHn1/jJCWjNrf19I5JFZzA7Bx23g
RsHm4Uwe0pp/N1dAJ/zq4td7cY6/SdwY8ehaGIml+YJFPuzIBXUGGEk8fcsvCyPj
0CFPT7hDiwLFAxG698ZQ32gxAHNfGG5TWq4tivqLwJXb+9bbQochChtaAHeyALgC
Mmc5bWSBi7Zm50M2GUh6XyeZsTDvd4r/JrUAvBpAHavVv/G3sw==
-----END CERTIFICATE-----
</ca>
<cert>
-----BEGIN CERTIFICATE-----
MIIE7jCCA9agAwIBAgIBAzANBgkqhkiG9w0BAQsFADCBkTELMAkGA1UEBhMCQ04x
CzAJBgNVBAgTAlpKMQswCQYDVQQHEwJIWjELMAkGA1UEChMCWVQxDzANBgNVBAsT
BmRldm9wczEOMAwGA1UEAxMFWVQgQ0ExEDAOBgNVBCkTB0Vhc3lSU0ExKDAmBgkq
hkiG9w0BCQEWGXRhbmd3ZW56aGlAeXVhbnR1dGVjaC5jb20wHhcNMTkwMzIzMTEw
NjM2WhcNMjkwMzIwMTEwNjM2WjCBljELMAkGA1UEBhMCQ04xCzAJBgNVBAgTAlpK
MQswCQYDVQQHEwJIWjELMAkGA1UEChMCWVQxDzANBgNVBAsTBmRldm9wczETMBEG
A1UEAxMKdGFuZ3dlbnpoaTEQMA4GA1UEKRMHRWFzeVJTQTEoMCYGCSqGSIb3DQEJ
ARYZdGFuZ3dlbnpoaUB5dWFudHV0ZWNoLmNvbTCCASIwDQYJKoZIhvcNAQEBBQAD
ggEPADCCAQoCggEBANMIThswK/dhsaTHIawOeaxsDiTpbl3fBUkmzGu9h/msFM+x
Mxhe0YKU3EStaFXjjHbU3K3oUcshkk1ghEAvhk5sRJpsMC95OOs2+Ln8jOi01qTi
pMeRScbyNDkeVWNWcimYuuVO9PM2OPdAKypSPZ13cvvnZROLRo+GBcHJuZ41ZQoX
fK0yymP3Lg6xfXt8R1YLVb7+Gh/GP45R66+fTxAM5NkAg
1i4GY2LDOW8G+QSre6e2YfWbyKe63mgy5kap3m0CAwEAAaOCAUgwggFEMAkGA1Ud
EwQCMAAwLQYJYIZIAYb4QgENBCAWHkVhc3ktUlNBIEdlbmVyYXRlZCBDZXJ0aWZp
Y2F0ZTAdBgNVHQ4EMRAwDgYDVQQpEwdFYXN5UlNBMSgwJgYJKoZI
hvcNAQkBFhl0YW5nd2VuemhpQHl1YW50dXRlY2guY29tggkAs8c715JURaMwEwYD
VR0lBAwwCgYIKwYBBQUHAwIwCwYDVR0PBAQDAgeAMA0GCSqGSIb3DQEBCwUAA4IB
AQCGMU8oLrIqQyr3s6vYXSNdq6QntiBPw+n/5RSfhw9wCzxvsoOa8ZOY1JY5lasD
ctTIqANW3Fo6g3KFPh8kRyalsRcVPo+roj/2LSC+sj4gyBW3DxdoG98yhZYk1vsL
DDagXLPtYIAjE3sXasuI/v6zbg+p2uLdswv3O73Hin0oF5kW91dxwK9t2+T2LFdG
8pZXzf+uxdUMnzkWda338AxVam3XhNycCEH+MgRFXAMakspDSId6pm+LeTcigSwD
UeG/+6DssgnG3k3e1Y8ClchNNrYT6iu7qJ1ei6fbU0Gqo39Hio6mtvgJsx9zYNaY
NrGp1jbNd8sFeWOwr52FQe1G
-----END CERTIFICATE-----
</cert>
<key>
-----BEGIN PRIVATE KEY-----
MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQDTCE4bMCv3YbGk
xyGsDnmsbA4k6W5d3wVJJsxrvYf5rBTPsTMYXtGClNxErWhV44x21Nyt6FHLIZJN
YIRAL4ZObESabDAveTjrNvi5/IzotNak4qTHkUnG8jQ5HlVjVnIpmLrlTvTzNjj3
QCsqUj2dd3L752UTi0aPhgXBKs7OXHwcmr1S7r0cK53KKeJRfZtStC
Dm9mx4gj2I8wLSt420OyZRizYLpH6W+1foJe3Dkhe+uhyVg9/RYBoJIwTLQtQZlS
aPVEA6PG2BSFAaohMsiHGCXnpwunDy2XYSuhBHnRXUJ70x0QkAX4Gl/xf7HmH1CB
9Yqu9YJMN9fDXgbiKjUtEOFy73Cxp0UqPBInYKuxAAECgYEA9I+sbqlqY+U+9iOV
TueBgrF6u5M+9XvPS5qqooPd5wom4YWEDF/jJI13aAKh3xIdTdtXjx1bf3NgtPLp
huA/1cQl8nbuPdEUCo4VA/HiX6SRtxS3m+4rMVQBVo8y8IMn4WtQNIEIU7NuL/id
SMY3UxUQCDCDpflOO/m28T0+qG0CgYEA3OcqKcp47kEmosAu8bjvbXtTn2Jk5JU4
hfaS1zLeLEiKgyI06QD7hW6cVcr1ZqFwHZ1r282ouUyAb2ACGop9SSp1eTD/xi8i
/VtcQxJS4hv+kIuD1E86JEfuTmgmCC+Rz87PQ2uzlSHbaiJU6z+yVO2LmdYByox+
ZqNFrt5CTgECgYEAgN5seGuhej5ErSMW/FsVba7kA4+Vr3msRCSeIcDm32YEEvZu
HK8yXAKHlzE75vX+pxYbz3gizMgZf4A4+i+Us6oGbPuqkrxnmSBBhrChHtDzT8wE
7I/WBspDYj9XElGqZChOPTx5DNISEAkrqDt6z7bbmdUmqgDy7rupYPlq2QkCgYEA
u1dgrqiD/qtKNOR/64hHpbXdqWIs5p6WnSYMSm1ddnje3293J9Qpe3PfKfNCQ5PO
HY+QFY1I9j0m/02Q+ylQL2jOz8T6Zf0701pT2J4FpLTRI4zudHPsfzBxrhUti+ur
4W0m4arJVkSsbEpJcmlGuDftGL4iLsEPwcPeKPtdiAECgYAKilnjNguSaATg8QwH
4N9DaKRD/pwu7MHswKW2wYAPA7wF4ITC7KzvD7PiZZI1Dymat8iRf3d9FB8su5En
qIO1ZQgHimXVvYyBnZvK9/jp3qCW+CC/73toj/+wwUcxr32dRPt02/OEMj9ka1qK
URgGj2K7Z5F1tyuwNg/1YAxYJw==
-----END PRIVATE KEY-----
</key>
key-direction 1     #####这一句很重要,1表示是客户端,0表示的是服务端
<tls-auth>
-----BEGIN OpenVPN Static key V1-----
2213c1d17f266955b7ad92d17c832371
a73ffea285f21b412bb939f2d747763d
0d08708c64a7bb131e2b88588e611c59
be9fcc732e995ce2d308463cfa8cb0fb
311020a685cba27334ffa5df5871bd30
a674d14302aec5304f0e507c214f8a1d
1ba39d14c0906542795d26202750e4d9
09de132d5f21c85318bc4c52465439ca
9fa77bcbf20f8489430442ce46c13bd6
b1a4047f6baa821bd79a3256c35631cd
527bf998fe38b8741198a0ebb0de951f
-----END OpenVPN Static key V1-----
</tls-auth>
comp-lzo
verb 3

将文件保存为ahertongyy.ovpn放到config目下即可

如下截图,通过连接不同的虚拟网卡,同时实现2个vpn连接不同区域

image-20210407222558226

image-20210407222648733




今天使用的时候发现一个问题。在openvpn.ovpn的配置文件里面使用绝对路径和相对路径时,需要使用2道斜杠。

如下图~