端口转发与端口映射

原文: https://blog.csdn.net/mirror97black/article/details/79873292

端口映射

端口映射是NAT的一种,功能是把在公网的地址转翻译成私有地址, 采用路由方式的ADSL宽带路由器拥有一个动态或固定的公网IP,ADSL直接接在HUB或交换机上,所有的电脑共享上网。

端口映射就是将外网主机的IP地址的一个端口映射到内网中一台机器,提供相应的服务。当用户访问该IP的这个端口时,服务器自动将请求映射到对应局域网内部的机器上。端口映射有动态和静态之分。

通俗来讲,端口映射是将一台主机的内网(LAN)IP地址映射成一个公网(WAN)IP地址,当用户访问提供映射端口主机的某个端口时,服务器将请求转移到本地局域网内部提供这种特定服务的主机;利用端口映射功能还可以将一台外网IP地址机器的多个端口映射到内网不同机器上的不同端口。 端口映射功能还可以完成一些特定代理功能,比如代理POP,SMTP,TELNET等协议。理论上可以提供65535(总端口数)-1024(保留端口数)=64511个端口的映射。

windows上实现端口映射


设置端口映射
netsh interface portproxy add v4tov4 listenport=(监听端口) listenaddress=(监听ip) connectaddress=(虚机IP) connectport=(虚机端口)
查看映射表
netsh interface portproxy show all
删除映射表
netsh interface portproxy delete v4tov4 listenport=(监听端口) listenaddress=(监听ip)

linux上实现端口映射


iptables -t nat -A PREROUTING -m $pro -p $pro --dport $NAT_Port -j DNAT --to-destination $Dst_Host:$Dst_Port
iptables -t nat -A POSTROUTING -m $pro -p $pro --dport $Dst_Port -d $Dst_Host -j SNAT --to-source $NAT_Host
NAT_Pro表示NAT的协议,可以是tcp或udp
NAT_Host表示中间做端口映射的主机。这里也就是主机A
NAT_Port表示中间做端口映射的端口。这里也就是主机A的8080口
Dst_Host表示被NAT的主机。这里也就是主机B
Dst_Host表示被NAT的端口。这里也就是主机B的80口

端口转发

端口转发(Port forwarding),有时被叫做隧道,是安全壳(SSH) 为网络安全通信使用的一种方法。端口转发是转发一个网络端口从一个网络节点到另一个网络节点的行为,其使一个外部用户从外部经过一个被激活的NAT路由器到达一个在私有内部IP地址(局域网内部)上的一个端口。

windows使用lcx.exe工具实现端口转发

拿到公网shell和内网shell之后,外网不能访问内网,想要远程连接内网,需要做端口转发的操作,将内网的3389端口转发到公网的端口上

模拟测试,内网ip 10.10.10.1,公网ip 16.16.16.1,内网只能和公网ping通,不能和外网ping通

上传lcx.exe到两个服务器上

在内网服务器中,执行命令

lcx.exe -slave 16.16.16.1 8888 10.10.10.1 3389

将内网3389端口转发到公网8888端口

在公网服务器中,执行命令监听端口,并且将转发出来的东西用一个端口来接收

lcx.exe -listen 8888 9999

远程连接16.16.16.1:9999即是连接的内网10.10.10.1:3389

lcx.exe还有一条命令,是将内网端口映射到公网端口

只需要在公网服务中,执行如下命令即可

lcx.exe -tran 8888 10.10.10.1 3389

将内网的3389端口映射到公网8888端口上,远程连接16.16.16.1:8888即是连接内网3389

linux使用端口转发工具

使用portmap工具

执行命令,查看帮助文档

./portmap -h

端口转发,h1为公网ip,h2为内网ip

./portmap -m 3 -h1 16.16.16.1 -p1 8888 -h2 10.10.10.1 -p2 3389

在公网ip上,还是需要监听端口,用windows监听的话就是用lcx.exe工具,用linux监听的话h还是用portmap工具

./portmap -m 2 -p1 8888 -p2 9999

这里监听8888端口然后用9999端口接收

远程连接16.16.16.1:9999即是内网的3389端口

端口转发与端口映射的区别

端口转发应该是将发送到内网机器指定端口的数据丢给另外一个机器的指定端口(重点是个转字)

端口映射是本机 就跟路由器一样 你要提供WEB服务,那么就得先映射80端口 外部用户通过80端口访问你的WEB服务(外部用户访问80端口,就会被翻译为内网ip的端口)

端口转发是两台服务器 端口映射是一个服务器

按我的理解,比如说用本地搭建虚拟机,采用nat模式连接,外网不能访问我的虚拟机web服务,我要让外网访问,就可以将虚拟机的80端口映射到本机的8001端口,这样,外部访问本机ip:8001即是访问虚拟机的80端口。虚拟机的ip只能本机访问,在本机上设置端口映射即可,所以是一个服务器。

虚拟机不仅能访问本机,还能访问外网ip,也就是说,可以将nat虚拟机端口转发到它能访问到的服务器上,并不局限于转发到本机。还有,虚拟机转发端口出去,需要一个服务器来监听端口并接收,所以是两个服务器。

Proudly powered by WordPress   Premium Style Theme by www.gopiplus.com
显示
Share On Facebook
Share On Twitter
Share On Google Plus
Share On Linkedin
Share On Pinterest
分享到 QQ 空间
分享给 QQ 好友
分享到新浪微博
隐藏