场景如下.我有两台机器A和B:A:客户端(NAT后面)B:服务器(NAT后面)
我希望B能够侦听任何给定的端口,以便A可以通过该特定的TCP端口向B发送数据包并接收任何响应.如果两台机器都不在NAT后面,那么这是一个非常直接的过程.但是,我如何使其工作,以便即使B在路由器后面,它没有他必须改变路由器配置启用一些端口转发等工作...
例如,如果没有用户配置任何东西,像torrent客户端这样的点对点程序如何工作?
有人可以向我解释在两个场景的负载均衡器(v2)的后端实际发生了什么:
应用入站NAT规则.
应用负载平衡规则.
快速介绍我的场景:我有一个 VPC,其中包含一个 API 网关,该网关将其调用重定向到我的 Lambda 函数,然后它们访问 RDS 实例和外部 API 调用(互联网访问)。
由于函数需要访问 RDS,我将 RDS 和 Lambdas 放在同一个 VPC 中,在没有公开访问的情况下正确保护 RDS。现在,由于 Lambda 位于 VPC 中,因此它们需要一个 NAT 网关来访问互联网(几乎所有这些功能都需要调用第三方 API),这就是我面临的一个巨大问题。
我有一个小项目为几个用户(从 10 到 200 个用户不等)提供服务,并且使用我创建的无服务器设置,我预计每个月的费用为 3.00 美元到 10.00 美元。这是成本没有一个单一的NAT网关。现在,如果我们加上网关的价格,即每小时 0.045 美元- 我什至没有考虑每 GB 传输的数据 0.045 美元 -每月超过 30 美元。如果我不创建另一个多可用区并减轻可能的可用区故障,我会很愚蠢 - 所以2 个 NAT 网关 > 60.00 美元。
这不仅对我来说不切实际,而且它不会也使通常遵循按需方法的整个无服务器结构的要点无效吗?
我的替代方法之一是将 Lambdas 移出 VPC(意味着没有 VPC)并通过某种机制访问 RDS,而不使其公开访问 - 这也是我失败的地方,如何安全地访问 RDS …
我遇到了一个有趣的问题.基本上我有两部手机都在NAT之后.我想使用UDP直接在2台设备之间进行通信.
我知道如果我发起从电话到服务器的连接,那么我可以将数据推回到与电话的连接(即从收到消息的同一端口将其发送回收到的相同IP和端口) .所以我可以通过将两部手机连接到服务器来轻松地在两台设备之间进行通信.然后将数据发送到服务器并将其重新路由回电话.这绕过了我可能遇到的任何NAT遍历问题.
但是我宁愿只使用服务器将2个设备指向对方,然后让它们直接通信.我该怎么做呢?是否可以不使用像uPnP这样的东西?
任何帮助都会很有用!
编辑:我发现这个文件http://www.brynosaurus.com/pub/net/p2pnat/它看起来像发夹翻译是我所追求但它看起来并没有被广泛支持.我想知道移动ISP对UPnP的支持有多好?
在我看来较新的Android设备在NAT后面,那里的本地地址是内部的载体或LAN地址与公网地址是路由器或运营商分配的外部地址运行.
然而,使用NetworkInterface时,较新的电话不会像访问IP检测服务时那样返回相同的地址.
因此,通过直接P2P SocketChannel连接本身就会失败.
针对Android平台设计此问题是否有任何常见的解决方法?任何人都可以澄清导致这种类似NAT的安全问题的原因吗?
任何指向Java NAT遍历教程或示例(不是论文或论文)的链接也会被视为有用(因为我不太确定如何在Java中实现它).
我当然也会接受任何人提供的任何其他解决方案!
我最感兴趣的是移动设备的一般答案,但特定于Android的东西是可以接受的.
给定2个移动设备,我如何在它们之间建立连接.我是移动开发的新手,我不确定是什么类型的NAT移动设备.是否可以进行某种"打孔"(使用外部服务器来帮助建立连接)将它们连接在一起?
我看过这个问题,但它对我没有多大帮助,我仍然不知道如何获取IP和/或遍历NAT. Android - 两台设备之间的通信
我正在尝试使用c#构建一个简单的VoIP应用程序,所以我发现这Ozeki SDK
是一种简单的方法,但是当我尝试使用SIPAccount
来自Ozeki SDK
和我的本地的类注册SIP帐户时,IP
它总是失败,这就是代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Ozeki.VoIP;
using Ozeki.VoIP.SDK;
namespace SIP_R
{
class Program
{
private static ISoftPhone softphone; // softphone object
private static IPhoneLine phoneLine; // phoneline object
private static void Main(string[] args)
{
// Create a softphone object with RTP port range 5000-10000
softphone = SoftPhoneFactory.CreateSoftPhone(5000, 10000);
// SIP account registration data, (supplied by your VoIP service provider)
var registrationRequired = true;
var userName …
Run Code Online (Sandbox Code Playgroud) 当我配置 NAT 网关时,我必须选择一个子网,因此据我所知,一个 NAT 网关对应一个属于一个可用区的子网。
然后我看到了下面的声明
如果您有多个可用区中的资源并且它们共享一个 NAT 网关,如果 NAT 网关的可用区宕机,其他可用区中的资源将无法访问互联网,要创建独立于可用区的架构,请创建一个 NAT 网关并配置您的路由以确保资源使用同一可用区中的 NAT 网关。
如果我在不同的子网中有多个 EC2,它们如何共享一个 NAT 网关?我理解错了吗?下面是我尝试创建 NAT 网关时看到的屏幕截图
在维护网络时,运行透明代理通常是一件有用的事情.透明代理我指的是一个"劫持"传出连接并通过本地服务运行它们的代理.具体来说,我运行一个配置了squid的linux防火墙,以便端口80上的所有tcp/ip连接都由squid代理.
这是使用iptables'nat'表,使用IPv4获得的.
但IPv6的iptables没有'nat'表,所以我不能使用相同的实现.我可以使用什么技术透明地代理IPv6连接的流量?
我们正在实施基于SIP的解决方案,并已将设置配置为与RTPProxy一起使用.现在,我们通过RTPProxy路由一切,因为我们在依赖ICE的媒体传输方面存在一些问题.如果我们没有弄错的话,如果它们落后于对称NAT,则需要一个中央中继服务器来在两个客户端之间中继流数据.在实践中,这是否占所有消费者用户的很大比例?如果我们在没有必要时实施适当的路由以跳过中继服务器,我们将节省多少带宽.我们缺少更好的解决方案吗?