标签: nat

NAT端口转发的最佳选择是什么?

我想让用户轻松将NAT上的端口转发到我的C++应用程序的本地机器上.我想在OSX和Windows上做这个工作.Linux将是一个很好的奖励,但Linux用户可能更容易手动转发端口,所以它不是一个问题.LGPL类型代码没问题,但我不能使用任何直接GPL.

我很想听听任何人在这个领域有过的想法或经历,但我想到了一些具体的问题:

  • UPNP是否有公认的最佳图书馆?该MiniUPNP客户端看起来可能会奏效,但还有什么在那里?
  • Bonjour怎么样?我可以将它用于OSX计算机吗?
  • 所有大型的bittorrent应用程序都必须处理这个问题,所以现有的调查是如何进行的吗?Skype怎么样?

tcp bonjour upnp nat portforwarding

7
推荐指数
1
解决办法
1995
查看次数

.Net WCF NAT遍历的最佳实践

我正在寻找.Net中点对点NAT遍历的建议或解决方案.假设我有一个聊天应用程序,两个客户端需要连接,但两者都在NAT后面:

对于家庭场景,uPNP可能没问题,因为只涉及电缆调制解调器或消费者路由器.但是,uPNP无法实现的企业环境呢?

我熟悉UDP穿孔,可以握手,但我宁愿不依赖它来传输真实的应用数据.

我也研究过IPv6和Teredo,但我不确定每个客户端都有IPv6可用性,并且对于所有Teredo要求(服务器,中继等)都有点混乱.

这是2011年和IM /聊天客户已经存在了十年,然后一些 - 所以我相信这个问题已经解决了很多次.任何人都可以推荐这方面的最佳实践吗?提前致谢!

.net wcf p2p nat nat-traversal

7
推荐指数
1
解决办法
1341
查看次数

用于此设置的Linux nat/iptables配置

我有一个4 linux(CentOS)机器的实验设置:

在此输入图像描述

所有4台机器都使用不同的网络进行内部连接,并且可以ping其他直接连接的接口.但是只有PC4才能访问互联网.

我正在尝试设置iptable规则,允许PC1能够通过PC4访问互联网,但我不知道如何做到这一点.

我试图在PC2,PC3和PC4的出接口添加NAT:

iptables -t nat -F POSTROUTING
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
Run Code Online (Sandbox Code Playgroud)

但是,这不起作用,你能不能给我一些想法如何在这样的设置中我可以使PC1访问10.0.0.1网络?

linux routing iptables nat

7
推荐指数
1
解决办法
1万
查看次数

SERVER REFLEXIVE和PEER REFLEXIVE地址/候选人在什么情况下彼此不同?

我正在通过ICE/STUN规范并提出了一个问题.如果我位于NAT后面,可能是Full Cone,Restricted或Port Restricted但不是对称NAT,并且考虑到我正在使用UDP,那么在这种情况下,我的SERVER REFLEXIVE和PEER REFLEXIVE地址/候选将是相同的,对吧?我无法想象在什么情况下(对于上面提到的NAT类型)它们会彼此不同?或者如果它们真的不同,那么它只能意味着我的NAT是对称的?

nat stun

7
推荐指数
1
解决办法
5436
查看次数

如何在不让Docker弄乱iptables的情况下将源IP转发到Docker容器

如果你在Docker容器中运行某些东西(例如nginx)并将一个暴露的端口发布到外部世界(比如docker run -p 80:80 nginx),那么Doc​​ker将会

  • 将端口暴露给公众
  • 设置iptables,这样如果有东西通过Docker网桥(NAT)连接到容器,那么nginx仍然会知道正确的源IP
  • !完全打开防火墙到该端口

我不想让任何人连接到已发布的端口,但Docker将其搞砸了.所以我重新启动了Docker守护进程--iptables=false,允许我自己管理防火墙.但是,nginx现在只将桥(172.18.0.1)视为源地址.

如何控制防火墙并仍然将源IP地址转发到容器?

firewall bridge iptables nat docker

7
推荐指数
0
解决办法
767
查看次数

