一. OpenVPN 安装环境
Server 端的环境
redhat, kernel版本: 2.6.18.8-128.el5, IP 为 192.168.0.166
kernel 需要支持 tun 设备, 需要加载 iptables 模块.
检查 tun 是否安装:
代码:
[root@sever160 ~]# modinfo tun
如果没有 modinfo 命令, 直接找一下, 看看 kernel 里是否有 tun.o 文件,但是本机的确是tun.ko,如果你找不到tun.o,那么你可以查找tun.ko:
代码:
检查iptables 模块, 查看是否有下列文件:
/etc/init.d/iptables
更多版本:http://openvpn.net/release/
Client 端的环境: Windows XP PRO SP2
openvpn-2.0.9-install.exe,
可在http://openvpn.net/release/openvpn-2.0.9-install.exe 下载
注意: openvpn-2.0.9-install.exe 的版本要和 OpenVPN Server 的版本配套.
例如, 服务器装的是openvpn-2.0.9-, 那么下载的 OpenVPN GUI fow windows 应该是: openvpn-2.0.9-install.exe
OpenVPN GUI的所有历史版本: http://openvpn.se/files/install_packages/
二. OpenVPN 服务端安装过程
用 SecureCRT或者SSH登录到Linux服务器, 进入根目录
代码:
cd /usr/local/src/tarbag
下载 LZO,解压到lzo-2.02.
下载 OpenVPN, 解压到openvpn-2.0.9
安装 LZO 代码:
#tar -zxvf lzo-2.03.tar.gz -C ../software
#cd ../software/lzo-2.03
#./configure –prefix=/usr/local/lzo //设置安装路径
#make //编译
#make check //编译检查
#make install //安装
安装 OpenVPN
#tar -xzvf openvpn-2.0.9.tar.gz -C ../software/
#cd /usr/local/src/software/openvpn-2.0.9
#./configure --with-lzo-headers=/usr/local/lzo/include --with-lzo-lib=/usr/local/lzo/lib --with-ssl-headers=/usr/include/openssl --with-ssl-lib=/usr/lib
//以下为配置的输出内容
checking for ifconfig... /sbin/ifconfig
checking for ip... /sbin/ip
checking for route... /sbin/route
checking build system type... i686-pc-linux
checking host system type... i686-pc-linux
checking target system type... i686-pc-linux
checking for a BSD-compatible install... /usr/bin/install –c
………………
//检查LZO文件,如果这边没通过则无法安装OpenVPN
configure: checking for LZO Library and Header files...
checking lzo/lzo1x.h usability... yes
checking lzo/lzo1x.h presence... yes
checking for lzo/lzo1x.h... yes
checking for lzo1x_1_15_compress in -llzo2... yes
//检查SSL文件如果这边没通过则无法安装OpenVPN
configure: checking for OpenSSL Crypto Library and Header files...
checking openssl/evp.h usability... yes
checking openssl/evp.h presence... yes
checking for openssl/evp.h... yes
checking for EVP_CIPHER_CTX_init in -lcrypto... yes
//OpenSSL版本至少是0.9.6,如果不成功查查你的OpenSSL的版本
configure: checking that OpenSSL Library is at least version 0.9.6...
checking for EVP_CIPHER_CTX_set_key_length... yes
checking openssl/engine.h usability... yes
checking openssl/engine.h presence... yes
checking for openssl/engine.h... yes
checking for ENGINE_load_builtin_engines... yes
checking for ENGINE_register_all_complete... yes
checking for ENGINE_cleanup... yes
configure: checking for OpenSSL SSL Library and Header files...
checking openssl/ssl.h usability... yes
checking openssl/ssl.h presence... yes
checking for openssl/ssl.h... yes
checking for SSL_CTX_new in -lssl... yes
configure: creating ./config.status
config.status: creating Makefile
config.status: creating openvpn.spec
config.status: creating config-win32.h
config.status: creating install-win32/openvpn.nsi
config.status: creating config.h
config.status: executing depfiles commands
#make //编译,输出的内容就不粘贴了
#make install //最后一步,安装。
生成证书Key
初始化 PKI
代码:
#cd /usr/local/src/software/openvpn-2.0.9/easy-rsa/2.0
#vi vars
修改以下内容
-------------开始------------------
export EASY_RSA="`pwd`"
export KEY_CONFIG=`$EASY_RSA/whichopensslcnf $EASY_RSA`
export KEY_CONFIG=$EASY_RSA/openssl.cnf
export KEY_DIR=$EASY_RSA/keys
export KEY_SIZE=1024
export KEY_COUNTRY=CN
export KEY_PROVINCE=FJ
export KEY_CITY=FZ
export KEY_ORG="netgaming"
export KEY_EMAIL=""
-----------结束-------------------
Build:
代码:
#source ./vars
#./clean-all //删除keys文件夹
#./build-ca //建立根证书
代码:
[root@sever160 2.0]# ./build-ca
Generating a 1024 bit RSA private key
..++++++
...........................................++++++
writing new private key to 'ca.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [CN]:CN
State or Province Name (full name) [FJ]:FJ
Locality Name (eg, city) [FZ]:FZ
Organization Name (eg, company) [netgaming]:netgaming
Organizational Unit Name (eg, section) []:766
Common Name (eg, your name or your server's hostname) [netgaming CA]:server
Email Address [support@766.com]:support@766.com
# 建立 server key 代码:
代码:
#./build-key-server server
[root@sever160 2.0]# ./build-key-server server
Generating a 1024 bit RSA private key
....................++++++
.............................++++++
writing new private key to 'server.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [CN]:CN
State or Province Name (full name) [FJ]:FJ
Locality Name (eg, city) [FZ]:FZ
Organization Name (eg, company) [netgaming]:netgaming
Organizational Unit Name (eg, section) []:766
Common Name (eg, your name or your server's hostname) [server]:server
Email Address [support@766.com]:support@766.com
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:ty12245^Hc1
An optional company name []:766
Using configuration from /usr/local/src/software/openvpn-2.0.9/easy-rsa/2.0/openssl.cnf
Check that the request matches the signature
Signature ok
The Subject's Distinguished Name is as follows
countryName :PRINTABLE:'CN'
stateOrProvinceName :PRINTABLE:'FJ'
localityName :PRINTABLE:'FZ'
organizationName :PRINTABLE:'netgaming'
organizationalUnitName:PRINTABLE:'766'
commonName :PRINTABLE:'server'
emailAddress :IA5STRING:'support@766.com'
Certificate is to be certified until Sep 1 06:11:47 2019 GMT (3650 days)
Sign the certificate? [y/n]:y
1 out of 1 certificate requests certified, commit? [y/n]y
Write out database with 1 new entries
Data Base Updated
#生成客户端 key
代码:
#./build-key client1
[root@sever160 2.0]# ./build-key client1
Generating a 1024 bit RSA private key
...........................................++++++
.......++++++
writing new private key to 'client1.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [CN]:CN
State or Province Name (full name) [FJ]:FJ
Locality Name (eg, city) [FZ]:FZ
Organization Name (eg, company) [netgaming]:netgaming
Organizational Unit Name (eg, section) []:766
Common Name (eg, your name or your server's hostname) [client1]:client1
Email Address [support@766.com]:support@766.com
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:ty12245^Hc1
An optional company name []:766
Using configuration from /usr/local/src/software/openvpn-2.0.9/easy-rsa/2.0/openssl.cnf
Check that the request matches the signature
Signature ok
The Subject's Distinguished Name is as follows
countryName :PRINTABLE:'CN'
stateOrProvinceName :PRINTABLE:'FJ'
localityName :PRINTABLE:'FZ'
organizationName :PRINTABLE:'netgaming'
organizationalUnitName:PRINTABLE:'766'
commonName :PRINTABLE:'client1'
emailAddress :IA5STRING:'support@766.com'
Certificate is to be certified until Sep 1 06:19:03 2019 GMT (3650 days)
Sign the certificate? [y/n]:y
1 out of 1 certificate requests certified, commit? [y/n]y
Write out database with 1 new entries
Data Base Updated
依次类推生成其他客户端证书/key
代码:
#./build-key client2 //和client1的做法相同
#./build-key client3 //和client1的做法相同
注意在进入 Common Name (eg, your name or your server's hostname) []: 的输入时, 每个证书输入的名字必须不同.
build:
代码:
./build-dh //这步很重要
[root@sever160 2.0]# ./build-dh
Generating DH parameters, 1024 bit long safe prime, generator 2
This is going to take a long time
...+...........................................+.....+......+.+....................+.....................................................................+.......................+................+..+..................+.+.............................................................+.+..............+........................................................+...+.........................................+.................++*++*++*
使用ssh的FTP功能将keys下的所有文件下载到本地,以及把keys拷贝到/usr/local/openvpn/keys中
创建服务端配置文件
从样例文件创建:
代码:
#cd sample-config-files/ //进入源代码解压目录下的sample-config-files子目录
#mkdir /usr/local/openvpn/etc //新建openvpn配置文件存放目录
#cp server.conf /usr/local/openvpn/etc //cp服务器配置文件到/usr/local/etc
#vi /usr/local/openvpn/etc/server.conf
我建立的server.conf 的内容稍后另附.
创建客户端配置文件
代码:
#cd sample-config-files/ #进入源代码解压目录下的sample-config-files子目录
#cp client.conf /usr/local/etc #cp客户端配置文件到/usr/local/etc
#vi /usr/local/etc/client.conf
我建立的client.conf 的内容稍后另附.
启动Openvpn:
#cd /usr/local/openvpn/sbin/
#./openvpn --daemon --config /usr/local/openvpn/etc/server.conf
三. OpenVPN For Windows 客户端安装过程
安装 OpenVPN For Windows, 到 http://openvpn.se 下载. 目前的版本是 1.0.3. 注意: OpenVPN 的版本要和 OpenVPN Server 的版本配套.
配置 openvpn gui
安装结束后, 进入安装文件夹下的 config 目录, 然后将上面第 10 步建立的 client.conf 文件从 server 上下载到此文件夹, 并更名为 client.ovpn
同时, 将第8 步打包的 mykeys.tar 中的下列证书文件解压到此文件夹:
代码:
ca.crt
ca.key
client1.crt
client1.csr
client1.key
然后双击 client.ovpn 即可启动 openvpn, 或者通过 OpenVPN GUI 的控制启动 VPN.
如果双击 client.ovpn 没有反应, 则在任务栏点 OpenVPN GUI 的小图标右键, 选择 edit config, 将内容复制过去再保存. 然后再点右键中的 connect即可.
如果需要第二台机器上使用 vpn , 进行同样的配置, 只需要将 client1.crt, client1.csr, client1.key 换成对应的 client2.xxx 即可, 然后将 client.ovpn 中的对应key文件值改掉.
四. OpenVPN 配置样例文件
OpenVPN 服务端:server.conf
代码:
local 192.168.50.160
port 1194
proto udp
dev tun
ca /usr/local/openvpn/keys/ca.crt
cert /usr/local/openvpn/keys/server.crt
key /usr/local/openvpn/keys/server.key # This file should be kept secret
dh /usr/local/openvpn/keys/dh1024.pem
server 10.8.0.0 255.255.255.0
client-to-client
keepalive 10 120
comp-lzo
persist-key
persist-tun
status /usr/local/openvpn/openvpn-status.log
verb 4
push "dhcp-option DNS 218.85.157.99" # name server 地址, 如何获取见随后说明
push "dhcp-option DNS 218.85.152.99" # name server 地址, 如何获取见随后说明
上面示例中的 dns ip: 218.85.157.99, 218.85.152.99, 可以在 /etc/resolv.conf 中找到
#vi /etc/resolv.conf
nameserver 218.85.157.99
nameserver 218.85.152.99
OpenVPN 客户端: client.ovpn
代码:
client
dev tun
proto udp
remote 218.66.36.119 1194
persist-key
persist-tun
ca ca.crt
cert client1.crt //可以换成相应的client2.crt
key client1.key //可以换成相应的client2.key
ns-cert-type server
comp-lzo
verb 3
redirect-gateway def1 //这个非常重要,前几次一直失败的原因
五. OpenVPN 访问外网的设置
打开路由 VPN连接成功后, 还需要设置路由, 才能透过VPN访问Internet. 在 linux服务器上添加路由:
(备注:如果openvpn服务器不是直接接外网,只是接在局域网交换机上的一台普通线路上,则需要在路由器上添加一条到192.168.50.160的1194端口映射)
代码:
#iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j SNAT --to-source 192.168.50.160 (出口IP地址,和server.conf中local 192.168.50.160这个IP相同)
#/etc/init.d/iptables save
#/etc/init.d/iptables restart
不同的机器,-o eth0 参数可能不一样,具体可输入 ifconfig 查看,搞清 ip(192.168.50.160)所在的网卡号.
同时, 需要将 ip forward 打开. 不要用 echo 1 > /proc/sys/net/ipv4/ip_forward 的方式, 这种方式重启后无效. 先查看一下:
代码:
#sysctl -a | grep for
#查看结果:
net.ipv4.conf.tun0.mc_forwarding = 0
net.ipv4.conf.tun0.forwarding = 1
net.ipv4.conf.eth0.mc_forwarding = 0
net.ipv4.conf.eth0.forwarding = 1
net.ipv4.conf.lo.mc_forwarding = 0
net.ipv4.conf.lo.forwarding = 1
net.ipv4.conf.default.mc_forwarding = 0
net.ipv4.conf.default.forwarding = 1
net.ipv4.conf.all.mc_forwarding = 0
net.ipv4.conf.all.forwarding = 1
net.ipv4.ip_forward = 1
如果你的主机上列数值(*.forwarding)不是为1, 则要将其改成1。
代码:
#sysctl -w net.ipv4.conf.tun0.forwarding = 1
#sysctl -w net.ipv4.conf.eth0.forwarding = 1
#sysctl -w net.ipv4.conf.lo.forwarding = 1
#sysctl -w net.ipv4.conf.default.forwarding = 1
#sysctl -w net.ipv4.conf.all.forwarding = 1
#sysctl -w net.ipv4.ip_forward=1
(系统重启后所有forwarding又重置为0,所以把这些命令加入rc.local中)
//以下内容766可选
-----------开始--------------
开启域名服务器
如果你需要访问一些已经被GFW封掉了域名的网站, 但你的 OpenVPN 服务器没有被封的话,那么你需要在你的主机上开启 name server, 并将 dns push 给 client。 一般的独立主机, 都带有 private dns server.
代码:
rpm -qa | grep bind
/etc/init.d/named start
另外, 必须保证 server.conf 配置中, 有这三个配置:
代码:
push "dhcp-option DNS 10.8.0.1"
push "dhcp-option DNS 218.85.157.99" # name server 地址
push "dhcp-option DNS 218.85.152.99" # name server 地址
--------结束-------------
当 client 连接成功后, 在 cmd 下执行 ipconfig /all, 应该有这类似这样的输出:
代码:
Ethernet adapter 本地连接 4:
Connection-specific DNS Suffix . :
Description . . . . . . . . . . . : TAP-Win32 Adapter V8
Physical Address. . . . . . . . . : 00-FF-2B-EA-C0-89
Dhcp Enabled. . . . . . . . . . . : Yes
Autoconfiguration Enabled . . . . : Yes
IP Address. . . . . . . . . . . . : 10.8.0.26
Subnet Mask . . . . . . . . . . . : 255.255.255.252
Default Gateway . . . . . . . . . : 10.8.0.25
DHCP Server . . . . . . . . . . . : 10.8.0.25
DNS Servers . . . . . . . . . . . : 218.85.157.99
218.85.152.99
Lease Obtained. . . . . . . . . . : 2009年9月4日星期五 9:15:42
Lease Expires . . . . . . . . . . : 2010年9月4日星期六 9:15:42六. 设置 OpenVPN 服务器 reboot后自动启动 openvpn
执行命令:
代码:
vi /etc/rc.local 然后在最后面加入此行:
代码:
#/usr/local/openvpn/sbin/openvpn --daemon --config /usr/local/openvpn/etc/server.conf > /dev/null 2>&1 &
七. OpenVPN 测试
1、你可以用 VPN 登录上去之后, 测试 MSN, QQ, IE 等网络应用, 也可以尝试访问一些被 GFW 禁掉的网站, 当然, 前提是你的 VPN 服务器不在境内.
2、不连接VPN,打开www.ip138.com查看本机IP外网ip地址,然后连接VPN再打开一次,对比两次的IP地址。
七、常见问题:
1、 客户端本地连接没有网关
检查client.ovpn配置文件中是否有redirect-gateway def1
2、 可以拨内网的IP地址192.168.50.160,无法拨通218.66.36.119
检查客户端是否被限制访问外部网络
3、 提示证书无效
检查openvpn服务器的时间是否正确,如果不正确,请在修改时间后重新制作证书
4、 如何检查所有网络是否走VPN线路
Windows下使用命令tracert 218.85.157.99或者pathping 218.85.157.99
例如:
C:\>tracert 218.85.157.99
Tracing route to FJ-DNS.fz.fj.cn [218.85.157.99]
over a maximum of 30 hops:
1 1 ms <1 ms <1 ms 10.8.0.1
(第一跳是VPN服务器网关,如果不是这个说明失败)
2 1 ms 1 ms 1 ms 192.168.50.254(VPN所在网络网关)
3 2 ms 2 ms 2 ms 218.66.36.254
4 4 ms 1 ms 1 ms 220.160.92.105
5 2 ms 2 ms 2 ms 202.109.204.161
6 2 ms 1 ms 2 ms 218.85.156.90
7 * * * Request timed out.
8 3 ms 3 ms 4 ms FJ-DNS.fz.fj.cn [218.85.157.99]
Trace complete.
Linux下使用命令tracert 218.85.157.99或者tracertpaht 218.85.157.99
5、 为什么我在不同的电脑上拨VPN客户端得ip地址都是一样的呢?
检查你是否使用了同一个客户端证书
6、 为什么一台电脑拨号可以正常使用,当两台同时拨号就不行呢?
检查你是否使用了同一个客户端证书。
7、 断开VPN马上连接发现连接不上?
连接还未释放所以连不上,你修改本机的ip地址就能重新连接VPN了。
8、 OPENVPN有段时间没有使用,今天重新建证书,一切完毕之后发现连接上了却无法上网
现在的IP地址从160修改为222,NAT没有重新设置,于是打开/etc/sysconfig/iptables把NAT转发规则从:
-A POSTROUTING -s 10.8.0.0/255.255.255.0 -o eth0 -j SNAT --to-source 192.168.50.160
改为:
-A POSTROUTING -s 10.8.0.0/255.255.255.0 -o eth0 -j SNAT --to-source 192.168.50.222
搞定~~~~~
相关推荐
网络系统管理是IT领域中的一个重要组成部分,涉及到网络的规划、配置、监控、安全以及故障排除等多个方面。在“网络系统管理赛项软件包”中,包含的服务模块软件包、普通PC软件包、无线地勘系统等,都是网络管理员在...
安装OpenVPN 保护OpenVPN 在局域网中安装Orthanc ? 先决条件 Ansible> 2.5 Ansible> 2.9(用于SSH-sec角色) 在客户端计算机和服务器计算机之间已正确配置SSH身份验证。 安装 克隆项目并安装角色: git clone...
老毛子 Padavan 固件MI-R3G_3.4.3.9-099
linux企业实战运维入门到高级系列 ubuntu Centos ...自动化运维 安装kickstart文件(半自动化) ANSIBLE部署 企业级OpenVPN 安装OpenVPN 该笔记由刘森飚整理,版权归原作者所有 仅用于学习交流分享,如有争议请联系下架
综上所述,Linux交叉编译器3.4.5是为非x86架构设备构建软件的关键工具,其安装和使用涉及到配置、编译和环境设置等多个环节,对嵌入式开发至关重要。在实际操作中,开发者需要熟悉这些步骤,并根据具体项目需求进行...
本文将深入探讨一个特定的问题——如何解决在欧拉系统(openEuler-22.03)上安装深信服EasyConnect软件时出现的“segmentation fault”错误,并提供相应的解决方案。 首先,让我们了解一下欧拉系统。欧拉系统(open...
此外,还需要安装内核模块、建立配置文件,并制作YAFFS2根文件系统映像,以适应NAND Flash存储需求。 ##### 4. 设备驱动程序的开发与移植 设备驱动是嵌入式Linux系统中的重要组成部分,负责处理硬件设备的输入/...
网上收集来的,别问干什么用,我什么都不知道,给OPENWRT的GUI界面添加什么功能,配置某些功能方便点而已
- 示例组件,演示如何创建、配置和使用组件。 - 指令的实现,帮助理解自定义指令的编写。 - 路由配置,展示如何设置和导航到不同的页面。 - 表单的实现,包括模板驱动和响应式表单的代码。 - 服务的创建和使用,包括...
包括解压缩Linux内核源代码、应用补丁文件、配置Makefile、修改内核以支持TQ2440开发板等步骤。 文章还讨论了移植后的运行结果,证明了Linux内核可以成功移植到ARM9(TQ)平台上。 本文提供了一个详细的指导,帮助...
如果您的CentOS系统在安装时未取消"Base"选项,则krb5的相关包会默认安装。如果没有安装samba,可以通过以下命令进行安装: ```bash [root@filesrv CentOS]# rpm -ivh xinetd-2.3.14-10.el5.i386.rpm [root@filesrv...
安装MySQL还需要注意数据库数据目录的正确配置。如果在启动MySQL服务时遇到错误,例如无法加载共享库libaio.so.1,可以通过安装libaio包来解决问题。此外,如果碰到找不到MySQL服务路径的错误,则需要在MySQL的配置...
该资源为用脚本编写的适用于wireshark的一个新的协议。即当wireshark不能及时解析一些新的协议时,可以自己动手根据新协议字段编写解析文件。有新协议的话可以基于此脚本改写. 使用方法: 1. 打开wireshark根目录中...
3. **配置文件**:服务器端可能有数据库配置、XMPP服务器配置等文件,客户端可能有Google Cloud Messaging (GCM) 或 Firebase Cloud Messaging (FCM) 的配置。 4. **测试用例**:项目可能包含单元测试和集成测试,...
1. 测试前确保服务器配置正确,避免因服务器问题影响测试结果。 2. 设计多种测试场景,涵盖正常操作、边界条件和异常情况。 3. 详细记录和分析测试数据,以便找出性能瓶颈和潜在问题。 4. 定期重复测试,监控服务器...
在C/S模型中,Server需要认证Client的证书,而每一个Client持有独一无二的证书(比如一个设备的MAC地址),此时... 对了,忘了告诉大家了,你当前的目录里面一定要有个cert.cnf配置文件,自己手动生成的CA证书和CA key.
总的来说,解决CentOS7安装后无法联网的问题,关键在于正确配置网络接口的启动设置,并重启网络服务。通过了解和掌握这些基本的网络配置知识,不仅可以解决当前的问题,还能帮助你在未来处理类似的问题,提升你的...
第二台服务器托管openvpn服务和该网站的nginx服务器配置要允许传入连接,请在Web控制台中配置端口和相应的安全性列表重新配置iptables以允许流量Nginx服务器配置-Postfix,dovecot,rspamm和MySql 克隆此仓库,并...
OpenConnect GUI 这是openconnect VPN的GUI客户端。 该客户端处于beta测试阶段。 不能假定它提供了所需的安全性。 查看项目网页以获取详细描述,屏幕截图和其他相关项目。支持平台Microsoft Windows 7及更高版本...