本文主要讲述如何在Linux(以CentOS6.7为例)环境中搭建***(Open***)服务器。

Open***基本介绍:

Open***是开源的***守护进程(daemon),easy-RSA提供一些简易的CA证书工具。

***原理:

简单讲就是客户端主机A通过与***服务器B建立连接(可以是TCP也可以是UDP),通过***客户端在客户端主机A上创建一个虚拟网卡a(***客户端与***服务器端连接建立后形成),这个虚拟网卡a通过***服务器开放的端口与***服务器B上的另一块虚拟网卡b(***服务启动后形成)建立所谓的“私有连接”通道,在连接成功后,根据***服务器B上的配置,在客户端主机A上建一条路由,根据这一条路由使得客户机A想访问某些特定网络(特定网络可以有多条)时就走这条***通道,实现网络***实际上就是一个代理的作用,相当于一个踏板。

搭建实验环境:

实验环境可以通过VMware等虚拟化软件软件模拟,Open***服务端可以单网卡也可以双网卡,单网卡无非就是在原先网卡的基础上配置一个虚拟网卡,此处以双网卡为例。

实验环境拓扑图如下:

(1)***客户端A:

Windows 8 + Open*** 2.3.4 x86_64-w64-mingw32 [SSL (OpenSSL)] [LZO] [PKCS11] [IPv6] built on Jun  5 2014

网卡1:192.168.1.228

(2)***服务器B:

CentOS release 6.7 (Final)

Linux localhost.localdomain 2.6.32-573.3.1.el6.x86_64 #1 SMP Thu Aug 13 22:55:16 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux

Open***版本:Open*** 2.3.8 (git source)

网卡1:192.168.1.182

网卡2:10.20.0.129

(3)服务器C(用于进一步测试***连通性):

网卡1:192.168.1.113(假设没有此地址,此地址与本次实验无关,之所以列出是为了不使读者阅读下面的内容时感到困惑)

网卡2:10.20.0.130

Open***安装步骤:

S1.安装基本软件包,用于编译安装open***和解决open***相关的依赖包

yum -y install gcc gcc-c++
yum -y install autoconf
yum -y install automake
yum -y install libtool
yum -y install gettext
yum -y install lzo lzo-devel
yum -y install pam-devel

S2.从github获得Open***的源码,选择一个稳定版本的分支,生成configure等文件,编译安装

git clone git@github.com:Open***/open***.git
git checkout -b 2.3 remotes/origin/release/2.3
autoreconf -i -v -f
./configure --prefix=/usr/local/open***
make
make install

S3.配置Open***服务端

S3.1配置Open***

cp distro/rpm/open***.init.d.rhel /etc/init.d/open***
ln -s /usr/local/open***/sbin/open*** /usr/sbin/open***
mkdir /usr/local/open***/etc
ln -s /usr/local/open***/etc /etc/open***
cp sample/sample-config-files/server.conf /etc/open***/

S3.2编辑Open***主配置文件,上一步的配置文件sample-config中的注释能帮助你很好的理解每一个字段的内容,在此就不详细讲解了,一看就懂。

vim /etc/open***/server.conf    # grep -v ^# /etc/open***/server.conf | grep -v ^$ | grep -v ^\;     port 1194     proto udp     dev tun     ca ca.crt     cert server.crt     key server.key  # This file should be kept secret     dh dh2048.pem     server 10.8.0.0 255.255.255.0     ifconfig-pool-persist ipp.txt     push "route 10.20.0.0 255.255.255.0"  push "dhcp-option DNS 114.114.114.114"     push "dhcp-option DNS 8.8.4.4"     client-to-client     duplicate-cn     keepalive 10 120     comp-lzo     persist-key     persist-tun     status open***-status.log     log         open***.log     verb 3

S4.配置Open***服务器和客户端证书,使客户端通过证书登录Open***

S4.1从github获得easy-RSA的源码,用于生成服务端、客户端证书,可以用openssl工具单独生成

cd
git clone git@github.com:Open***/easy-rsa.git
git checkout -b 2.x remotes/origin/release/2.x
cd easy-rsa/easy-rsa/2.0/

S4.2编辑证书配置信息

vim vars    # grep -v ^# vars | grep -v ^$     export EASY_RSA="`pwd`"     export OPENSSL="openssl"     export PKCS11TOOL="pkcs11-tool"     export GREP="grep"     export KEY_CONFIG=`$EASY_RSA/whichopensslcnf $EASY_RSA`     export KEY_DIR="$EASY_RSA/keys"     echo NOTE: If you run ./clean-all, I will be doing a rm -rf on $KEY_DIR     export PKCS11_MODULE_PATH="dummy"     export PKCS11_PIN="dummy"     export KEY_SIZE=2048     export CA_EXPIRE=3650     export KEY_EXPIRE=3650     export KEY_COUNTRY="CN"     export KEY_PROVINCE="Shandong"     export KEY_CITY="Qingdao"     export KEY_ORG="51devops"     export KEY_EMAIL="chris@51devops.com"     export KEY_OU="chris"     export KEY_NAME="EasyRSA"

