本文主要描述如何在Linux下(以CentOS6.7为例)构建一个开放式服务器。
Open××××基本介绍:
OpenXXX是一个开源的守护进程,easy-RSA提供了一些简单的CA证书工具。
XXX原则:
简单来说,客户端主机A与***服务器B建立连接(可以是TCP,也可以是UDP),通过***client(在××××客户端与×××服务器建立连接后形成)在客户端主机A上创建虚拟网卡A。这个虚拟网卡A通过XXX服务器的开放端口与XXX服务器B上的另一个虚拟网卡B(在XXX服务启动后形成)建立所谓的“私有连接”通道。连接成功后,根据XXX服务器B上的配置,在客户端主机A上建立一条路由,根据这条路由,当客户端A要访问某些特定网络(可以有多个特定网络)时,会
建立实验环境:
实验环境可以用VMware等虚拟化软件模拟,开放的×××服务器可以有单网卡或双网卡。单网卡无非是在原有网卡的基础上配置一个虚拟网卡。以双网卡为例。
实验环境的拓扑图如下:
(1)XXX客户甲:
windows8+Open×××2.3.4x86_64-w64-mingw32[SSL(OpenSSL)][LZO][PKCS11][IPv6]构建于2014年6月5日
1:192.168.1.228网卡
(2)XXX服务器B:
CentOS版本6.7(最终版)
Linuxlocalhost.localdomain2.6.32-573.3.1.el6.x86_64#1SMP2013年8月13日星期四22:55:16UTC2015x86_64x86_64x86_64GNU/Linux
开放×××版本:开放××××2.3.8(gitsource)
1:192.168.1.182网卡
2:10.20.0.129网卡
(3)服务器C(用于进一步测试XXX连接):
1:192.168.1.113网卡(假设没有这个地址,这个地址与本实验无关,列出来是为了不让读者在阅读以下内容时产生混淆)
2:10.20.0.130网卡
打开XXX安装步骤:
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-develS2。从github获取开放的×××源代码,选择稳定版本的分支,生成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 installS3。配置开放的×××服务器。
S3.1配置开放×××XXX
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编辑打开×××的主配置文件。上一步配置文件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 3S4。配置OpenXXX服务器和客户端证书,使客户端可以通过证书登录OpenXXX。
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和服务器证书。
source vars ./clean-all ./pkitool --initca ./pkitool --server server ./build-dhS4.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。启动开放的×××XXX服务,准备测试。
打开内核转发参数:
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×××XXX服务。
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有问题(当时没有具体问题的截图和文字记录),可能是因为没有加载模块。可以通过“modprobeiptable_nat”命令加载nat模块,然后通过“lsmod|grepnat”命令确认已经正确加载到内核中。
下面是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检查打开的×××服务器b上的日志。
打开服务器b上的×××网卡信息
打开的×××服务器上显示的客户端连接日志信息
服务器B上的网卡和IP信息
打开的×××客户端上的IP信息(显示子网掩码为255.255.255.252,可以先忽略,不影响连接)
S6。在步骤S4.4中生成的客户端证书被发送到Windows客户端,并且Windows的openxx客户端被配置为连接到openxx服务器。
客户端的证书也在/root/easy-RSA/easy-RSA/2.0/keys的路径下,只需要client-Christthink430.p12的证书。
如何安装Windows?只需将证书放在打开的×××XXX安装路径下的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×××的一些难点或技巧:
1.如果没有×××,很难得到开放的×××安装包和文档支持,github可以解决。您应该通过适当的分支选择适当的版本和客户端。
2.需要理解2.iptables防火墙的后路由和伪装。其原理是通过SNAT将某个网络的地址转换(封装、伪装)成某个网卡的地址,从而达到内网渗透的目的。
如iptables-tNAT-arouting-s10.8.0.0/24-oeth1-j伪装,即当源地址为10.8.0.0/24网段时,将这些地址伪装成eth1网卡的地址,实现内网穿透。比如10.8.0.6(开放×××客户端地址)。当这个地址想访问10.20.0.130(服务器B地址)时,实际上是通过10.20.0.129(开放×××服务器eth1地址)出去的。
最后列举一些文章供参考:
1.开×××××配置http://blog.chinaunix.net/uid-26835604-id-3484906.html1下。Linux
2。iptableshttp://blog.csdn.net/jk110333/文章/details/8229828
3中SNAT、DNAT和假面舞会的含义。Ubuntu简单客户端配置https://help.ubuntu.com/lts/serverguide/open***.html#open***-简单客户端配置
标签:Linux配置是开放的×××,Linux安装是开放的×××,开放的××是开放的
-结束-
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)