设为首页 收藏本站
查看: 919|回复: 0

[经验分享] 大用户量下Open***部署方案(一)

[复制链接]

尚未签到

发表于 2019-1-26 14:36:19 | 显示全部楼层 |阅读模式
  前段时间公司有个项目需要数以千计的客户端都连入一个***下,并且有一部分需要获得固定的ip地址。
  思路:简单的open***服务器部署起来并不难,但是大量的用户,如果采用简单的证书方式,批量生成客户证书不难,但是如此大量的证书如何分发给客户也是个问题。所以经过考虑采用用户名密码的验证方式,然后批量生成连续的用户名和密码,客户端分发可以给与客户端一个用户名密码段,由客户自行分发。
本文先介绍第一部分:配置基本的open***服务器
  1、下载安装open***

  我用的是2.2.1版本的。open***官网天朝是访问不了的需***。
    open***依赖于openssl库且使用lzo(lzo 和lzo-devel)进行压缩,安装前请执行yum install openssl* 和 yum install lzo*

*** ~]# tar zxvf open***-2.2.1.tar.gz
*** ~]# cd open***-2.2.1
*** ~]# ./configure --prefix=/usr/local/open*** --with-lzo-headers=/usr/include --with-lzo-lib=/usr/lib         
*** ~]# make
*** ~]# make install  安装过程中若有报错,多是依赖的包未安装的问题,baidu/google之。
  2、生成根证书、服务端证书以及客户端证书
*** ~]# cd /usr/local/src/open***-2.2.1/easy-rsa/2.0/
注:从2.3.0版本开始,easy-rsa组件已经作为一个独立的项目,不再附带与open***的安装包里(若yum安装的话,直接yum install easy-rsa即可)
*** ~]# vi vars                      #修改变量,亦可在稍后生成证书的过程中逐项手动更改
        ...
       export KEY_COUNTRY="US"
       export KEY_PROVINCE="CA"
       export KEY_CITY="SanFrancisco"
       export KEY_ORG="Fort-Funston"
       export KEY_EMAIL="me@myhost.mydomain"
       export KEY_EMAIL=mail@host.domain
       export KEY_CN=changeme
       export KEY_NAME=changeme
       export KEY_OU=changeme   
       export PKCS11_MODULE_PATH=changeme
       export PKCS11_PIN=1234
编辑好vars文件后,执行  
*** ~]# ./vars                                #使修改的变量值生效
*** ~]# ./clean-all                           #清除keys目录中所有文件
*** ~]# ./build-ca                            #按提示执行完所有步骤
*** ~]# ./build-key-server server-key-name    #生成服务端证书及key
*** ~]# ./build-key client                    #生成客户端证书及key,多个客户端可执
                                              行多次此步骤生成多个client端文件
*** ~]# ./build-dh                            #生成传输进行密钥交换时用到的交换密钥协议所需
文件  3、在/etc下建立open***文件夹以便于集中管理open***配置文件以及证书和key文件

*** ~]# cd /usr/local/src/open***-2.2.1/easy-rsa/2.0
*** ~]# mkdir -p /etc/open***
*** ~]#cp -Rp keys /etc/open***
*** ~]#cd /usr/local/src/open***-2.2.1/sample-config-files
*** ~]#cp server.conf /etc/open***/
  4、修改服务器端配置文件(主要解释一下我们会用到的,其余看注释基本应该可以明白)
[root@51-DB 2.0]# grep -v "#" /etc/open***/server.conf | tr -s '\n'
;local a.b.c.d       #默认监听本地所有网卡,可修改
port 1194
;proto tcp
proto udp
dev tun
ca /etc/open***/keys/ca.crt                      #根证书及服务器端证书以及dh文件路径,用绝对路
                                                  径
cert /etc/open***/keys/mysql***.crt
dh /etc/open***/keys/dh1024.pem
topology subnet                                 #官方推荐的拓扑,但是不是默认的,默认的是net30
                                                #可参考https://community.open***.net/open***/wiki/Topology
server 10.8.0.0 255.255.0.0                     #分配给客户端的IP网段,此处默认是24位的掩码,我
                                                #们根据客户端数量可以改为16位的掩码
ifconfig-pool-persist /etc/open***/ipp.txt      #此文件用于记录每个客户端所获取到的ip尽
                                                  量保证客户端每次都获取到同样的ip.如果通过第二
                                                  篇所讲的为每个客户端指定IP,则不在此文件记录
push "route 192.168.100.0 255.255.255.0"        #向客户端推送一条路由,可以让客户端访问
                                                #到服务器后端的局域网的机器