S4.3.生成服务器证书,包括CA和Server证书

source vars
./clean-all
./pkitool --initca
./pkitool --server server
./build-dh

S4.4.生成客户端证书

# ./pkitool client-christhinkt430
./pkitool --pkcs12 client-christhinkt430
\cp -f keys/ca.crt /etc/open***/
\cp -f keys/server.crt /etc/open***/
\cp -f keys/server.key /etc/open***/
\cp -f keys/dh2048.pem /etc/open***/

S5.启动Open***服务,准备测试

开启内核转发参数:

vim /etc/sysctl.conf
net.ipv4.conf.default.accept_source_route = 1
net.ipv4.conf.default.rp_filter = 0
net.ipv4.ip_forward = 1

配置iptables内网转发并启动Open***服务

iptables -I INPUT -m state --state NEW -m udp -p udp --dport 1194 -j ACCEPT
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth1 -j MASQUERADE
service iptables save || iptables-save > /etc/sysconfig/iptables
service open*** start

如果iptables提示nat有问题(具体问题当时没有截图和文字记录),可能是因为模块没有加载,可以通过“modprobe iptable_nat”命令加载nat模块,再通过“lsmod  | grep nat”命令确认它已经正确加载到内核中。

此处额外列一下iptables文件(/etc/sysconfig/iptables)的内容,以便于参考:

# Generated by iptables-save v1.4.7 on Tue Sep 15 09:50:41 2015
*filter
:INPUT ACCEPT [95751:71225675]
:FORWARD ACCEPT [2:120]
:OUTPUT ACCEPT [18830:1205082]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -p udp -m state --state NEW -m udp --dport 1194 -j ACCEPT
#-A INPUT -j REJECT --reject-with icmp-host-prohibited
#-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
# Completed on Tue Sep 15 09:50:41 2015
# Generated by iptables-save v1.4.7 on Tue Sep 15 09:50:41 2015
*nat
:PREROUTING ACCEPT [8758:1233668]
:POSTROUTING ACCEPT [467:144522]
:OUTPUT ACCEPT [466:144462]
-A POSTROUTING -s 10.8.0.0/24 -o eth1 -j MASQUERADE
COMMIT
# Completed on Tue Sep 15 09:50:41 2015

查看Open***服务器B上的日志

Open***服务器B上的网卡信息

Open*** 服务器上显示的Client连接日志信息

服务器B上的网卡和IP信息

Open***客户端上的IP信息(上面显示子网掩码为255.255.255.252先可以忽略,不影响连接)

S6.将S4.4步骤中生成的客户端证书传输到Windows客户端上,配置Windows的Open***客户端使之能连接Open***服务器

客户端的证书同样也在/root/easy-rsa/easy-rsa/2.0/keys路径下,只需要client-christhinkt430.p12这个证书即可。

Windows如何安装将证书放到Open***安装路径下的config文件夹下即可,并创建一个.o***的配置文件。配置文件内容如下:

remote 192.168.1.182 1194 udp
persist-key
tls-client
pull
dev tun
persist-tun
comp-lzo adaptive
nobind
pkcs12 client-christhinkt430.p12

用管理员权限打开Open***客户端,选择“connect”即可,如果连接成功,会有如下提示信息,原先的灰色小图标也会变成绿色。

此时就可以连接Open***服务器后端的内网地址了,如下图所示,表示连接成功。

简单总结:

配置Open***的一些难点或技巧:

1.如果不***,获取Open***安装包和文档支持比较困难,可以通过github的方式解决,要通过合适的branch选择合适的release以及客户端等

2.iptables防火墙的POSTROUTING、MASQUERADE需要理解,它的原理就是通过SNAT将某一段网络的地址转化(封装、伪装)成某一个网卡上的地址,以达到内网穿透的目的

例如iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth1 -j MASQUERADE,它的意思是源地址为10.8.0.0/24网段时,将这些地址伪装成eth1网卡的地址,实现内网穿透,例如10.8.0.6(Open***客户端地址)这个地址要访问10.20.0.130(服务器B地址)时,实际是通过10.20.0.129(Open***服务器eth1的地址)这个地址出去的。

最后列举一些可供参考的文章:

1.Linux下Open***配置  http://blog.chinaunix.net/uid-26835604-id-3484906.html    
2.iptables中SNAT、DNAT和MASQUERADE的含义 http://blog.csdn.net/jk110333/article/details/8229828    
3.Ubuntu Simple Client Configuration https://help.ubuntu.com/lts/serverguide/open***.html#open***-simple-client-configuration

