DMZ(demilitarized zone):可以简单理解成把网关的全端口转发到指定内网主机上,只能指定一台主机。这是一种静态全端口映射。这个协议只要早网关开启就行了。
UPnP(Universal Plug and Play):这个协议的目的是动态的映射网关的指定端口到指定主机上,可以一把网关的不同端口映射到不同内网主机的不同端口上。这个协议需要网关开启,然后内网的主机操作系统支持,并且应用主动申请才能使用。
下面是一段java请求UPnP的接口,目的是把网关的8080 端口映射到192.168.1.100:8080
// 导入相关类和库
import org.cybergarage.upnp.*;
import org.cybergarage.upnp.device.*;
import org.cybergarage.upnp.ssdp.*;
public class UPnPPortMappingExample {
public static void main(String[] args) {
// 创建 UPnP 控制点对象
ControlPoint controlPoint = new ControlPoint();
// 启动 SSDP 发现
controlPoint.start();
// 搜索 UPnP 设备
Device dev = controlPoint.getDevice("urn:schemas-upnp-org:device:InternetGatewayDevice:1");
// 确保获取到了设备
if (dev == null) {
System.out.println("未发现 UPnP 设备");
return;
}
// 获取 IGD 服务
Service igd = dev.getService("urn:schemas-upnp-org:service:WANIPConnection:1");
// 确保获取到了服务
if (igd == null) {
System.out.println("未发现 IGD 服务");
return;
}
// 获取 WAN IP 地址
Action getExternalIPAddressAction = igd.getAction("GetExternalIPAddress");
getExternalIPAddressAction.setArgumentValue("NewExternalIPAddress", "");
getExternalIPAddressAction.postControlAction();
String externalIPAddress = getExternalIPAddressAction.getArgumentValue("NewExternalIPAddress");
System.out.println("WAN IP 地址:" + externalIPAddress);
// 添加端口映射规则
Action addPortMappingAction = igd.getAction("AddPortMapping");
addPortMappingAction.setArgumentValue("NewRemoteHost", "");
addPortMappingAction.setArgumentValue("NewExternalPort", "8080");
addPortMappingAction.setArgumentValue("NewProtocol", "TCP");
addPortMappingAction.setArgumentValue("NewInternalPort", "8080");
addPortMappingAction.setArgumentValue("NewInternalClient", "192.168.1.100");
addPortMappingAction.setArgumentValue("NewEnabled", "1");
addPortMappingAction.setArgumentValue("NewPortMappingDescription", "My Port Mapping");
addPortMappingAction.setArgumentValue("NewLeaseDuration", "0");
addPortMappingAction.postControlAction();
System.out.println("端口映射已添加");
}
}
端口映射:把网关的端口映射到指定主机的端口上,这个也是可以设置多个,处于DMZ和UPnP之间。
DMZ,UPnP,端口映射的目的都是把网关的请求转发到内网主机上,如果是用到同样的端口他们是冲突的。他们有一定的优先级,不同设备上可能不一样,
DMZ>端口映射>UPnP,易用程度依次降低,功能也助教变强,一般我们如果只是映射一台主机DMZ就够了,端口映射支持多个主机,但是每个主机端口在网关配置上定死的和主机,UPnP每个主机的端口都是主机内应用自己申请的。
标签:网关,主机,addPortMappingAction,MDZ,setArgumentValue,UPnP,端口映射 From: https://www.cnblogs.com/cxygg/p/18235563