AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 722222
Accepted
Tom
Tom
Asked: 2015-09-15 08:50:31 +0800 CST2015-09-15 08:50:31 +0800 CST 2015-09-15 08:50:31 +0800 CST

使用 3rd-party API 时如何解决 IP 白名单?

  • 772

我们使用的服务的 API 将拒绝请求,除非源 IP 先前已被列入白名单。他们只给了我们 3 个插槽,这是一个问题,因为我们有超过 3 台机器需要使用 API。

解决此问题的最常用技术是什么?

注意:我不会尝试违反 3rd-party API 的条款和条件。我们正在使用ResellerClub,我联系他们要求更多插槽,但他们回答:

我请求您将您的服务器路由到几组 IP。

因此这个问题。


想法:

  • 我在想我们可以通过运行一种充当中间人的代理来解决这个问题。我们没有向第 3 方发出 API 请求,而是向我们的代理发出请求,该代理将请求反弹给第 3 方,因此所有请求似乎都来自他们眼中的一个 IP。有没有做这种事情的通用软件?这样做似乎比下面的想法更简单,但我错了吗?
  • 我应该研究使用“一个 NAT 实例”吗?例如http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_NAT_Instance.html。它看起来很复杂 - 没有更简单的解决方案吗?(运行具有额外网络复杂性的额外实例是一种耻辱)。
  • 既然我们使用了 Docker,那么Weave是否相关?
  • 我们可以将静态 IP 附加到 VPC 网关吗?我看到使用 AWS Storage Gateway (来源)是可能的——但不确定常规的 vpc igw 吗?

我们的架构:我们使用 AWS 并让我们的实例在 ELB 后面运行的 VPC 中。我们经常在事先不知道 IP 地址的情况下启动新实例。我们在所有机器上运行相同的软件。这些机器运行 CoreOS,我们的应用程序在 Docker 容器中运行。

proxy
  • 2 2 个回答
  • 1969 Views

2 个回答

  • Voted
  1. Best Answer
    HBruijn
    2015-09-15T10:20:39+08:002015-09-15T10:20:39+08:00

    一个相当常见的基础设施是一个实际应用程序服务器都没有公共 IPv4 IP 地址的基础设施,它们将位于负载平衡器后面的 RFC 1918 专用网络范围内,并且它们发出的任何传出请求都是:

    • 通过 NAT 网关路由,呈现单一源 IP 地址的外观
    • 必须通过代理服务器进行,​​该代理服务器在私有 IP 范围和更大的互联网之间架起桥梁
    • 7
  2. Tom
    2015-09-26T03:04:22+08:002015-09-26T03:04:22+08:00

    我想我会发布更新,因为该项目现在使用 NAT 实例成功完成。

    我应该研究使用“一个 NAT 实例”吗?它看起来很复杂 - 没有更简单的解决方案吗?

    现在 NAT 实例已全部设置完毕,最初的复杂感觉已经过去,实际上感觉非常简单 - 甚至比以前更干净(因为被迫使用私有子网是一种安全提升)。

    AWS 的官方 NAT 实例设置说明运行良好:http ://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_NAT_Instance.html 。我们使用 Amazon 提供的 AMI 来启动 NAT 实例。经历了这个过程,它让我意识到它是多么的“行业标准”,甚至可能是“最佳实践”。

    缺点:

    1. NAT 实例成为单点故障。由于来自我们网络服务器的所有外部流量都通过它进行路由,如果它失败,实例将无法访问互联网以接收软件更新,调用外部 API(例如支付网关),我们将无法通过 SSH 访问实例。
    2. 运行额外的机器需要花钱,而且需要更多的维护。(t2.small不是很贵,而且库存的 AMI 不需要修改,所以不是一个巨大的维护负担)。
    3. 实例将具有较慢的外部网络连接。(到目前为止,我还没有注意到差异)。
    4. 我们不能直接通过 SSH 进入实例,我们需要通过 NAT 实例(使用 SSH 代理)。这听起来比现在更糟。如果你花几分钟编辑.ssh/config和阅读“ ProxyCommand”,你可以让事情 100% 透明,这样使用就ssh server1可以了。
    5. 我们不能再通过使用它的公共 IP(或拥有特定机器的 DNS 记录)来测试集群中的特定服务器。这是你很快克服的事情。如果您确实需要确保使用一台机器,一种解决方法是创建一个新的 ELB,并且只将您想要定位的机器放入实例池中。
    • 2

相关问题

  • 持续监控许多服务器运行状况的简单方法?

  • Web 代理脚本与 http 代理的效率?

  • 为将笔记本电脑带回家的用户模拟公司代理

  • 什么是 Microsoft 代理客户端(MSP 客户端)

  • 使用大量 javascript 的页面上的鱿鱼速度很慢

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve