本文介绍了如何在基于RPM和DEB的系统中安装和配置OpenVPN服务器。我们在本文中将使用一个名为openvpn-install的脚本,它使整个OpenVPN服务器的安装和配置过程实现了自动化。该脚本可帮助你在几分钟内搭建好自己的VPN服务器,哪怕你之前没有用过OpenVPN。

作者:布加迪编译来源:51CTO|2017-04-24 10:46

【51CTO.com快译】本文介绍了如何在基于RPM和DEB的系统中安装和配置OpenVPN服务器。我们在本文中将使用一个名为openvpn-install的脚本,它使整个OpenVPN服务器的安装和配置过程实现了自动化。该脚本可帮助你在几分钟内搭建好自己的VPN服务器,哪怕你之前没有用过OpenVPN。

好了,闲话少说。

在Linux中安装和配置OpenVPN Server

出于本文的需要,我将使用两个运行CentOS 7 64位版本的系统。一个充当OpenVPN服务器,另一个充当OpenVPN客户机。下面是测试系统的详细信息。

  • OpenVPN服务器:
  • 操作系统:CentOS 7 64位极简版
  • IP地址:192.168.43.150/24
  • 主机名称:vpnserver.ostechnix.local
  • OpenVPN客户机:
  • 操作系统:CentOS 7 64位极简版
  • IP地址:192.168.43.199/24

我们先来看看服务器端配置。

OpenVPN Server的安装和配置

从GitHub页面下载openvpn-install脚本。

wget https://git.io/vpn -O openvpn-install.sh

然后,使用下列命令,以root用户的身份运行该脚本:

  1. bash openvpn-install.sh

系统会要求你回答一系列问题。回答相应的问题。

确保VPN服务器的IP地址正确。如果你使用多个IP地址,输入想让OpenVPN侦听的那个网络接口的IP地址。

  • Welcome to this quick OpenVPN "road warrior" installer
  • I need to ask you a few questions before starting the setup
  • You can leave the default options and just press enter if you are ok with them
  • First I need to know the IPv4 address of the network interface you want OpenVPN
  • listening to.
  • IP address: 192.168.43.150

选择你想使用哪种协议。我想要使用tcp端口,因此选择了数字2。

Which protocol do you want for OpenVPN connections?

1) UDP (recommended)

2) TCP

Protocol [1-2]: 2

输入端口号。

What port do you want OpenVPN listening to?

Port: 1194

输入你想与VPN结合使用的DNS服务器细节。我想使用谷歌DNS解析器,于是选择了选项2。

Which DNS do you want to use with the VPN?

1) Current system resolvers

2) Google

3) OpenDNS

4) NTT

5) Hurricane Electric

6) Verisign

DNS [1-6]: 2

我们已到了最后一步。输入你的客户机证书名称。这个名称应该是一个单词,不该含有任何特殊字符。

  • Finally, tell me your name for the client certificate
  • Please, use one word only, no special characters
  • Client name: client

按回车键,开始OpenVPN服务器的安装。

  • Okay, that was all I needed. We are ready to setup your OpenVPN server now
  • Press any key to continue...

没有任何问题,该脚本会开始装上安装OpenVPN服务器需要的所有必要依赖项。另外,它还会创建所有必要的密钥和证书,以便通过VPN客户机的验证。这个过程需要几分钟。

最后,脚本会问你有没有任何外部IP地址。如果没有外部IP地址,就让它空着,不用管,按回车键。

  • If your server is NATed (e.g. LowEndSpirit), I need to know the external IP
  • If that's not the case, just ignore this and leave the next field blank
  • External IP:
  • Finished!
  • Your client configuration is available at /root/client.ovpn
  • If you want to add more clients, you simply need to run this script again!

OpenVPN服务器的安装和配置已完成。你从最后的输出中可以看出,客户机配置细节保存在文件/root/client.ovpn中。需要将该文件拷贝到你的所有VPN客户机系统。

我将client.ovpn文件拷贝到了我的VPN客户机。

  1. scp client.ovpn root@192.168.43.199:/etc/openvpn/

接下来,我们需要配置OpenVPN客户机。

OpenVPN客户机的配置

确保你从VPN服务器系统拷贝过来了client.ovpn文件。我已经将这个文件拷贝到VPN客户机系统的/etc/openvpn/目录。

使用发行版软件包管理器安装OpenVPN软件包。

  1. yum install openvpn

接下来,运行下列命令,与VPN服务器之间建立一条安全连接。

  1. openvpn --config /etc/openvpn/client.ovpn

示例输出:

  1. Wed Apr 5 18:50:44 2017 Unrecognized option or missing parameter(s) in /etc/openvpn/client.ovpn:14: block-outside-dns (2.3.14)
  2. Wed Apr 5 18:50:44 2017 OpenVPN 2.3.14 x86_64-redhat-linux-gnu [SSL (OpenSSL)] [LZO] [EPOLL] [PKCS11] [MH] [IPv6] built on Dec 7 2016
  3. Wed Apr 5 18:50:44 2017 library versions: OpenSSL 1.0.1e-fips 11 Feb 2013, LZO 2.06
  4. Wed Apr 5 18:50:44 2017 Control Channel Authentication: tls-auth using INLINE static key file
  5. Wed Apr 5 18:50:44 2017 Outgoing Control Channel Authentication: Using 160 bit message hash 'SHA1' for HMAC authentication
  6. Wed Apr 5 18:50:44 2017 Incoming Control Channel Authentication: Using 160 bit message hash 'SHA1' for HMAC authentication
  7. Wed Apr 5 18:50:44 2017 Socket Buffers: R=[87380->87380] S=[16384->16384]
  8. Wed Apr 5 18:50:44 2017 Attempting to establish TCP connection with [AF_INET]192.168.43.150:1194 [nonblock]
  9. Wed Apr 5 18:50:45 2017 TCP connection established with [AF_INET]192.168.43.150:1194
  10. Wed Apr 5 18:50:45 2017 TCPv4_CLIENT link local: [undef]
  11. Wed Apr 5 18:50:45 2017 TCPv4_CLIENT link remote: [AF_INET]192.168.43.150:1194
  12. Wed Apr 5 18:50:45 2017 TLS: Initial packet from [AF_INET]192.168.43.150:1194, sid=c6fb554e 362eb192
  13. Wed Apr 5 18:50:45 2017 VERIFY OK: depth=1, CN=ChangeMe
  14. Wed Apr 5 18:50:45 2017 Validating certificate key usage
  15. Wed Apr 5 18:50:45 2017 ++ Certificate has key usage 00a0, expects 00a0
  16. Wed Apr 5 18:50:45 2017 VERIFY KU OK
  17. Wed Apr 5 18:50:45 2017 Validating certificate extended key usage
  18. Wed Apr 5 18:50:45 2017 ++ Certificate has EKU (str) TLS Web Server Authentication, expects TLS Web Server Authentication
  19. Wed Apr 5 18:50:45 2017 VERIFY EKU OK
  20. Wed Apr 5 18:50:45 2017 VERIFY OK: depth=0, CN=server
  21. Wed Apr 5 18:50:45 2017 Data Channel Encrypt: Cipher 'AES-256-CBC' initialized with 256 bit key
  22. Wed Apr 5 18:50:45 2017 Data Channel Encrypt: Using 160 bit message hash 'SHA1' for HMAC authentication
  23. Wed Apr 5 18:50:45 2017 Data Channel Decrypt: Cipher 'AES-256-CBC' initialized with 256 bit key
  24. Wed Apr 5 18:50:45 2017 Data Channel Decrypt: Using 160 bit message hash 'SHA1' for HMAC authentication
  25. Wed Apr 5 18:50:45 2017 Control Channel: TLSv1.2, cipher TLSv1/SSLv3 DHE-RSA-AES256-GCM-SHA384, 2048 bit RSA
  26. Wed Apr 5 18:50:45 2017 [server] Peer Connection Initiated with [AF_INET]192.168.43.150:1194
  27. Wed Apr 5 18:50:48 2017 SENT CONTROL [server]: 'PUSH_REQUEST' (status=1)
  28. Wed Apr 5 18:50:48 2017 PUSH: Received control message: 'PUSH_REPLY,redirect-gateway def1 bypass-dhcp,dhcp-option DNS 8.8.8.8,dhcp-option DNS 8.8.4.4,route-gateway 10.8.0.1,topology subnet,ping 10,ping-restart 120,ifconfig 10.8.0.2 255.255.255.0'
  29. Wed Apr 5 18:50:48 2017 OPTIONS IMPORT: timers and/or timeouts modified
  30. Wed Apr 5 18:50:48 2017 OPTIONS IMPORT: --ifconfig/up options modified
  31. Wed Apr 5 18:50:48 2017 OPTIONS IMPORT: route options modified
  32. Wed Apr 5 18:50:48 2017 OPTIONS IMPORT: route-related options modified
  33. Wed Apr 5 18:50:48 2017 OPTIONS IMPORT: --ip-win32 and/or --dhcp-option options modified
  34. Wed Apr 5 18:50:48 2017 ROUTE_GATEWAY 192.168.43.1/255.255.255.0 IFACE=enp0s3 HWADDR=08:00:27:28:98:6b
  35. Wed Apr 5 18:50:48 2017 TUN/TAP device tun0 opened
  36. Wed Apr 5 18:50:48 2017 TUN/TAP TX queue length set to 100
  37. Wed Apr 5 18:50:48 2017 do_ifconfig, tt->ipv6=0, tt->did_ifconfig_ipv6_setup=0
  38. Wed Apr 5 18:50:48 2017 /usr/sbin/ip link set dev tun0 up mtu 1500
  39. Wed Apr 5 18:50:48 2017 /usr/sbin/ip addr add dev tun0 10.8.0.2/24 broadcast 10.8.0.255
  40. Wed Apr 5 18:50:48 2017 /usr/sbin/ip route add 192.168.43.150/32 dev enp0s3
  41. Wed Apr 5 18:50:48 2017 /usr/sbin/ip route add 0.0.0.0/1 via 10.8.0.1
  42. Wed Apr 5 18:50:48 2017 /usr/sbin/ip route add 128.0.0.0/1 via 10.8.0.1
  43. Wed Apr 5 18:50:48 2017 Initialization Sequence Completed

