由于公网IP资源越来越紧张,现在很多运营商给拨号上网的用户只分配内网IP地址,如下图所示:
成都创新互联公司专注于企业全网营销推广、网站重做改版、陆河网站定制设计、自适应品牌网站建设、H5页面制作、商城建设、集团公司官网建设、外贸网站制作、高端网站制作、响应式网页设计等建站业务,价格优惠性价比高,为陆河等各大城市提供网站开发制作服务。
这样的运营商内网IP是外网不可达的(即使用动态域名也不起作用)。而企业由于业务需要,比如虚拟局域网组网、办公OA系统、ERP系统等,都需要有公网IP才可以实现。公网IP的解决,目前主要有三种方案:
申请固定IP专线。稳定且速度有保障,缺点是费用高。
云方案。把业务主机都搬到云上,直接通过云主机来访问。费用比较低,缺点是云主机不能本地维护,且搬迁工作量都不小。
云主机+内网穿透方案。通过云主机做跳板来实现内网穿透,既可以复用现有的业务系统,又解决了公网IP的问题。第三种方案的成本是最低的,但是配置比较复杂。本文将对第三种方案做详细介绍。
在没有公网IP如何实现×××组网?一文中,我们介绍了虚拟局域网组网部分。我们要介绍的方案,分为两个步骤:1). 本地局域网和云主机之间搭建虚拟局域网。2). 在云主机上配置内网穿透的防火墙规则。具体步骤如下:
首先要在云主机上安装虚拟局域网软件,配置ca证书等,网络上已经有很多介绍,我就不再赘述了。下图是最终的server端config文件。
然后是客户端配置。在WSG的客户端中,配置上云主机的IP和端口、用户名密码等信息。即可成功组网。如图:
组建虚拟局域网后,本地局域网就和云主机处于同一个局域网内。我们再通过iptables配置一些防火墙规则,就可以把外网访问重定向到局域网内部;原理和端口映射是一样的。命令如下:
每一条内网穿透(端口映射)都由两条iptables命令组成:
DNAT:iptables -t nat -A PREROUTING -p tcp --dport xx -j DNAT --to-dest x.x.x.x
SNAT:iptables -t nat -A POSTROUTING -d x.x.x.x -p tcp --dport xx -j SNAT --to-source y.y.y.y
其中,x.x.x.x是局域网内网主机的IP地址,y.y.y.y是云主机的内网网段IP。
经过上述配置后,直接访问云主机的对应端口就可以穿透到内网。该方案是由iptables做数据包转发,不需要保持连接做反向代理,稳定性和速度都比frp之类的反向代理要好的多。要实现开机自动添加规则的话,只需要把这两条iptables命令添加到/etc/rc.local文件中。