前段时间写了一篇有关open***搭建与内网机器通讯的文章,那篇文章是基于服务器单网卡进行配置的,文章连接为《烂泥:open*** tun模式下客户端与内网机器通讯》。ubuntu
这篇文章咱们再来介绍下双网卡open***客户端与内网机器通讯的配置。centos
1、需求说明安全
为何要写open***双卡的配置?服务器
是由于通常IDC机房都是提供多网卡服务器,同时目前比较流行的云服务器阿里云提供的也是双网卡,而腾讯云以及亚马逊的aws都是单网卡。各个云服务器商的网卡配置个数,以下图:tcp
2、业务要求ide
如今IDC机房那边有一台服务器配A配置的是双网卡,一块配置的是公网IP(173.33.141.50),一块配置的是内网IP(10.10.1.17)。另外在这个IDC机房内的其余服务器,为了安全起见,配置都是的内网IP10.10.1.0/24网段的。测试
如今要求很简单,经过服务器A管理内网的其余服务器。阿里云
3、解决方案spa
为了达到上述要求,咱们能够在服务器A上搭建open***服务,而后客户端经过这台open***服务器做为跳板机管理内网服务器。3d
open***的搭建很简单,能够参考这篇文章《烂泥:ubuntu 14.04搭建Open×××服务器》。
这里有个难点就是客户端与内网服务器通讯的问题。
open***客户端与内网服务器通讯问题,若是是单网卡的话,咱们只须要按照《烂泥:open*** tun模式下客户端与内网机器通讯》这篇文章进行操做便可。
那么服务器双网卡如何配置呢?
其实双网卡的配置,其实和单网卡的配置差很少,都是要修改open***服务的配置文件和配置iptables规则。只是iptables规则改变下了而已,下面咱们实际配置下。
4、open***具体配置
open***服务配置文件内容以下:
grep -vE '^;|^$|^#' /etc/open***/server.conf
port 1194
proto tcp
dev tun
ca ca.crt
cert ilanni.crt
key ilanni.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.10.1.0 255.255.255.0"
push "dhcp-option DNS 223.5.5.5"
client-to-client
duplicate-cn
keepalive 10 120
comp-lzo
persist-key
persist-tun
status open***-status.log
log open***.log
verb 3
上述open***服务配置文件中,push "route 10.10.1.0 255.255.255.0"这条命令必定要有,它是推送给客户端的路由配置。
5、IPtables配置
open***配置完毕后,咱们如今开始配置open***服务器的IPtables规则。
如今服务器的网卡配置以下:
ifconfig
经过上图,咱们能够看到网卡em2是和内网进行通讯的,咱们如今须要作的就是把全部从open***客户端(10.8.0.0/24)请求到10.10.1.0/24网段的数据所有假装成网卡em2(10.10.1.17)发出的。也就是说须要在iptables上作一个NAT规则。
命令以下:
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o em2 -j SNAT --to-source 10.10.1.17
iptables -nL -t nat
上述命令的意思是把全部来自10.8.0.0/24网段的请求假装成10.10.1.17这个IP地址,而后经过em2这个网卡发出。
也能够直接修改iptables的配置文件,以下:
-A POSTROUTING -s 10.8.0.0/24 -o em2 -j SNAT --to-source 10.10.1.17
而后从新加载iptables规则。
若是是centos系统的话,直接使用/etc/init.d/iptables restart命令重启iptables。
若是是ubuntu系统的话,使用sudo iptables-restore /home/Ubuntu/iptables.rule。
6、测试通讯状况
open***服务与iptables规则都配置完毕后,如今咱们切换到客户端进行测试。
客户端链接open***服务器,以下:
open*** --config lianzhou.o*** &
经过上图,咱们能够很明显的看出客户端已经正确链接open***服务器,而且得到10.8.0.6这个IP地址。
如今咱们再来测试它与10.10.1.0/24网段的连通状况,以下:
ping 10.10.1.12
经过上图,咱们能够很明显的看到客户端已经能够与10.10.1.12正常通讯。
如今咱们再来尝试链接下10.10.1.12这台机器,以下:
telnet 10.10.1.12 22
经过上图,咱们能够很明显的看出客户端已经能够链接10.10.1.12这台服务器。
若是客户端在链接内网服务器中出现以下的错误提示:
telnet: Unable to connect to remote host: No route to host
这个通常是open***服务器的iptables规则不正确致使的,建议是先使用iptables –F命令清除iptables规则保留nat规则进行调试。