标签: nat

Nat 穿越:UPnP/IGD 与 NAT-PMP

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

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

p2p network-programming upnp nat portforwarding

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

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
查看次数

如何将 Kubernetes 集群的 IP 添加到白名单

所以我有一个在 Google Cloud 中运行的 kubernetes 集群。我需要从集群内的 Pod 访问配置了 IP 白名单的外部数据库。我似乎需要一个静态的共享 IP 来用于集群的传出流量,最好的方法是什么?

设置服务 IP 似乎无关紧要,因为这与入站流量无关。我研究了Cloud NAT,它看起来很有前途,但我不太确定如何设置它。任何文档/教程都会有帮助,谢谢!

nat kubernetes google-kubernetes-engine

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

使用Java进行NAT遍历

我想连接到计算机,每个计算机都在NAT路由器后面.我读到STUN只适用于NAT路由器后面的一台计算机.真的吗?如果是这样,我该如何解决双NAT问题?

谢谢,托马斯

java traversal nat

5
推荐指数
1
解决办法
3363
查看次数

Amazon S3出现奇怪的TCP问题

这个问题之所以存在是因为它具有历史意义,但它不被认为是本网站的一个好的,主题上的问题,所以请不要将它作为证据,你可以在这里提出类似的问题.

更多信息:https://stackoverflow.com/faq

我有一个奇怪的TCP问题根本没有意义.我正在撕扯我的头发.

Amazon S3下载文件(并且只有Amazon S3-其他所有站点都能正常工作)连接中断的时间有一定百分比.这只发生在西雅图的服务器上,NAT路由器后面有一个Web服务器.直接从路由器连接工作正常.从我们在维多利亚州的服务器一切正常,我们根本无法复制这一点.

  • 西雅图的Web服务器(尝试了10个不同的服务器) - > SNAT路由器(2个不同的路由器;旧内核和新内核) - > Amazon S3 =不起作用~10%的时间
  • 西雅图的Web服务器 - > SNAT路由器 - >任何其他网站=工作
  • 路由器框 - > Amazon S3 =工作
  • 维多利亚的Web服务器 - >维多利亚的SNAT路由器 - > Amazon S3 =工作

我试过的事情:

  • 禁用窗口缩放
  • 降低窗口大小
  • 将路由器升级到最新的内核
  • 完全禁用防火墙

在失败的情况下,亚马逊(或沿途的东西)向我们发送一个868长度的数据包而不是预期的1500字节数据包.服务器看到数据包后回复RST数据包(发生错误)并断开连接.

任何帮助将不胜感激!

以下是两个TCP转储 -

------------ Begin Error Case TCP Dump -------------
tcpdump -r /tmp/s3doesntwork-died 
reading from file /tmp/s3doesntwork-died, link-type EN10MB (Ethernet)
19:58:42.542189 IP locum.sparklit.com.39491 > 189-81.amazon.com.www: S 193799772:193799772(0) win 5840 <mss 1460,sackOK,timestamp …
Run Code Online (Sandbox Code Playgroud)

networking tcp nat amazon-s3

5
推荐指数
1
解决办法
1759
查看次数

UDP NAT打孔示例

我尝试在谷歌和这里搜索,但我仍然无法找到简单的C\C++示例udp打孔算法.如果你知道我在哪里找到它,请帮忙.谢谢!

c++ udp nat hole-punching

5
推荐指数
1
解决办法
3491
查看次数

通过NAT访问SQL Server实例

我正在尝试访问通过IP NAT映射公开的SQL Server.所有端口都是开放的.我不知道NAT的细节,如果它是相关的,因为那是隐藏在一堆繁文缛节中的公司其他地方.

这是我想出来的.当您尝试访问SQL Server的命名实例时,客户端会询问运行命名实例的端口.如果我进入SQL Server,我可以netstat用来查找该实例的端口,并可以通过防火墙成功连接.但是,通过实例名称连接不起作用.我的猜测是,服务器在某个时刻使用它的内部IP地址进行响应,而客户端正在使用它.

有谁知道这是否属实,是否有办法绕过它?

sql-server nat

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

如何使用JavaScript查询STUN服务器以获取公共IP和端口?

我正在尝试找到一些代码示例,以使用JavaScript查询STUN服务器以获取我的公共IP和端口。也许在使用服务器

http://www.stunserver.org

虽然http://www.ietf.org/rfc/rfc3489.txt此处解释了STUN规范(这是一个很长的文档,显然我不希望您阅读它),但我找不到任何代码示例根本可以让我的生活更轻松。就像是

function getMyIPAndPort() {
//query stun server for it
}
Run Code Online (Sandbox Code Playgroud)

谢谢

html javascript html5 nat stun

5
推荐指数
1
解决办法
2160
查看次数

用nat设置docker容器

我正在设置两个泊坞容器

     container1                 container2
     |        |                     |
    eth0     eth1                   |
     |        |                    eth1
   docker0   docker1<----------------
     |            
     |
   internet
Run Code Online (Sandbox Code Playgroud)

docker0和docker1是桥梁.

我在主机和容器中都有ip转发为1.我有设置

iptables -I POSTROUTING -t nat -o eth0 -j MASQUERADE in container 1
Run Code Online (Sandbox Code Playgroud)

仍然我无法ping从容器2到互联网的任何东西.我可以看到正在容器1的eth1接收数据包.

OS: ubuntu 13.10
docker version: 0.11.1, build fb99f99
Run Code Online (Sandbox Code Playgroud)

我错过了一些配置吗?

重现步骤:

SERV=$(docker run --privileged=true -i -d -t -v ~/Projects/code/myproject/build:/build:ro debian:7.4 /bin/bash)
CLI=$(docker run --privileged=true -i -d -t -v ~/Projects/code/myproject/build:/build:ro debian:7.4 /bin/bash)
sudo pipework br1 $SERV 10.1.0.1/8
sudo pipework br1 $CLI 10.1.0.3/8 
Run Code Online (Sandbox Code Playgroud)

在$ SERV:iptables -I POSTROUTING -t nat -o eth0 …

containers iptables nat docker

5
推荐指数
1
解决办法
4775
查看次数

如何使用Mosh连接到NAT背后的服务器

我想通过mosh连接到位于NAT后面的服务器。我无法触摸路由器将其设置为upnp支持,但是我已经申请了UDP端口转发9807-> 60000,以及ssh端口转发原因。

因此,是否有通过客户端和/或服务器端的命令行args或conf文件指定服务器端口的方法?

注意:以下不起作用!!

mosh -p 9807 user@my_server
Run Code Online (Sandbox Code Playgroud)

编辑:

我尝试先SSH到服务器,然后手动运行mosh-server -p 60000,然后从另一个终端运行mosh -p 9807 my_server。这会导致错误:

Error binding to IP my_server_ip: bind: Address already in use
Run Code Online (Sandbox Code Playgroud)

说:

  1. 前进端口正在工作。
  2. Mosh尝试在端口60000上安装mosh服务器。

谢谢。

udp nat mosh

5
推荐指数
1
解决办法
5195
查看次数