2014-03-26 62 views
1

我建立一個簡單的插座,其將接受在端口1337 連接它通過本地主機接受連接:UPnP的端口映射,服務不接受連接

$ nc -vv localhost 1337 
found 0 associations 
found 1 connections: 
1: flags=82<CONNECTED,PREFERRED> 
outif lo0 
src ::1 port 57224 
dst ::1 port 1337 
rank info not available 
TCP aux info available 

Connection to localhost port 1337 [tcp/menandmice-dns] succeeded! 
^C 

我使用可可端口映射器(https://github.com/mugginsoft/Cocoa-PortMapper)轉發此端口到NAT路由器我落後了。

portMapper = [[PortMapper alloc] initWithPort:1337]; 

portMapper.desiredPublicPort = 1337; 

[[NSNotificationCenter defaultCenter] addObserverForName:PortMapperChangedNotification object:portMapper queue:nil usingBlock:^(NSNotification *note) { 
    NSLog(@"Successfully mapped: %@", portMapper.isMapped ? @"YES" : @"NO"); 
    NSLog(@"Mapped %@:%hu", portMapper.publicAddress, portMapper.publicPort); 
}]; 

if(![portMapper waitTillOpened]) { 
    NSLog(@"Could not open port"); 
} 

它返回YES,並在我的路由器的UPnP端口映射表,我可以看到有一個外部端口1337上的活動TCP映射到內部端口1337上的我的電腦本地IP。

然而,通過外部IP連接服務無法正常工作:

$ nc -vv xxx.89.136.xx 1337 
nc: connectx to xxx.89.136.xx port 1337 (tcp) failed: Connection refused 

如果我在路由器手動設置端口轉發規則,連接正常。即使我的路由器說它工作,爲什麼不UPnP端口映射工作?

回答

1

事實證明,端口映射從我的網絡外部工作。當我從其他地方連接服務器時,而不是通過我的外部IP從本地計算機連接時。

+0

同樣的事情發生在我身上! – simernes