文档章节

windows通过linux下的openvpn登入远程服务器内网

 蜗牛奔跑
发布于 2017/08/03 15:16
字数 2496
阅读 51
收藏 0
vpn

需求:在某些网络要求比较严格的环境中,我们在异地无法远程访问公司内网,给我们的工作带来了极大的不便;但是通过openvpn我们可以轻松实现,下面就来介绍下。

注:本实验是在防火墙关闭的情况下进行的,即使开启防火墙也未对nat表做限制。

1.网络环境:

公司openvpn服务器(linux):wan 75.126.207.84

lan 10.61.53.84

 

本地服务器(windows): wan 115.238.239.132

  lan 10.10.1.132

2.所需安装软件

openvpn版本:openvpn-2.2.2.tar.gz (linux,可以到http://openvpn.net下载)

    openvpn-2.2.2-install.exe (windows)

lzo-2.03.tar.gz

gcc gcc-c++ openssl openssl-devel

注:openvpn2.3以上的版本不识别lzo编译程序,无法进行安装;更换2.0版本后可以正常使用.

     openvpn 服务器和客户端版本必须保持一致,否则会出现链接不上的问题

 

3.linux服务器端环境搭建:

(1)软件安装

a) yum -y install gcc gcc-c++ openssl openssl-devel

b) lzo编译安装

cd /usr/local/src

wget http://www.oberhumer.com/opensource/lzo/download/lzo-2.03.tar.gz

tar -zxvflzo-2.03.tar.gz

cd lzo-2.03

./configure --prefix=/usr/local/lzo

make && make install

  c)openvpn2.2.2安装

cd /usr/local/src

tar -zxvf openvpn-2.2.2.tar.gz 

cd openvpn-2.2.2

./configure --prefix=/usr/local/openvpn --with-lzo-headers=/usr/local/lzo/include --with-lzo-lib=/usr/local/lzo/lib --with-ssl-headers=/usr/include/openssl--with-ssl-lib=/usr/lib64/openssl

make && make install

(2)配置证书

mkdir -p /etc/openvpn

cp -R /usr/local/src/openvpn-2.2.2/easy-rsa /etc/openvpn

cd /etc/openvpn/easy-rsa/2.0

vim vars

#创建环境变量,设置所需变量的脚本

  source vars

./clean-all

#创建生成ca证书及密钥文件所需要的文件和目录

./build-ca

#生成ca证书,一路回车即可。执行完成后会在keys目录下生成相关证书文件

./build-dh

  #生成Diffie-Hellman文件加密用,会在keys目录先生成dh1024.pem

 

./build-key-server xuyou

#生成服务器端证书及密钥文件,只需在最后两个地方输入y即可,会在keys目录下生成xuyou.crt xuyou.csr xuyou.key

      将生成的服务器端ca证书和密钥文件复制到/etc/openvpn/

      cp ca.crt ca.key xuyou.crt xuyou.csr xuyou.key dh1024.pem /etc/openvpn

      ./build-key test

      #生成客户端证书及密钥文件,只需在最后两个地方输入y即可,会在keys目录下生成test.crt test.csr test.key

     将key生成的证书及密钥文件打包,以便客户端使用

     mkdir mykey

     cp ca.key ca.crt  test.csr  test.crt  test.key mykey/

     tar -zcvf mykey.tar.gz mykey

     修改openvpn服务器端配置文件

     cp /usr/local/src/openvpn-2.2.2/sample-config-files/server.conf /etc/openvpn/openvpn.conf

vim openvpn.conf

 

