服务器托管端口映射以及端口转发如何设置

不要混合端口映射和端口转发。
端口映射允许外网访问内网服务。
端口转发提供在内部网络上访问外部网络服务的功能。
具体交易见下文。

1 .端口映射方法 端口映射允许外网访问内网服务。

第一步:确认您的内网服务器信息。
在 Windows 系统上使用 ipconfig 检查 IP。
在 Linux/macOS 上使用 ifconfig 检查 IP。
确认服务端口。

步骤2 .进入路由器管理界面。
输入路由器的IP地址即可登录后台。
查找虚拟服务器或 NAT 转发设置。

第3 步:配置端口映射规则 外部端口:外部网络访问端口。
内部端口:内网服务端口。
内网IP:内网服务器IP地址。
选择 TCP/UDP 作为协议。

第4 步.保存并重新启动路由器。
保存设置后,重启路由器。

第5 步.检查对外部网络的访问 使用外网设备访问路由器公网IP地址匹配的端口。
例如,http://公网IP:8 0。

2 设置端口转发的方法 端口转发提供在内部网络上访问外部网络服务的功能。

步骤1 .进入路由器管理界面。
同样端口映射,进入路由器后台。

步骤 2 . 配置端口转发规则 外部端口:路由器接收外部网络请求的端口。
内部端口:内部网络设备的实际端口。
内部IP:内部网络设备的IP。
选择 TCP/UDP 作为协议。

第 3 步:保存并测试 外网设备通过公网IP地址:2 2 2 2 访问内网SSH服务。

3 .差异简要说明 端口映射:外网访问内网服务。
例如,外部网络访问内部网络上的Web服务器。

端口转发:内部网络设备通过路由器访问外部网络服务。
例如,内网SSH访问外网。

4 无法访问外网的原因及解决办法 端口映射配置错误:检查内网IP地址和端口。
确保没有冲突。

内网服务器未运行:使用本地网络的其他设备访问并确认服务运行正常。

端口未完全映射。
某些服务需要多个端口。
暂时启用 DMZ 主机测试。

防火墙拦截:检查您的路由器防火墙和本地防火墙。

端口被服务提供商阻止:联系您的 ISP 进行确认。
尝试更改端口。

更改 NAT 类型或 IP 地址:确保公共 IP 地址未更改。
检查 NAT 类型。

5 高级配置建议 动态DNS(DDNS):DDNS动态IP地址注册服务。
就像花生壳一样。
将您的域名链接到动态 IP。

端口范围映射:支持将1 000-2 000端口映射到内网服务器。

加强安全性:限制源IP地址访问外网。
使用强密码保护您的路由器。

自己掂量一下。

Linux 或 Windows 上实现端口映射

老实说,我们来谈谈端口映射。
Windows和Linux的操作方法有很大不同,但都可以使外部网络访问内部网络服务。
之前做过一个公司项目,需要通过外网访问内网的web服务,当时遇到了很多困难。

在 Windows 上使用 netsh 命令行非常简单。
例如,我曾经有一台IP为1 9 2 .1 6 8 .1 .5 0的服务器。
如果我想从外网访问它的8 08 0端口。
我可以直接使用命令。
巴什 netshinterfaceportproxyaddv4 tov4 listenaddress=公共IPlistenport=8 08 0connectaddress=1 9 2 .1 6 8 .1 .5 0connectport=8 08 0
就可以了。
第二天上网发现不对。
经过检查,发现Windows的端口映射在不重启的情况下默认就被破坏了。
后来我使用任务调度程序每天运行一次命令来解决问题。
这个命令行功能确实很简单,但是如果不记得参数的话很容易出错。
监听地址和绑定地址颠倒了好几次。

Linux 比较复杂。
iptables确实很强大,但是很容易出错。
我有一个项目,使用双网卡服务器进行负载均衡。
内网服务器IP为1 9 2 .1 6 8 .5 0.1 1 和1 9 2 .1 6 8 .5 0.1 2 ,外网IP为ens3 7 配置转发规则时;首先必须启用内核以支持IP转发: 巴什 echo 1 > /proc/sys/net/ipv4 /ip_forward
然后配置NAT规则,将外网请求转发到内网服务器: 巴什 iptables -t nat -A POSTROUTING -j MASQUERADE iptables -A 转发 -i ens3 3 -j 接受。
iptables -t nat -A POSTROUTING -s 1 9 2 .1 6 8 .5 0.0/2 4 -o ens3 7 -j MASQUERADE iptables -t nat -A PreROUTING -p tcp --dport 8 08 1 -j DNAT --to-destination 1 9 2 .1 6 8 .5 0.1 1 :8 08 0 iptables -t nat -A preROUTING -p tcp --dport 8 08 2 -j DNAT --to-destination 1 9 2 .1 6 8 .5 0.1 2 :8 08 0
配置中,其中一台服务器IP写错,长时间收不到请求。
需要很长时间调试才能发现问题。
Linux的iptables规则比Windows命令更复杂,但功能更丰富,并且可以实现更精确的流量控制。

当这些结构完成后,建议首先在测试环境中运行多次。
例如,当我配置Linux端口映射时,它会在虚拟机中反复测试并保存规则。
后来,在配置真实服务器时,检测到有一个内网IP段没有转发规则,导致请求包丢失。
我惊得出了一身冷汗。

其实,归根结底是;这些配置允许不同的网络相互访问服务。
我曾经有一个客户使用Windows端口映射进行远程维护。
结果,防火墙由于未打开,映射失败,服务崩溃。
因此,在进行这些配置时;不要忘记检查防火墙设置;必须维护 Windows 映射,也必须保留 Linux 规则。
这些细节往往比技术本身更麻烦。

Linux 或 Windows 上实现端口映射

Windows端口映射:
1 .查询端口映射:netsh arop show all 2 、查询特定IP的所有端口分配:netsh arop show ip=特定IP 3 、添加端口映射:netsh arop add name=映射名称 localport=本地端口 remoteaddr=远程地址 remoteport=远程端口 protocol=协议类型 4 、删除端口映射:netsh arop delete name=映射名称
Linux端口映射:
1 .允许数据包转发: echo 1 > /proc/sys/net/ipv4 /ip_forward 2 、设置端口映射:iptables -t nat -A PREROUTING -p 协议类型 --dport 端口号 -j DNAT --to-destination 目的地址:目的端口 iptables -A FORWARD -p 协议类型 --dport 端口号 -j ACCEPT
实验环境配置:

Server1 、Server2 为内网服务器,IP地址为1 9 2 .1 6 8 .5 0.0/2 4
Server3 是外网服务器,IP地址为1 7 2 .1 6 .2 .0/2 4
Server4 是双网卡主机,网卡1 连接到1 9 2 .1 6 8 .5 0.0/2 4 ,网卡2 连接到1 7 2 .1 6 .2 .0/2 4
配置临时端口映射:

在Server4 上运行: iptables -tables -tables -tables -tERcOUTpING nat -A -p PRJ -A --to destination 1 9 2 .1 6 8 .5 0。
具体服务器IP:8 0
在Server4 上运行: iptables -A FORWARD -p tcp -j ACCEPT
永久配置端口映射:

将上述iptables命令添加到文件/etc/rc.local
Windows IP信息不确定,必须提供具体信息。

配置并显示端口映射:

Windows:netsh arop 显示全部
Linux:iptables -t nat -L -n -v
检查效果:

在客户端节点访问Server1 、Server2 、Server3 的HTTP资源,检查端口映射是否有效。

外网客户端无法访问内网资源Server1 和Server2 ,必须通过Server4 进行端口映射和转发。