client-to-client                                #是否允许各客户机之间可见,
;duplicate-cn                                   #是否设置多个客户端共用一套客户端证书
keepalive 10 120
comp-lzo                                        #启用lzo压缩
max-clients 1000                                #控制最大客户端数量
user nobody                                     #以nobody用户运行
group nobody
persist-key
persist-tun
status    /etc/open***/open***-status.log                  
;log         open***.log
log-append    /var/log/open***.log                #日志选项,将日志追加到指定的文件中
verb 4                                          #此选项参数控制日志输出信息的详细程度
;mute 20  启动open***:/usr/local/open***/sbin/open*** --daemon --config /etc/open***/server.conf
  5、客户端设置
  关于客户端设置,之前走了些弯路吧,一直在寻找open***的客户端(最终寻得可用的客户端为“open***-2.0.9-gui-1.0.3-install.exe”和“open***-client.msi”)。但是,后来发现官方就提供了客户端,例如对应2.2.1版本的“open***-2.2.1-install.exe”,之前的过程有点舍近求远了。
  (open***-2.0.9-gui-1.0.3-install.exe和open***-2.2.1-install.exe安装后的目录结构和用法一致)
  客户端要安装open*** gui工具(这个找起来还挺麻烦,还是***去官网下载比较靠谱)用2.09版本的可以。
  安装客户端,将对应的文件(ca证书、client证书、client key)拷贝至客户端安装目录下的config目录,客户端可将安装目录下的sample-config文件夹下的client.o***拷贝至openv-gui安装目录下的config,修改将remote my-server 1194中的my-server改为自己服务器的ip地址即可。
  注意:win7环境“Open*** GUI”要以管理员运行,同时下客户端配置文件还需增加两条配置
route-method   exe
route-delay    2  这样才能正确的在机器中添加路由,否则会在Log文件中看到类似的信息:
  ROUTE: route addition failed using CreateIpForwardEntry: 至少有一个参数不正确。

  注:open*** gui在没有将各种证书及key导入config文件夹之前右键点击是如下显示的


  没有连接选项,正确添加根证书及用户key之后,会显示如下

  到这里如果正常的话,就已经可以连接到open***服务器了,在本机可以ping通服务器的tun0及其他网口的ip。但通常仅这样是无法满足我们需求的,我们还需要从本机能连通服务端所在内网的其他机器。
  6、服务器端iptables和route相关的配置
  引用一段官网的内容
  Once the *** is operational in a point-to-point capacity between
client and server, it may be desirable to expand the scope of the *** sothat clients can reach multiple machines on the server network, rather
than only the server machine itself.

  For the purpose of this example, we will assume that the server-side LAN uses a subnet of 10.66.0.0/24 and the *** IP address pool uses 10.8.0.0/24 as cited in the server directive in the Open*** server configuration file.
  First, you must advertise the 10.66.0.0/24 subnet to *** clients as being accessible through the ***. This can
easily be done with the following server-side config file directive:

push "route 10.66.0.0 255.255.255.0"  Next, you must set up a route on the server-side LAN gateway to route the *** client subnet (10.8.0.0/24) to the Open*** server (this is only necessary if the Open*** server and the LAN gateway are different machines).
  必须在服务器端的内网网关上将到10.8.0.0/24网段的路由指向到open***服务器,不然从服务器端内网其他机器根本找不到去往10.8.0.0/24网段的路由。这里又分两种情况,一种是服务端有内网网关设备的(按如上说法即可);一种是服务端内网没有网关设备,即服务器通过交换机相连,相互通讯靠广播的情况。我的就是这种情况。需要在想访问的server上增加到10.8.0.0/24的路由,如下
route add -net 10.8.0.0/24 gw 192.168.1.211    #1.211为open***服务器的内网IP  Make sure that you've enabled IP and TUN/TAP forwarding on the Open*** server machine.(在服务器侧网关设备上增加到***网段的路由设置)
  确定开启了转发功能,然后在open***服务器Iptables添加如下两条规则
iptables -A FORWARD -i tun0 -s 10.8.0.0/24 -j ACCEPT    #简单说,允许数据从客户端到后端server
iptables -A FORWARD -i em2 -d 10.8.0.0/24 -j ACCEPT    #允许数据从后端server到客户端  另外,如果想让客户端的出口ip变成*** server的ip,需要 在server.conf配置文件里将下面行的注释放开
  push "redirect-gateway def1"
  然后在iptables添加如下两条规则
  filter表
  -A FORWARD -s 10.8.0.1/24 -o em1 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -d 10.8.0.1/24 -i em1 -m state --state RELATED,ESTABLISHED -j ACCEPT

  nat表(针对分公网私网网卡的情况):
  -A POSTROUTING -s 10.8.0.1/24 ! -d 192.168.1.0/24 -o em1 -j MASQUERADE
  后加:经试验在阿里云vpc网络环境下,即使不想“如果想让客户端的出口ip变成*** server的ip”也需添加如下nat表:
  -A POSTROUTING -s 10.8.0.1/24 -j MASQUERADE
  至此,基本的基于证书认证的open***可说是实现了。下一篇将记录给客户端指定用户IP地址、批量生成用户名密码。
  最后一点:在部署过程中不可能一帆风顺,有错误看日志:server端日志的存储位置在server.conf里可以指定,client端日志右击open*** GUI软件可以查看。
  再附上open***接收的几个信号,方便管理
Running on Linux/BSD/Unix
Open*** accepts several signals:
    SIGUSR1 -- Conditional restart, designed to restart without root privileges
    SIGHUP -- Hard restart
    SIGUSR2 -- Output connection statistics to log file or syslog
    SIGTERM, SIGINT -- Exit




运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-667897-1-1.html 上篇帖子: Open the blog 下篇帖子: Camtasia录制时出现video codec open failed错误的解决方法
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表