标签: nat

类似于teamviewer的ssh工具?

我想通过SSH从工作中访问我的家用电脑,但问题是我的家用电脑是在NAT路由器后面(我无法访问).因为我的工作计算机安装了CentOS并且位于代理之后,我无法使用TeamViwer(电视在Linux上移植了葡萄酒,显然代理设置不起作用).

有没有人知道一个适合我需要的程序?

谢谢,克劳迪

linux ssh nat

36
推荐指数
3
解决办法
5万
查看次数

通过NAT连接P2P?

我开始探索使用p2p连接与其他连接的选项,所以我在JAVA中为Android设备编写了一个简单的套接字程序,其中用户可以共享简单的消息p2p(我当时对NAT没有任何想法).我了解了NAT,所以我现在需要与另一个用户建立TCP连接,该用户使用服务器进行发现,但有效载荷是p2p传输的.我也看了一下XMPP(协议如何工作的一个很好的和详细的说明是这里)和UPnP,但我不知道如何实现它们.

另一个有趣的问题是BitTorrent,因为它们可以在任何设备上工作,甚至可以在NAT后面工作.我无法解释BitTorrent的工作原理.

我研究了很多,但我被卡住了.

我的问题是:

  1. BitTorrent的详细解释(就像这里,不是种子如何工作)以及如何解决NAT问题?
  2. 有没有办法以编程方式进行NA​​T输入?
  3. 套接字编程是否足以支持p2p?
  4. 创建自己的协议有多难,我该如何建立?
  5. 如果两个设备D1和D2想要通信p2p并且他们知道彼此的IP.D1向D2发送请求并且无法通过D2的NAT,但是应该在D1的NAT中创建一个条目.所以当D2尝试发送一些东西时,D1的NAT应该会发现一个带有D2的IP的条目.那么为什么数据包不被它允许呢?

networking p2p bittorrent network-protocols nat

35
推荐指数
4
解决办法
2万
查看次数

TCP打孔(NAT Traversal)库还是什么?

我想在C#中进行TCP打孔(NAT Traversal).如果需要,可以使用集合服务器完成.我找到了http://sharpstunt.codeplex.com/但无法让它工作.理想情况下,我需要一些方法,我将一个端口号(int)作为参数,在NAT上调用此方法后可用("Port Forwarded").如果该方法只返回一些后来在NAT上可用的端口号,那也没关系.有没有人用C#做过这个?你能给我一些sharpstunt或其他东西的例子吗?

c# tcp nat

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

如何使两个Android设备通过TCP进行通信

我们想在两个Android设备之间建立TCP/IP连接.目前我们认为如果我们将连接设备设置为设备会更简单.所以这两部手机之间没有服务器.

大多数时候(如果不是总是)一个人没有真正的IP地址(NAT等).这是创建TCP套接字的问题吗?我没有找到任何确切的信息.任何建议和意见将受到高度赞赏.

谢谢

connection android tcp nat

22
推荐指数
2
解决办法
5127
查看次数

用于Java的STUN,TURN,ICE库

我需要在两个用户之间建立P2P UDP和TCP连接.他们都是NAT的背后.

一点研究让我想到了STUN,TURNICE.

除了jSTUN之外是否有任何Java解决方案(库),它似乎只能在UDP上运行.而TURN,ICE对于对称NAT问题要好得多.

java nat stun turn

21
推荐指数
3
解决办法
2万
查看次数

UDP打孔实现

我正在尝试完成UDP打孔.我的理论基于这篇文章WIKI页面,但我面临着C#编码的一些问题.这是我的问题:

使用此处发布的代码,我现在能够连接到远程计算机并在同一端口上侦听传入连接(将2个UDP客户端绑定到同一端口).

由于某种原因,对同一端口的两个绑定相互阻止接收任何数据.我有一个响应我的连接的UDP服务器,所以如果我在将任何其他客户端绑定到端口之前先连接到它,我会得到它的响应.

如果我将另一个客户端绑定到该端口,则不会在任一客户端上接收数据.

以下是显示我的问题的2个代码片段.第一个连接到远程服务器以在NAT设备上创建规则,然后在另一个线程上启动侦听器以捕获传入的数据包.然后代码将数据包发送到本地IP,以便侦听器获取它.第二个只发送数据包到本地IP,以确保这是有效的.我知道这不是真正的打孔,因为我在不使用NAT设备的情况下将数据包发送给自己.我现在面临一个问题,如果我在NAT设备旁边使用计算机进行连接,我认为这不会有任何不同.

[编辑] 2/4/2012我尝试在我的网络上使用另一台计算机和WireShark(数据包嗅探器)来测试监听器.我看到从其他计算机传入的数据包但是没有被侦听器UDP客户端(udpServer)或发送方UDP客户端(客户端)接收.

