陈奇网络工作室

如何让没有外接IP的云主机服务器具备外网接入能力?

本文的内容

显示

1.

Linux设置了一个简单的路由器来访问外部网络

2.

购买云服务提供商NAT网关以访问外部网络

2.1.

推荐阅读

在云企业集群环境下,不可能给所有云主机都配备外网ip,所以有些机器不会具备外网能力。但是并不是所有的云厂商都在内网提供yum服务,需要安装软件的时候会比较麻烦。如下图所示,只有机器B可以访问外部网络。

此时,如果想让A和C都访问外网,应该怎么做?想想家庭网络环境,一根光纤,一个外网IP,一个路由器,家里所有的电脑和手机都可以上网。所以我们这里缺少一个路由器。现在让B机做兼职路由器。

Linux设置了一个简单的路由器来访问外部网络

直接在机器B上运行以下脚本:

#!/bin/bash

#Auth:dige

#博客:https://hqidi.com

#时间:2018-10-2 09:40:47

#Name:route.sh

#版本:1.0版

echo 1/proc/sys/net/IP v4/IP _ forward

iptables-t NAT-A post routing-s 10 . 13 . 110 . 198-o eth 0-j SNAT到源10.13.185.186

iptables-t NAT-A post routing-s 10 . 13 . 80 . 128-o eth 0-j SNAT到源10.13.185.186

脚本解析:

echo 1/proc/sys/net/IP v4/IP _ forward

该命令是开启linux系统的路由转发功能,暂时生效(系统重启后无效)。要永久生效,请编辑/etc/sysctl.conf文件,添加一行net.ipv4.ip_forward=1 (centos6默认有此配置行,但值为0,所以必须修改为1)。

iptables-t NAT-A post routing-s 10 . 13 . 110 . 198-o eth 0-j SNAT到源10.13.185.186

反汇编这个长命令:

Iptables -t nat:操作Iptables的nat表,用于网络地址转换。

-A POSTROUTING:向POSTROUTING链添加规则。

-s 10.13.110.198:当源IP为10.13.110.198时。

-o eth0:从eth0转发数据。

——jSNAT:做SNAT手术。

to-source 10.13.185.186:将最初发送的数据包的源地址从10.13.110.198更改为10 . 13 . 185 . 186。

集成是这样的:

当A机接入互联网的数据包到达B机时,B机上的iptables从eth0转发数据包,将数据包的源地址改为10.13.185.186(正常情况下应该改为B机的外部ip,现在云服务提供商还没有将外部IP直接绑定到centos系统,也就是说B机外部还有一层NAT)。

如果太复杂,我们可以把它改成更简单的脚本:

#!/bin/bash

#Auth:dige

#博客:https://hqidi.com

#时间:2018-10-2 09:47:47

#Name:route.sh

#版本:2.0版

echo 1/proc/sys/net/IP v4/IP _ forward

iptables-t NAT-A post routing-o eth 0-j伪装

这个脚本的转发性能没有上面那个高,但是很简单,不考虑外网IP,源地址,目的地址。

执行脚本:/route.sh

然后将A机和C机的默认路由设置为b机的内网IP,一开始A机和C机吵着说“我要上网,我要上网”,上不去。当你设置默认路由为B机时,就相当于回复A机和C机说你要上网就去B机,他知道路。在a和c机器上执行:

路由添加默认gw 10.13.185.186 eth0

此时,A机和C机都可以连接到互联网。图中顶部绿色箭头已连接。但是,外部用户想要访问C机应该怎么做呢?如果C机提供web服务,很容易说nginx直接安装在B机上作为反向代理。如果想直接从外网ssh到机器C,我们来解一下图底部的蓝色箭头。

只需要在机器B上操作:

iptables -t nat -A预路由-d 106.115.15.86-p TCP-dport 22128-j DNAT-to-destination 10 . 13 . 80 . 128:22

当请求访问外部网络的端口22128时,将请求转发到内部网络10.13.80.128的端口22。此时图中最右边的用户应该是以10.13.80.128加端口22128的形式访问C机。

购买云服务提供商NAT网关以访问外部网络

老话说得好,有钱能使鬼推磨。

刚才我们自己做了一个路由器,很折腾。先说简单的方法,买个路由器。

云服务提供商专门提供了一款产品“NAT Gateway”来满足我们的上述需求。

阿里云NAT网关:https://help.aliyun.com/product/44413.html

腾讯云NAT网关:https://cloud.tencent.com/product/nat

UCloud Youke NAT Gateway:https://console.ucloud.cn/vpc/natgw

解除原本绑定到B机的EIP,然后绑定到NAT网关。

外部网络模式选择白名单模式,然后添加所有没有外部网络IP的计算机:

这样,第一张图中的绿色箭头就连接起来了。

配置端口转发实现外网ssh连接:

这样,第二张图中的蓝色箭头就起作用了。

转载自笛子

西部数码代理(chenqinet.cn)是工信部批准的正规老牌云服务商,拥有ISP、云牌照、IDC、CDN全业务资质。自成立以来,二十多年来一直专注于域名注册,虚拟主机云服务器,企业邮箱,企业网站建立等互联网基础服务!

公司开发的云计算平台以便捷、高效、高性价比、意想不到的售后优势占领市场,跻身国内前三的接入服务商,为国内超过50万家网站提供高速稳定的托管服务!先后荣获中国高新技术企业、中国优秀云计算服务商、中国十大IDC企业、中国最受欢迎云服务商等称号!

目前西部数码代理高性能云服务器在售,最低仅售48元!

http://zhuji.chenqinet.cn/cloudhost/

后台-系统设置-扩展变量-手机广告位-内容页底部广告位3