说明:

1、必须要有一台机器具有外网IP的ECS。

2、如果不想配置具有外网IP的ECS时,可以购买NAT网关,但需要钱,贵。下面会说明NAT网关的配置。

3、最后吐槽一下阿里云VPC网关导致不能按照配置普通网关一样配置(参考:https://www.cnblogs.com/EasonJim/p/10206728.html),必须结合VPC配置0.0.0.0/0来进行下一跳,不然你在ECS怎么设置都无法成功。其实这个问题是由于VPC本身最上层做了NAT,并通过route查看会发现253这个地址有VPC占用,无论怎么配置0.0.0.0的下一跳都会先转到253这个地址。

下面是具体的配置:

环境:

ECS1(没外网IP):172.18.6.247

ECS2(有外网IP,其实是VPC做了NAT):172.18.6.248

1、具有外网IP的ECS2配置网关:

# 开启转发
echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
# 生效
sysctl -p
# 配置iptables做SNAT
iptables -t nat -I POSTROUTING -s 172.18.6.0/24 -j SNAT --to-source 172.18.6.248
# 上述可以理解成:iptables -t nat -I POSTROUTING -s VPC的IP段 -j SNAT --to-source 有公网IP的ECS内网IP

2、在VPC增加0.0.0.0/0的下一跳为ECS2实例

那么此时在登录ECS1时,不用设置网关或者设置了网关都可以访问外网。

3、如果要做DNAT时,如下操作即可:

iptables -t nat -I PREROUTING -p tcp --dport 50022 -j DNAT --to 172.18.6.247:22
# 可以这样理解: iptables -t nat -I PREROUTING -p tcp --dport 外网IP的ECS端口 -j DNAT --to 只有内网IP的ECS的IP:端口

4、如果想要换成够买NAT网关来实现时,上面的配置基本不用,直接在VPC上这样配置即可实现上面SNAT和DNAT的全部功能。

参考:

https://yq.aliyun.com/articles/607330

阿里云CentOS 7无外网IP的ECS访问外网(配置网关服务器)的更多相关文章

  1. 阿里云CentOS使用iptables禁止某IP访问

    在CentOS下封停IP,有封杀网段和封杀单个IP两种形式.一般来说,现在的攻击者不会使用一个网段的IP来攻击(太招摇了),IP一般都是散列的.于是下面就详细说明一下封杀单个IP的命令,和解封单个IP ...

  2. 阿里云服务器 - node启动服务的时候只有监听内网IP才可以供外网访问

    阿里云服务器 - node启动服务的时候只有监听内网IP才可以供外网访问

  3. 在VMWare下为CentOS设置静态IP通过NAT访问外网

    一.背景 安装好的CentOS系统默认是通过DHCP自动分配地址来共享主机的IP以达到访问外网的目的,但是因为莫名的原因无法访问外网.只好改为通过静态IP的方式访问外网. 二.操作步骤 2.1 确认开 ...

  4. 阿里云centos postgresql9.4源码安装 精简步骤、问题解答

    阿里云centos环境源码安装postgresql9.4 本文的安装步骤主要来源于http://www.cnblogs.com/mchina/archive/2012/06/06/2539003.ht ...

  5. 阿里云Centos+Django+Nginx+uWSGI

    针对系统中自带的Python2.7版本 1.安装python-devel yum install python-devel 2.安装uwsgi pip install uwsgi 3.测试uwsgi是 ...

  6. 阿里云centos 安装和配置 DokuWiki

    安装 1) 添加虚拟主机:由于我的 阿里云CentOs服务器 安装了oneinstack的一键部署PHP.JAVA.Nginx等环境,所以域名配置很方便,照着文档一步一步做就可以了 cd /root/ ...

  7. 阿里云centos中mysql的安装及一些常识知识

    -------------------------------------------------------------------    阿里云centos中mysql的安装 工具WinSCP v ...

  8. 阿里云Centos 7安装MongoDB 4.2.0

    背景:最近公司项目需要将后台接口优化到100ms内.因此需要对接口逻辑,数据优化做处理, 正好使用到了Redis缓存,mysql,mongoDB的优化,今天记录一下在阿里云centos上安装mongo ...

  9. VMWare中CentOS7 设置固定IP且能够访问外网

    最近搭建kubernetes集群环境时遇到一个问题,CentOS7在重启后IP发生变化导致集群中etcd服务无法启动后集群环境变得不可用,针对这种情况,必须要对CentOS7设置固定IP且可以访问外网 ...

随机推荐

  1. Java第三阶段学习(七、线程池、多线程)

    一.线程池 1.概念: 线程池,其实就是一个容纳多个线程的容器,其中的线程可以重复使用,省去了频繁创建线程对象的过程,无需反复创建线程而消耗过多资源,是JDK1.5以后出现的. 2.使用线程池的方式- ...

  2. Windows 7 编译64位boost库

    1. 官网下载boost 2. 解压boost到D:\Library\boost_1_64_0 3. 打开 VS2015 x64 本机工具命令提示符,输入 "d:" 回车,再输入 ...

  3. spark学习之路1--用IDEA编写第一个基于java的程序打包,放standalone集群,client和cluster模式上运行

    1,首先确保hadoop和spark已经运行.(如果是基于yarn,hdfs的需要启动hadoop,否则hadoop不需要启动). 2.打开idea,创建maven工程.编辑pom.xml文件.增加d ...

  4. js隐藏元素

    js隐藏元素 $("#serviceType").css('display','none'); js显示元素 $("#serviceType3").css('d ...

  5. 20165235 祁瑛 Java第四周考试总结

    20165235 祁瑛 Java第四周考试总结 课后习题p29 p45 代码编写 import java.util.*; class Example2_5{ public static void ma ...

  6. POJ 2251 Dungeon Master (非三维bfs)

    Dungeon Master Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 55224   Accepted: 20493 ...

  7. java.io.File中字段的使用

    File.pathSeparator指的是分隔连续多个路径字符串的分隔符,例如:Java   -cp   test.jar;abc.jar   HelloWorld就是指“;” File.separa ...

  8. Git submodule 仓库中包含另外的仓库(子仓库)

    Git submodule 仓库中包含另外的仓库(子仓库) 添加 submodule 在父仓库 git 目录下: git submodule add ssh://ip/[path]/xxx.git 注 ...

  9. POJ 3177 Redundant Paths (边双连通+缩点)

    <题目链接> <转载于 >>>  > 题目大意: 有n个牧场,Bessie 要从一个牧场到另一个牧场,要求至少要有2条独立的路可以走.现已有m条路,求至少要新 ...

  10. jsonp突破浏览器同源策略

    jsonp突破浏览器同源策略 <!DOCTYPE html> <html lang="en"> <head> <meta charset= ...