[编辑] 2/5/2010我现在添加了一个函数调用,在初始发送和接收数据包之后关闭第一个UDP客户端,只有第二个UDP客户端才能侦听端口.这有效,我可以从该端口上的网络内部接收数据包.我现在将尝试从网络外部发送和接收数据包.我一发现就会发布我的发现.

使用此代码,我在侦听客户端上获取数据:

static void Main(string[] args)
{
    IPEndPoint localpt = new IPEndPoint(Dns.Resolve(Dns.GetHostName()).AddressList[0], 4545);

    ThreadPool.QueueUserWorkItem(delegate
    {
        UdpClient udpServer = new UdpClient();
        udpServer.ExclusiveAddressUse = false;
        udpServer.Client.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, true);
        udpServer.Client.Bind(localpt);

        IPEndPoint inEndPoint = new IPEndPoint(IPAddress.Any, 0);
        Console.WriteLine("Listening on " + localpt + ".");
        byte[] buffer = udpServer.Receive(ref inEndPoint); //this line will block forever
        Console.WriteLine("Receive from " + inEndPoint + " " + Encoding.ASCII.GetString(buffer) + ".");
    });

    Thread.Sleep(1000);

    UdpClient udpServer2 …
Run Code Online (Sandbox Code Playgroud)

c# udp traversal nat hole-punching

21
推荐指数
3
解决办法
2万
查看次数

VirtualBox端口转发不使用NAT适配器

我正在尝试使用VirtualBox进行简单的端口转发,看起来VirtualBox.exe正在侦听端口的主机,但实际上并没有将连接转发给guest虚拟机.我尝试过多个端口,并且我已经多次重启VirtualBox.另一方面,访客主机连接很好.这是信息:

Host: Win7 x64
Guest: Win7 x64
VirtualBox version: VirtualBox 4.2.10
Firewalls: All firewalls on host and guest disabled.

Virtual Box > Machine Settings > Network
 Adapter 1: 
  Attached to: NAT
  Cable Connected : True
  Port Forwarding:
   Rule 1: TCP, HostIP=127.0.0.1, HostPort=8081, GuestIP=127.0.0.1, GuestPort=8081

On Host:
[VirtualBox.exe]  TCP    127.0.0.1:8081         IBM-6KT5OPCF76P:0      LISTENING

On Guest:
I never get the connection request on port 8081 or any others I've tried.
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?我想避免使用VirtualBox的桥接适配器有多种原因.我认为使用VirtualBox,NAT端口转发相对简单.

谢谢!

port networking virtualbox forwarding nat

21
推荐指数
3
解决办法
6万
查看次数

pwnat仍在工作吗?

我需要NAT遍历的解决方案来通过互联网传输RDP数据.我遇到了以下工具,它真的很棒 - pwnat.

我已尝试使用不同路由器后面的两台不同的机器,但我无法使其工作,如上面链接中所述.所以pwnat仍然有效,如果是的话,我做错了什么?这对我很有帮助.

注意:我正在使用Windows机器进行测试,并从以下链接下载了Windows版本.

http://www.sumitgupta.net/pwnat-windows-complied-version/

任何帮助请..

rdp network-programming nat pwnat

20
推荐指数
1
解决办法
5047
查看次数

如何在相同(但不断变化的)IP地址上使用2个不同的主机处理ssh主机密钥验证?

我在nat防火墙后面有2个ssh服务器,每天都会改变它的wan IP.它们在给定时间内始终处于相同的WAN IP地址,但在不同的端口上.

我这样连接到服务器A:

ssh -p 22001 karl@x1.example.com
Run Code Online (Sandbox Code Playgroud)

和服务器B:

ssh -p 22002 karl@x2.example.com
Run Code Online (Sandbox Code Playgroud)

所以我为同一个IP获得了2个不同的主机密钥,并且当IP改变同一主机的不同IP时也是如此.

我必须在known_hosts文件中一遍又一遍地删除其他密钥或旧密钥(在IP更改的情况下).

我不愿意关闭密钥验证,因为这样会不那么安全.但是始终获得警告也是不安全的(因为我一直忽略这样的警告).有更好的解决方案吗?

这与我在这里的旧问题有关,但不一样:

具有2个DNS名称的服务器上的SSH登录警告消息

security ssh verification openssh nat

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

两台计算机如何通过NAT连接到同一个外部地址?

如果我有两台内部计算机通过NAT路由器连接到同一个外部IP地址,那么路由器如何才能将流量传输到正确的内部计算机?据我所知,NAT将传入的数据包转发到最近将传出数据包发送到[传入数据包]发送方IP地址的计算机.由于两台计算机都发送到同一个地址,路由器是否将数据包转发到两者?如果是这种情况,客户端软件是否有责任确定哪些数据包是相关的?

两台计算机是否都试图连接到同一个端口?

ip networking routing nat

17
推荐指数
1
解决办法
8784
查看次数