现在,检查一下tun0(VPN接口)是否已创建,并使用‘ip addr’命令,检查VPN接口的IP地址。

  1. ip addr

示例输出:

  1. 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN
  2. link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
  3. inet 127.0.0.1/8 scope host lo
  4. valid_lft forever preferred_lft forever
  5. inet6 ::1/128 scope host
  6. valid_lft forever preferred_lft forever
  7. 2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
  8. link/ether 08:00:27:28:98:6b brd ff:ff:ff:ff:ff:ff
  9. inet 192.168.43.199/24 brd 192.168.43.255 scope global dynamic enp0s3
  10. valid_lft 42359sec preferred_lft 42359sec
  11. inet6 fe80::a00:27ff:fe28:986b/64 scope link
  12. valid_lft forever preferred_lft forever
  13. 3: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN qlen 100
  14. link/none
  15. inet 10.8.0.2/24 brd 10.8.0.255 scope global tun0
  16. valid_lft forever preferred_lft forever

你可以从上述输出中看出,我们的VPN服务器自动将IP地址10.8.0.2分配给了VPN客户机。

现在试着从VPN客户机系统ping该VPN服务器:

ping -c3 10.8.0.1

示例输出:

  1. PING 10.8.0.1 (10.8.0.1) 56(84) bytes of data.
  2. 64 bytes from 10.8.0.1: icmp_seq=1 ttl=64 time=1.05 ms
  3. 64 bytes from 10.8.0.1: icmp_seq=2 ttl=64 time=1.94 ms
  4. 64 bytes from 10.8.0.1: icmp_seq=3 ttl=64 time=2.49 ms
  5. --- 10.8.0.1 ping statistics ---
  6. 3 packets transmitted, 3 received, 0% packet loss, time 2001ms
  7. rtt min/avg/max/mdev = 1.057/1.832/2.495/0.594 ms

恭喜!我们现在已在CentOS中成功地安装和配置了OpenVPN服务器和客户机。这个方法对基于DEB的系统(比如Ubuntu和Linux Mint)来说一样。不像手动安装,该脚本让OpenVPN的安装和配置容易了许多。

原文标题:An Easiest Way To Install And Configure OpenVPN Server In Linux,作者:SK

【51CTO译稿,合作站点转载请注明原文译者和出处为51CTO.com】