为什么我们需要AWS中的私有子网+ NAT转换?我们不能只使用公共子网+正确配置的安全组吗?

因此,AWS中私有子网的目的是使其实例无法直接从外部访问.然而,有些情况(成功抵制'实例'双关语),其中实例可以访问互联网.一个这样的用例可以是例如下载软件更新.

实现这一目标的"标准"方法是使用NAT网关和路由表中的规则,将所有出站流量指向它(0.0.0.0/0 - > nat-gw).

令我困惑的是:我们不能只使用具有正确配置的安全组(SG)的公有子网来拒绝入站流量并允许特定的出站流量吗?由于SG是有状态的,它们应该允许对出站流量的响应通过,就像NAT网关一样.

我假设我只是遗漏了一些东西,或者上面的配置在某些方面受到限制,我只是没有看到.但是我无法找到答案.

nat subnet amazon-web-services aws-security-group

7
推荐指数
2
解决办法
447
查看次数

Nat 穿越:UPnP/IGD 与 NAT-PMP

我正在编写一个 P2P 应用程序,希望避免用户手动设置端口转发。

我有点困惑,因为似乎有两种不同的协议来配置 NAT,UPnP/IGD 和 NAT-PMP。我应该使用哪一个?所有 NAT 都支持它们吗?或者我应该同时支持两者以确保 NAT 至少支持其中之一?

p2p network-programming upnp nat portforwarding

6
推荐指数
2
解决办法
4949
查看次数

iOS 目标 c 套接字 p2p 连接与 NAT 后面的对等方

我必须在位于 NAT 后面(在不同网络中)的两个对等点之间在 iOS (Objective-C) 中实现套接字通信。是否有任何技术可以让我实现这一目标?基本上,我正在寻找一些 STUN、TURN 实现,它可以让我找出外部 IP/端口地址。

提前致谢,列昂尼德

sockets objective-c nat stun ios

6
推荐指数
0
解决办法
756
查看次数

Nat Punchthrough 理解 P2P 概念

所以,我一直在阅读 NAT-Punchthrough。我似乎明白了这个想法,但我很难实现它,而且我觉得我在这里错过了一步。测试此功能有点困难,因为当涉及到基于 Internet 的连接时,我几乎无法控制环境。

我有一个 SQL 服务器作为我的“协助者”运行,它保留服务器和客户端的外部地址,以及外部看到的端口。

以下是到目前为止的步骤: - 我通过存储服务器/客户端 IP/PORT 的 Web 请求(PHP 脚本)连接到我的 SQL 服务器 - 当两者都已知时,客户端和服务器都尝试连接(服务器主机在设置的端口上,客户端通过设置的端口连接) - 没有任何重大的事情发生

这里有 2 个未知数,我想和你核对一个。NAT-Punchthrough 是否真的要求我使用我计划在之后的步骤中连接的确切(内部/LAN)端口执行第一步?

如果是这样,我不知道我的服务器在水下究竟是如何工作的,所以它可能需要比我最初给定的静态端口更多的端口来连接,但这至少给了我一个提示。

如果有人对此有更多文档,请告诉我。

来源:
P2P 应用程序编程
http://www.mindcontrol.org/~hplus/nat-punch.html

port p2p nat nat-traversal hole-punching

6
推荐指数
1
解决办法
3217
查看次数

Vagrant/virtualbox没有SSH连接和超时(Windows)

我试图设置这台机器:https://github.com/ByteInternet/hypernode-vagrant

当我这样做时,vagrant up我得到以下错误:Timed out while waiting for the machine to boot.

完整的错误上下文:

$ vagrant up
Bringing machine 'hypernode' up with 'virtualbox' provider...
==> hypernode: Will use PHP 7. If you want PHP 5.5 instead change the php version in local.yml.
==> hypernode: Checking if box 'hypernode_php7' is up to date...
==> hypernode: Clearing any previously set forwarded ports...
==> hypernode: Clearing any previously set network interfaces...
==> hypernode: Preparing network interfaces based on configuration... …
Run Code Online (Sandbox Code Playgroud)

virtualbox nat vagrant

6
推荐指数
1
解决办法
2499
查看次数