[html] view plain copy

 在CODE上查看代码片派生到我的代码片

  1.   # 设置监听IP,默认是监听所有IP  
  2.   ;local a.b.c.d  
  3.   # 设置监听端口,必须要对应的在防火墙里面打开  
  4.   port 1194  
  5.   # 设置用TCP还是UDP协议?  
  6.   ;proto tcp  
  7.   proto udp  
  8.   # 设置创建tun的路由IP通道,还是创建tap的以太网通道  
  9.   # 路由IP容易控制,所以推荐使用它;但如果如IPX等必须  
  10.   # 使用第二层才能通过的通讯,则可以用tap方式,tap也  
  11.   # 就是以太网桥接  
  12.   ;dev tap  
  13.   dev tun  
  14.   # Windows需要给网卡一个名称,这里设置,linux不需要  
  15.   ;dev-node MyTap  
  16.  # 这里是重点,必须指定SSL/TLS root certificate (ca),  
  17.  # certificate(cert), and private key (key)  
  18.  # ca文件是服务端和客户端都必须使用的,但不需要ca.key  
  19.  # 服务端和客户端指定各自的.crt和.key  
  20.  # 请注意路径,可以使用以配置文件开始为根的相对路径,  
  21.  # 也可以使用绝对路径  
  22.  # 请小心存放.key密钥文件  
  23.  <span style="color:#ff0000;">ca /etc/openvpn/ca.crt  
  24.  cert /etc/openvpn/xuyou.crt  
  25.  key /etc/openvpn/xuyou.key # This file should be kept secret</span>  
  26.  # 指定Diffie hellman parameters.  
  27. <span style="color:#ff0000;"> dh /etc/openvpn/dh1024.pem</span>  
  28.  # 配置VPN使用的网段,OpenVPN会自动提供基于该网段的DHCP  
  29.  # 服务,但不能和任何一方的局域网段重复,保证唯一  
  30.  server 10.8.0.0 255.255.255.0  
  31.  # 维持一个客户端和virtual IP的对应表,以方便客户端重新  
  32.  # 连接可以获得同样的IP  
  33.  ifconfig-pool-persist ipp.txt  
  34.  # 配置为以太网桥模式,但需要使用系统的桥接功能  
  35.  # 这里不需要使用  
  36.  ;server-bridge 10.8.0.4 255.255.255.0 10.8.0.50 10.8.0.100  
  37.  # 为客户端创建对应的路由,以另其通达公司网内部服务器  
  38.  # 但记住,公司网内部服务器也需要有可用路由返回到客户端  
  39.  ;push "route 192.168.20.0 255.255.255.0"  
  40. <span style="color:#ff0000;"> push "route 10.0.0.0 255.0.0.0"</span>  
  41.  # 为特定的客户端指定IP或指定路由,该路由通常是客户端后面的  
  42.  # 内网网段,而不是服务端连接的网段  
  43.  # ccd是/etc/openvpn下的目录,其中建有希望限制的客户端Common  
  44.  # Name为文件名的文件,并通过下面的命令写入固定IP地址  
  45.  # 例如Common Name为client1,则在/etc/openvpn/ccd/client1写有:  
  46.  # ifconfig-push 10.9.0.1 10.9.0.2  
  47.  ;client-config-dir ccd  
  48.  ;route 192.168.40.128 255.255.255.248  
  49.  # 为可以对不同的客户端设置防火墙等权限  
  50.  # 可以让其自动运行对应脚本,可参考man  
  51.  ;learn-address ./script  
  52.  # 若客户端希望所有的流量都通过VPN传输,则可以使用该语句  
  53.  # 其会自动改变客户端的网关为VPN服务器,推荐关闭  
  54.  # 一旦设置,请小心服务端的DHCP设置问题  
  55.  ;push "redirect-gateway"  
  56.  # 用OpenVPN的DHCP功能为客户端提供指定的DNS、WINS等  
  57.  ;push "dhcp-option DNS 10.8.0.1"  
  58.  ;push "dhcp-option WINS 10.8.0.1"  
  59.  # 默认客户端之间是不能直接通讯的,除非把下面的语句注释掉  
  60.  client-to-client  
  61.  # 如果您希望有相同Common Name的客户端都可以登陆  
  62.  # 也可以注释下面的语句,推荐每个客户端都使用不用的Common Name  
  63.  # 常用于测试  
  64.  ;duplicate-cn  
  65.  # 设置服务端检测的间隔和超时时间  
  66.  keepalive 10 120  
  67.  # 下面是一些对安全性增强的措施,后续说明吧  
  68.  # For extra security beyond that provided  
  69.  # by SSL/TLS, create an "HMAC firewall"  
  70.  # to help block DoS attacks and UDP port flooding.  
  71.  #  
  72.  # Generate with:  
  73.  # openvpn --genkey --secret ta.key  
  74.  #  
  75.  # The server and each client must have  
  76.  # a copy of this key.  
  77.  # The second parameter should be 0  
  78.  # on the server and 1 on the clients.  
  79.  ;tls-auth ta.key 0 # This file is secret  
  80.  # Select a cryptographic cipher.  
  81.  # This config item must be copied to  
  82.  # the client config file as well.  
  83.  ;cipher BF-CBC # Blowfish (default)  
  84.  ;cipher AES-128-CBC # AES  
  85.  ;cipher DES-EDE3-CBC # Triple-DES  
  86.  # 使用lzo压缩的通讯,服务端和客户端都必须配置  
  87.  comp-lzo  
  88.  # 设置最大用户数  
  89.  ;max-clients 100  
  90.  # 让OpenVPN以nobody用户和组来运行(安全)  
  91.  ;user nobody  
  92.  ;group nobody  
  93.  # The persist options will try to avoid  
  94.  # accessing certain resources on restart  
  95.  # that may no longer be accessible because  
  96.  # of the privilege downgrade.  
  97.  persist-key  
  98.  persist-tun  
  99.  # 输出短日志,每分钟刷新一次,以显示当前的客户端  
  100.  status /var/log/openvpn/openvpn-status.log  
  101.   
  102.   
  103.  # 缺省日志会记录在系统日志中,但也可以导向到其他地方  
  104.  # 建议调试的使用先不要设置,调试完成后再定义  
  105.  <span style="color:#ff0000;">log /var/log/openvpn/openvpn.log  
  106.  log-append /var/log/openvpn/openvpn.log</span>  
  107.  # 设置日志的级别  
  108.  #  
  109.  # 0 is silent, except for fatal errors  
  110.  # 4 is reasonable for general usage  
  111.  # 5 and 6 can help to debug connection problems  
  112.  # 9 is extremely verbose  
  113.  verb 3  
  114.  # Silence repeating messages. At most 20  
  115.  # sequential messages of the same message  
  116.  # category will be output to the log.  
  117.  ;mute 20  
