OPENVPN+Centos6.6(Server)+Windows7_64(Client)

环境介绍:

外网IP: 119.119.119.119

内网网络:192.168.0.0/16

OPENVPN: 192.168.98.88

内网办公机:192.168.0.5

系统环境:

OPENVPN:Centos6.6_64   2.6.32-504.12.2.el6.x86_64  openvpn-2.3.6

Client:Windows 7_64

Centos用作openvpn服务端,客户端通过安装windows版openvpn软件进行连接内网。

禁用selinux,清空防火墙规则。

# sed -i ‘/SELINUX/s/enabled/disabled/‘ /etc/selinux/config

# grep disabled /etc/selinux/config

#     disabled - No SELinux policy is loaded.

SELINUX=disabled

# iptables -F

# iptables -nL

Chain INPUT (policy ACCEPT)

target     prot opt source               destination

Chain FORWARD (policy ACCEPT)

target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)

target     prot opt source               destination

2. 开启路由转发功能呢,保证拨入vpn后可连接到内部网络。

# echo "net.ipv4.ip_forward = 1" >/etc/sysctl.conf ;sysctl -p

3. 安装openvpn服务端,通过yum方式来进行安装,这里使用epel的yum源。

# rpm -ivh http://mirrors.ustc.edu.cn/fedora/epel//6/x86_64/epel-release-6-8.noarch.rpm

# yum install openvpn easy-rsa

4. 创建openvpn配置目录,拷贝配置脚本到指定目录下

# mkdir -p /etc/openvpn/easy-rsa/keys

# cp -rf /usr/share/easy-rsa/2.0/* /etc/openvpn/easy-rsa/

5. 准备创建CA证书文件,修改vars文件中变量值。国家、省、城市、组织、邮箱、单位

# vim /etc/openvpn/easy-rsa/vars

export KEY_COUNTRY="CN"

export KEY_PROVINCE="BJ"

export KEY_CITY="Beijing"

export KEY_ORG="TEST"

export KEY_EMAIL="[email protected]"

export KEY_OU="TEST"

6. 到easy-rsa目录下,拷贝openssl配置文件,并且引用之前修改的文件,使变量生效。

# cd /etc/openvpn/easy-rsa/

# cp openssl-1.0.0.cnf openssl.cnf

# source ./vars

7. 初始化证书授权中心,创建CA证书,输出信息中已经引用了之前所设置的变量值,这里一路回车即可

# ./clean-all

# ./build-ca

8. 创建服务端证书和密钥。

# ./build-key-server server

9. 创建客户端证书和密钥。

# ./build-key client

10. 创建Diffie Hellman 参数,Diffie Hellman 用于增强安全性,在OpenVPN是必须的。

# ./build-dh

11.至此所需证书及密钥都已经生成完毕。拷贝服务端所需证书到/etc/openvpn下

# cp dh2048.pem ca.crt server.crt server.key /etc/openvpn/

12.拷贝客户端需要用到的证书文件,这里使用sz命令进行下载到本地

# sz ca.crt client.crt client.key

13.拷贝服务端配置文件,并编辑添加相关内容。

# cp /usr/share/doc/openvpn-2.3.6/sample/sample-config-files/server.conf /etc/openvpn/

# vim /etc/openvpn/server.conf

local 192.168.98.88 #监听本地ip

port 11940      #监听端口这里使用11940

push "dhcp-option DNS 114.114.114.114" #openvpn可以在配置中支持DNS设置

push "dhcp-option DNS 8.8.4.4"

push "route 192.168.0.0 255.255.0.0" #本地内网网段

14. 服务端配置完成,启动程序,查看是否监听11940的udp端口,默认为udp,并且看到多出来一块网卡tun0,IP为10.8.0.1

# service  openvpn start

# lsof -i :11940

COMMAND   PID USER   FD   TYPE  DEVICE SIZE/OFF NODE NAMEopenvpn 13420 root    7u  IPv4 6688438      0t0  UDP 192.168.98.88:11940 # netstat -anuActive Internet connections (servers and established)Proto Recv-Q Send-Q Local Address               Foreign Address             State

udp        0      0 192.168.98.88:11940         0.0.0.0:*

# ifconfig tun0

tun0      Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00

inet addr:10.8.0.1  P-t-P:10.8.0.2  Mask:255.255.255.255

UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1500  Metric:1

RX packets:2949 errors:0 dropped:0 overruns:0 frame:0

TX packets:2763 errors:0 dropped:0 overruns:0 carrier:0

collisions:0 txqueuelen:100

RX bytes:299160 (292.1 KiB)  TX bytes:2198503 (2.0 MiB)

所有服务端都已经配置完毕,现在可以到客户端进行测试

windows客户端安装openvpn-install-2.3.0-I001-x86_64.exe客户端。

2.将客户端证书文件拷贝到安装目录的config目录下。

3.拷贝安装目录下sample-config下的client.ovpn也放到config下面。

