端口转发是将一个网络端口的流量从一个机器转发到另一台机器或同一台机器的另一个端口。这对于内网穿透、代理服务、VPN、负载均衡等场景非常重要。出于便于项目后期更加方便进行的目的,在此处简述端口转发的若干方式。
一、关于端口转发:
1.什么时候需要使用端口转发?
内网穿透:在内网环境中,将外部访问的流量转发到内网服务。
安全隔离:将外部访问请求转发到内部服务器,提高安全性。
负载均衡:将请求分发到多个后端服务器以优化性能。
服务代理:将请求转发到代理服务器或中间层服务进行处理。
2.可以通过什么方式进行端口转发?
(1)rinetd:轻量级的 TCP/UDP 端口转发工具,适用于简单的端口转发配置
(2)nginx等工具
实际上还有其他方式,但是因为其他方式本人尚未进行探索,因此也一并留待后续用到了再update。
二、rinetd进行端口转发
(一)确保系统存在rinetd
输入rinetd -v
确定系统是否存在rinetd,如果不存在请进行配置。
详情可见该博客:https://blog.csdn.net/chj_1224365967/article/details/106856651
(二)找到rinetd的位置
如果是参考上面的博客进行的配置,可依据博客中的具体的方法进行端口转发。
然而针对我们项目系统这种特殊的情况,即rinetd是由前人安装配置的,如果需要进行修改,则第一步是找到rinetd的位置,输入如下命令:whereis rinetd
示例输出如下:
rinetd: /usr/local/sbin/rinetd /usr/local/etc/rinetd.conf
其中前者是运行脚本,后者是配置文件
*如果找不到也可能是没有配置环境变量。 *
(三)修改配置文件
为便于理解,提供示例,该图来源:https://blog.csdn.net/chj_1224365967/article/details/106856651
根据你的需要修改该配置文件,你希望将本机的那个端口的流量转发至特定的ip与端口中。
(四)重新运行rinetd
根据前面whereis rinetd
输出的结果,运行如下代码:
/usr/local/sbin/rinetd -c /usr/local/etc/rinetd.conf
(脚本路径 -c 配置文件路径)
(五)查看是否运行成功
运行如下命令查看网络情况
netstat -antup
正常输出会看到rinetd在刚刚转发的位置进行监听。
(六)实例代码测试
使用当前服务器的ip与端口访问被转发的服务器的ip及端口上的服务,查看是否转发成功。
例如:假设这个方法可以访问服务器A上的服务(http://ipA:portA/api)
你可以尝试使用有rinetd的B服务器目前转发的端口进行访问(http://ipB:portB/api)
三、nginx进行端口转发
这部分相对于rinetd相对来说配置比较复杂,但是可以实现一对多的端口转发,因此在端口限制的情况下十分重要,出于现阶段项目组需要,留待后续更新。