启动openvpn

 

  /usr/local/openvpn/sbin/openvpn --daemon --config /etc/openvpn/openvpn.conf

查看1194端口是否启动,

lsof -i:1194

    ip a会有tun0这个虚拟网卡出现,并且分配的虚拟ip为10.8.0.1

     

  4.windows客户端端环境搭建: 

    安装openvpn-2.2.2-install.exe

    将/usr/local/src/openvpn-2.2.2/sample-config-files/client.conf及生成的客户端证书及密钥文件解压到C:\Program Files (x86)\OpenVPN\config目录下

     

     编辑client.conf,改完后将文件名重命名为client.ovpn

     将remote ip改成linux服务器的ip地址和端口

[html] view plain copy

 在CODE上查看代码片派生到我的代码片

  1. ##############################################  
  2. # Sample client-side OpenVPN 2.0 config file #  
  3. # for connecting to multi-client server.     #  
  4. #                                            #  
  5. # This configuration can be used by multiple #  
  6. # clients, however each client should have   #  
  7. # its own cert and key files.                #  
  8. #                                            #  
  9. # On Windows, you might want to rename this  #  
  10. # file so it has a .ovpn extension           #  
  11. ##############################################  
  12.   
  13. # Specify that we are a client and that we  
  14. # will be pulling certain config file directives  
  15. # from the server.  
  16. client  
  17.   
  18. # Use the same setting as you are using on  
  19. # the server.  
  20. # On most systems, the VPN will not function  
  21. # unless you partially or fully disable  
  22. # the firewall for the TUN/TAP interface.  
  23. ;dev tap  
  24. dev tun  
  25.   
  26. # Windows needs the TAP-Win32 adapter name  
  27. # from the Network Connections panel  
  28. # if you have more than one.  On XP SP2,  
  29. # you may need to disable the firewall  
  30. # for the TAP adapter.  
  31. ;dev-node MyTap  
  32.   
  33. # Are we connecting to a TCP or  
  34. # UDP server?  Use the same setting as  
  35. # on the server.  
  36. ;proto tcp  
  37. proto udp  
  38.   
  39. # The hostname/IP and port of the server.  
  40. # You can have multiple remote entries  
  41. # to load balance between the servers.  
  42. <span style="color:#ff0000;">remote 75.126.207.84 1194</span>  
  43. ;remote my-server-2 1194  
  44.   
  45. # Choose a random host from the remote  
  46. # list for load-balancing.  Otherwise  
  47. # try hosts in the order specified.  
  48. ;remote-random  
  49.   
  50. # Keep trying indefinitely to resolve the  
  51. # host name of the OpenVPN server.  Very useful  
  52. # on machines which are not permanently connected  
  53. # to the internet such as laptops.  
  54. resolv-retry infinite  
  55.   
  56. # Most clients don't need to bind to  
  57. # a specific local port number.  
  58. nobind  
  59.   
  60. # Downgrade privileges after initialization (non-Windows only)  
  61. ;user nobody  
  62. ;group nobody  
  63.   
  64. # Try to preserve some state across restarts.  
  65. persist-key  
  66. persist-tun  
  67.   
  68. # If you are connecting through an  
  69. # HTTP proxy to reach the actual OpenVPN  
  70. # server, put the proxy server/IP and  
  71. # port number here.  See the man page  
  72. # if your proxy server requires  
  73. # authentication.  
  74. ;http-proxy-retry # retry on connection failures  
  75. ;http-proxy [proxy server] [proxy port #]  
  76.   
  77. # Wireless networks often produce a lot  
  78. # of duplicate packets.  Set this flag  
  79. # to silence duplicate packet warnings.  
  80. ;mute-replay-warnings  
  81.   
  82. # SSL/TLS parms.  
  83. # See the server config file for more  
  84. # description.  It's best to use  
  85. # a separate .crt/.key file pair  
  86. # for each client.  A single ca  
  87. # file can be used for all clients.  
  88. <span style="color:#ff0000;">ca ca.crt  
  89. cert test.crt  
  90. key test.key</span>  
  91.   
  92. # Verify server certificate by checking  
  93. # that the certicate has the nsCertType  
  94. # field set to "server".  This is an  
  95. # important precaution to protect against  
  96. # a potential attack discussed here:  
  97. #  http://openvpn.net/howto.html#mitm  
  98. #  
  99. # To use this feature, you will need to generate  
  100. # your server certificates with the nsCertType  
  101. # field set to "server".  The build-key-server  
  102. # script in the easy-rsa folder will do this.  
  103. ns-cert-type server  
  104.   
  105. # If a tls-auth key is used on the server  
  106. # then every client must also have the key.  
  107. ;tls-auth ta.key 1  
  108.   
  109. # Select a cryptographic cipher.  
  110. # If the cipher option is used on the server  
  111. # then you must also specify it here.  
  112. ;cipher x  
  113.   
  114. # Enable compression on the VPN link.  
  115. # Don't enable this unless it is also  
  116. # enabled in the server config file.  
  117. comp-lzo  
  118.   
  119. # Set log file verbosity.  
  120. verb 3  
  121.   
  122. # Silence repeating messages  
  123. ;mute 20  
    启动桌面图标OpenVPN  GUI会进行连接

 

    

    链接成功后会以绿色显示,将鼠标放上去会显示如下:

    

    本地连接也会出现虚拟网卡信息:

     

   ping远程服务器的内网:

   

    直接用内网地址进行远程服务器连接:

   

   这些证明本地服务器已经可以通过openvpn接入公司内网服务器了。

   最后附windows客户端连接日志:

   

本文转载自:

上一篇: php --ini
粉丝 38
博文 615
码字总数 118352
作品 0
海淀
私信 提问
CentOS6.7安装OpenVPN服务端

本文主要讲述如何在Linux(以CentOS6.7为例)环境中搭建VPN(OpenVPN)服务器。 OpenVPN基本介绍: OpenVPN是开源的VPN守护进程(daemon),easy-RSA提供一些简易的CA证书工具。 VPN原理: ...

技术小胖子
2017/11/08
0
0
Linux自学笔记——模拟搭建openvpn

VPN直译就是虚拟专用通道,是提供给企业之间或者个人与公司之间安全数据传输的隧道,openvpn无疑是linux开源vpn的先锋,提供了良好的性能和友好的用户GUI。 OpenVPN是一个基于OpenSSL库的应用...

claude_liu
2018/04/26
0
0
OpenVPN学习笔记——客户端安装配置

OpenVPN服务器端部署完成后,就需要配置客户端的使用了,下面分别以Windows和Linux为例进行客户端的安装和配置。 1、Windows客户端 1)安装OpenVPN GUI for Windows客户端 OpenVPN在windows...