并修改remote my-server-1 1194 改为 remote 119.119.119.119 11940

由于openvpn服务端在内网,所以还需到路由器上面做下端口映射,将119.119.119.119的11940映射到192.168.98.88的11940端口

4.启动客户端,可看到分配了一个10.8.0.5的ip,现在ping 192.168.98.88可以通,访问10.8.0.1也通。

客户端到openvpn服务器的网络已经连通,如果想访问内网所有设备,还需要在内网的路由器上面加一条路由条目,将访问10.8.0.0网段的指向192.168.98.88,这样外面就可以连接其他内网设备了。

这里是只开通一台机器来进行测试,把自己办公电脑添加到10.8.0.0的路由,实现拨入vpn后,连接自己办公电脑,所有操作均通过办公电脑来进行跳板操作。

在cmd命令行添加静态路由:route -p ADD 10.8.0.0 MASK 255.255.255.0 192.168.98.88

在外网连接VPN后可通过远程桌面对办公电脑进行操作,从而对内网其他服务器进行操作。

时间: 2024-11-06 04:23:38

OPENVPN+Centos6.6(Server)+Windows7_64(Client)的相关文章

distributed programming---lab1(basic communication of server and client)

socket() creates an endpoint for communication and returns a file        descriptor that refers to that endpoint. The lab is about basic communication of server and client. The server is iterative server which only serves one client at a time. The so

javamail 发送邮件时 No authentication mechansims supported by both server and client

项目需求要更换发邮件服务器,变更成中转邮箱服务器发邮件.结果总是报 No authentication mechansims supported by both server and client . 搜了一堆东东,都不靠谱最后自己不断调试成功搞定.借鉴网址如下: http://stackoverflow.com/questions/8615730/javamail-with-ms-exchange-no-authentication-mechansims-supported-by-both-s

ubuntu下mysql安装(server、client、dev),开启、停止和重启,及常见错误

1. 在ubuntu下安装server和client很简单: (1)安装server apt-get install mysql-server 安装当中,会提示输入root账户的密码,按提示输入即可. 安装后默认开启了server (2) 安装client apt-get install mysql-client 2. 安装mysql的c语言开发接口 apt-get install libmysqlclient15-dev 3. 开启.关闭.重启 一.启动 1.使用 service 启动:ser

JVM Server与Client运行模式

JVM Server模式与client模式启动,最主要的差别在于:-Server模式启动时,速度较慢,但是一旦运行起来后,性能将会有很大的提升.原因是: 当虚拟机运行在-client模式的时候,使用的是一个代号为C1的轻量级编译器, 而-server模式启动的虚拟机采用相对重量级,代号为C2的编译器. C2比C1编译器编译的相对彻底,,服务起来之后,性能更高. java -version 可以直接查看出你使用的是client还是 server Jvm client代码: C:\Documents

TCP server和client的一些测试

一.TCP server和client测试   socket设置 测试项/测试情景 send recv 测             server block           client block                                                                                              

TCP server和client

一.server和client整体流程(及Unix下的socket API) 1. int socket(int domain, int type, int protocol); 根据指定的地址族.数据类型和协议来分配一个socket的描述字及其所用的资源. domain:协议族,常用的有AF_INET.AF_INET6.AF_LOCAL.AF_ROUTE其中AF_INET代表使用ipv4地址 注: 头文件socket.h中有 #define AF_INET PF_INET type:socke

Winsock网络编程笔记(3)----基于UDP的server和client

在上一篇随笔中,对Winsock中基于tcp面向连接的Server和Client通信进行了说明,但是,Winsock中,Server和Client间还可以通过无连接通信,也就是采用UDP协议.. 因此,这一篇随笔也简单的列举基于UDP的Server和Client的实现.. 和基于TCP的实现相比,其主要的不同点包括: ①接收端(简单地说就是服务器)/发送端(简单地说就是客户端)在创建Socket时候,参数要选择SOCK_DGRAM, IPPROTO_UDP: ②接收端不需要调用listen和ac

浅谈Android系统进程间通信(IPC)机制Binder中的Server和Client获得Service Manager接口之路

文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/6627260 在前面一篇文章浅谈Service Manager成为Android进程间通信(IPC)机制Binder守护进程之路中,介绍了Service Manager是如何成为Binder机制的守护进程的.既然作为守护进程,Service Manager的职责当然就是为Server和Client服务了.那么,Server和Client如何获得S

解决Linux 下server和client 通过TCP通讯:accept成功接收却报错的问题

今天在写简单的TCP通讯例子的时候,遇到了一个问题:server 和client能够连接成功,并且client也能够正常发送,但server就是接收不到,在网上搜索一番后,终于解决了问题.在这里整理如下: 大家要注意的是,一个server端可以连接多个client端,server端的accept()函数负责等待并接收client的连接请求,而且accept()函数将不同client端的sockfd作为返回值.为了保证接收到对应的client端数据,所以在client连接成功且使用recv()函数