tag: Linux配置Open***,Linux安装Open***,Open***配置,Open***防火墙配置,CentOS编译安装Open***

--end--

CentOS6.7安装Open***服务端相关推荐

  1. epel源mysql版本_linux增加epel源,yum安装nignx,脚本安装mysql服务端,shell脚本监控网站页面...

    epel是一种yum仓库,里面提供了更多.更丰富linux软件,但是,它不是默认yum仓库,我们需要手工添加这个yum源. 添加epel源 然后,找到fedora-epel, 在列表里找到:6serv ...

  2. linux增加epel源,yum安装nignx,脚本安装mysql服务端,shell脚本监控网站页面

    epel是一种yum仓库,里面提供了更多.更丰富linux软件,但是,它不是默认yum仓库,我们需要手工添加这个yum源. 添加epel源 参考:http://freeloda.blog.51cto. ...

  3. 编译安装rabbitmq服务端

    有一种方式是:下载rabbitmq-server-generic-unix压缩包,是不用编译的.是已经编译好的源码了 下面介绍编译源码安装   总括: 需要以下步骤:   1.安装erlange.因为 ...

  4. mac bash file密码_Mac系统 | 菜鸟程序员项目模拟数据迁移,会安装Mysql服务端吗

    在中小公司做项目,关系型数据库一般用的比较多的是MySQL.项目从开发到上线的过程中,公司会提供虚拟机服务器数据库中的数据给自己进行本地开发和测试.在开发过程中,我也发现公司只是提供数据库服务端的ip ...

  5. 安装Kerberos服务端和客户端

    简介 Kerberos认证流程 环境准备 安装Kerberos服务端 yum安装 yum install krb5-server krb5-libs krb5-workstation -y vim / ...

  6. CentOS 7下安装pptp服务端手记

    主要配置步骤 安装前检查系统支持 a. 在安装之前查看系统是否支持PPTP modprobe ppp-compress-18 && echo success 应该输出:success ...

  7. Linux下yum安装SVN服务端

    Linux下yum安装SVN服务端 1.查看yum是否安装 2.安装svn 3.创建目录并配置 4.用户密码passwd配置 5.权限控制authz配置 6.服务svnserve.conf配置 7.启 ...

  8. Win7下安装SVN服务端

    目录 背景 svn安装包 操作步骤 1.创建仓库 2.基础设置 创建服务 开放端口 参考文献 背景 因为同事的苹果本无法修改mac地址连接内网,无论下驱动也好,命令方式也好,都无法修改mac,打客户电 ...

  9. Windows安装VNC服务端

    下载VNC服务端 由于服务器在IDC机房,只能使用系统自带远程桌面连接到服务器进行安装VPC服务端 但在安装过程发现,如果是通过远程桌面连接到服务器进行安装,VNC Mirror Driver会报错无 ...

  10. linux 安装svn服务端

    最近需要在服务器配置svn,在网上找了很多资料,很多文章写的比较繁琐,思路也不是很清晰,本人最后在博客园找到了一篇文章,按照他的思路完成了svn服务端的配置,各位可以关注一下他的博客小茗同学的博客园, ...

最新文章

  1. cmake java_JNI系列之AS支持CMake了
  2. c语言图形库怎样画一条弧线,自己写的一个图形库,有点问题.来请教大家了
  3. 16.刚体碰撞事件监测与处理
  4. Windows Phone 二、WP控件
  5. Python Redis
  6. 【读书笔记】程序员的自我修养总结(七)
  7. JavaScript之document.cookie
  8. 以《英雄联盟》为例,看影响MOBA游戏策略的3个层面
  9. 同余最短路(P3403 跳楼机)
  10. Spring @Lazy批注用例
  11. hive插件 ranger_Apache Ranger及Hive权限控制
  12. 最详细的YOLOv3论文笔记
  13. BZOJ3938 UOJ88:[集训队互测2015]Robot——题解
  14. C语言爬虫程序,simspider
  15. item系列内置方法重构类
  16. aws lambda_在AWS Lambda上运行“ Hello World”
  17. nginx配置ssl证书的方法
  18. c语言免杀程序源码,ghost源码免杀教程 步
  19. MATLAB绘图:导出矢量图
  20. elasticsearch+logstash+kibana+filebeat+kafka

热门文章

  1. 使用Xdebug调试和优化PHP程序[3]
  2. freemarker必须指定模板文件夹吗?
  3. C++笔记(6)友元
  4. 对象释放函数kmem_cache_free核心函数slab_free的实现详解
  5. C语言中可变参数的宏 __VA_ARGS__
  6. DPDK分析——UIO
  7. WiFi 接口创建过程
  8. FreeSWITCH黑名单功能设置
  9. 内核调试神器SystemTap — 探测点与语法(二)
  10. scala 单例对象 伴生对象