技术小阿哥
2017/11/27
0
0
使用OpenVPN的桥接模式扩展内部局域网

1.背景 OpenVPN是一款高度可扩展的VPN软件,除了既有的将应用客户端安全接入服务器这一传统功能外,还可以让你无缝的接入一个远程的局域网,正如你身在该局域网一样,如果你不用OpenVPN,你将...

晨曦之光
2012/04/10
1K
0
CentOS上OpenVPN的安装与使用

一、安装准备 二、OpenVPN服务端安装过程 1.lzo下载与安装 2.openvpn下载与安装 3.服务器端设置 4.初始化参数 5.生成CA证书 6.建立server key(一直回车) 7.生成diffie hellman参数 8.复制c...

鉴客
2011/09/01
16.6K
1

没有更多内容

加载失败,请刷新页面

加载更多

python数据结构

1、字符串及其方法(案例来自Python-100-Days) def main(): str1 = 'hello, world!' # 通过len函数计算字符串的长度 print(len(str1)) # 13 # 获得字符串首字母大写的...

huijue
3分钟前
0
0
OSChina 周日乱弹 —— 我,小小编辑,食人族酋长

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @宇辰OSC :分享娃娃的单曲《飘洋过海来看你》: #今日歌曲推荐# 《飘洋过海来看你》- 娃娃 手机党少年们想听歌,请使劲儿戳(这里) @宇辰OSC...

小小编辑
今天
732
10
MongoDB系列-- SpringBoot 中对 MongoDB 的 基本操作

SpringBoot 中对 MongoDB 的 基本操作 Database 库的创建 首先 在MongoDB 操作客户端 Robo 3T 中 创建数据库: 增加用户User: 创建 Collections 集合(类似mysql 中的 表): 后面我们大部分都...

TcWong
今天
40
0
spring cloud

一、从面试题入手 1.1、什么事微服务 1.2、微服务之间如何独立通讯的 1.3、springCloud和Dubbo有哪些区别 1.通信机制:DUbbo基于RPC远程过程调用;微服务cloud基于http restFUL API 1.4、spr...

榴莲黑芝麻糊
今天
26
0
Executor线程池原理与源码解读

线程池为线程生命周期的开销和资源不足问题提供了解决方 案。通过对多个任务重用线程,线程创建的开销被分摊到了多个任务上。 线程实现方式 Thread、Runnable、Callable //实现Runnable接口的...

小强的进阶之路
昨天
79
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部