即使将PortMapping添加到upnp路由器

时间:2016-03-28 22:38:25

标签: port p2p router nat upnp

我试图从私有网络外的设备到私有网络内部和NAT后面的设备进行p2p连接。

我使用lib net.sb..nnp为我的路由器添加端口映射。

import net.sbbi.upnp.impls.InternetGatewayDevice;
import net.sbbi.upnp.messages.UPNPResponseException;

.....

uPnPPortMapper = new UPnPPortMapper();

try {
    uPnPPortMapper.openRouterPort(externalIP, externalPort,internalIP,internalPort, ApplicationConstants.ADD_PORT_DESCRIPTION);
    } catch (IOException e) {
        e.printStackTrace();
    } catch (UPNPResponseException e) {
        e.printStackTrace();
    }


public boolean openRouterPort(String externalRouterIP,int externalRouterPort, String internalIP,int internalPort, String description) throws IOException, UPNPResponseException {

    /** Upnp devices - router search*/
    if(internetGatewayDevices == null){
        internetGatewayDevices = InternetGatewayDevice.getDevices(ApplicationConstants.SCAN_TIMEOUT);
    }

    if(internetGatewayDevices != null){
        for (InternetGatewayDevice addIGD : internetGatewayDevices) {           
            addIGD.addPortMapping(description, externalRouterIP, internalPort, externalRouterPort, internalIP, 0, ApplicationConstants.TCP_PROTOCOL);
            addIGD.addPortMapping(description, externalRouterIP, internalPort, externalRouterPort, internalIP, 0, ApplicationConstants.UDP_PROTOCOL);
        }
        return true;
    }else{
        return false;
    }
}

此代码确实在我的路由器中添加了一个端口映射,就像我在TP Link TL-WR940ND的UPnP表中看到的那样:

当前UPnP设置列表

ID App说明外部端口协议内部端口IP地址状态

1 Skype UDP at 192.168.0.101:3105 31051 UDP 31051 192.168.0.101已启用

2 Skype TCP at 192.168.0.101:3105 31051 TCP 31051 192.168.0.101已启用

3使用UNPN 31052 TCP 31052 192.168.0.102启用IGD打开端口

4使用UNPN 31052在IGD上打开端口UDP 31052 192.168.0.102已启用

问题在于,当我尝试建立从网络外部到公共IP +端口31052的连接时,我收到超时。

我使用网站(http://www.ipfingerprints.com/portscan.php)检查端口状态,端口31052标记为'已过滤'而skype的端口标记为' open':

港口国服务

31051 / tcp open unknown

31052 / tcp过滤未知

我在路由器上找不到任何其他设置,skype可能会像防火墙规则一样改变,以使端口打开。

我已经测试了一些应用程序,例如Droid UPnP Port Mapper' (Android应用程序)和' UPnP PortMapper' (Windows应用程序),但所有这些都成功地在我的路由器内创建了一个端口映射,但没有一个让端口打开'。

我的路由器不在双NAT后面,因为http://www.ipfingerprints.com/给出的外部IP是189.xx.xxx.xxx,也是我的路由器WAN IP。

0 个答案:

没有答案