在Linux中安装和配置OpenVPN Server的最简便方法!的更多相关文章

  1. openvpn-在Linux中安装和配置OpenVPN Server的最简便方法!(转)

    在Linux中安装和配置OpenVPN Server 出于本文的需要,我将使用两个运行CentOS 7 64位版本的系统.一个充当OpenVPN服务器,另一个充当OpenVPN客户机.下面是测试系统的 ...

  2. linux中安装和配置 jdk

    01.去官网下载指定的jdk 02.使用xftp把下载好的文件 传递到 linux指定文件夹中03.进入指定的文件夹输入tar -zxvf 文件名称04.发现文件 05.进入文件cd jdk1.8.0 ...

  3. 详解在Linux中安装配置MySQL

    最近在整理自己私人服务器上的各种阿猫阿狗,正好就顺手详细记录一下清理之后重装的步骤,今天先写点数据库的内容,关于在Linux中安装配置MySQL 安装环境 CentOS7 + MySQL5.7 下载安 ...

  4. Linux中安装C++编译器codeBlock,并配置opencv链接库

    1.Linux中安装codeBlock https://blog.csdn.net/xinyunyishui/article/details/50967395 2.CodeBlock中的中文显示不完全 ...

  5. Linux中安装配置spark集群

    一. Spark简介 Spark是一个通用的并行计算框架,由UCBerkeley的AMP实验室开发.Spark基于map reduce 算法模式实现的分布式计算,拥有Hadoop MapReduce所 ...

  6. 详解在Linux中安装配置MongoDB

    最近在整理自己私人服务器上的各种阿猫阿狗,正好就顺手详细记录一下清理之后重装的步骤,今天先写点数据库的内容,关于在Linux中安装配置MongoDB 说实话为什么会装MongoDB呢,因为之前因为公司 ...

  7. linux svn安装和配置

    linux svn安装和配置,不结合apache http://blog.51yip.com/server/901.html 张映 发表于 2010-07-07 分类目录: 服务器相关 今天有个同事在 ...

  8. 在 Linux 系统中安装Load Generator ,并在windows 调用方法

    在 Linux 系统中安装Load Generator ,并在windows 调用 由于公司需要测试系统的最大用户承受能力,所以需要学习使用loadrunner.在安装的时候碰到了不少问题,所以写下此 ...

  9. 在linux下安装并配置mysql数据库

    在linux下安装并配置mysql数据库 工具/原料   MySql5.6 CentOS 方法/步骤   1 查找以前是否安装有mysql,使用下面命令: rpm -qa|grep -i mysql ...

随机推荐

  1. note02-计算机网络

    2.物理层 通信系统模型(源->发送器->XXX->接收器->终),源发出数字信号,调制器编码为模拟信号,进行传输,解调器解码模拟信号为数字信号给终 信噪比,香农公式,C=B  ...

  2. POJ-2976 Dropping tests---二分最大化平均值

    题目链接: https://cn.vjudge.net/problem/POJ-2976 题目大意: 给定n个二元组(a,b),扔掉k个二元组,使得剩下的a元素之和与b元素之和的比率最大 解题思路: ...

  3. 动态规划(DP),递推,最大子段和,POJ(2479,2593)

    题目链接:http://poj.org/problem?id=2479 解题报告: 1.再求left[i]的时候,先没有考虑a[i]的正负,先把a[i]放到left[i]中,然后left=max(le ...

  4. Visual Studio C++ Win32控制台应用程序,Win32项目,MFC的区别

    背景 Visual Studio C++ 创建新项目蹦出来如下选项: Win32控制台应用程序,Win32项目,MFC有什么区别? 正文: Win32控制台,没有界面,命令行执行生成的文件则直接在后台 ...

  5. MYSQL5.7.15安装步骤

    下载完成之后双击安装: 接下来一路next (出现的问题) 在我第一次安装myslq过程中,上图中的mysql server failed ,这是因为电脑环境需要升级一个插件,Visual C++ 2 ...

  6. js关于密码框强弱度的提示

    三种密码强度的正则表达式: 较弱:全是数字或全是字母 6-16个字符:/^[0-9]{6,16}$|^[a-zA-Z]{6,16}$/; 中级:数字.26个英文字母 6-16个字符: /^[A-Za- ...

  7. 史上最简单的SpringCloud教程 | 第五篇: 路由网关(zuul)(Finchley版本)

    转载请标明出处: 原文首发于:https://www.fangzhipeng.com/springcloud/2018/08/30/sc-f5-zuul/ 本文出自方志朋的博客 在微服务架构中,需要几 ...

  8. iOS百度地图简单使用详解

    iOS百度地图简单使用详解 百度地图 iOS SDK是一套基于iOS 5.0及以上版本设备的应用程序接口,不仅提供展示地图的基本接口,还提供POI检索.路径规划.地图标注.离线地图.定位.周边雷达等丰 ...

  9. LeetCode 中级 - 从前序与中序遍历序列构造二叉树(105)

    一个前序遍历序列和一个中序遍历序列可以确定一颗唯一的二叉树. 根据前序遍历的特点, 知前序序列(PreSequence)的首个元素(PreSequence[0])为二叉树的根(root),  然后在中 ...

  10. 【模板】全排列(运用STL的next_permutation)

    (1) 先将要排列的数据存入数组中: (2) 再将数组元素从小到大排序: (3) 每次调用next_permutation函数,都只进行1次排列,若数组元素完全变为递减的排列,则该函数返回0: int ...