目录
开场白
虚拟化平台(libvirt+qemu-kvm、vmware、Hyper-V、VirtualBox等)将虚机接入网络的方式基本上就三种:Bridge、NAT、Host-Only。而默认的Virtual Network是NAT模式。
就目前的云平台而言,默认也是private network,然后通过绑定floating IP对外提供服务。
不管是Linux Bridge、openvswitch方式实现桥接,其配置都比默认网络增加了不少。而我们可以通过Rinetd工具实现网络转发,在默认Virtual Network的情况下,依然可以对外提服务访问。比如:将22、3389、8080等端口转发出去。
注意:经在生产环境上使用,高并发场景下rinetd性能差(rinetd 没有使用epoll,而是用了select),低并发场景或者测试环境下可以使用。优点:简单易用。
Rinetd简介
Rinetd 是一个 TCP 连接重定向工具,将TCP连接从一个IP:Port重定向到另一个(UDP应该不行[未验证])。rinetd是一个单进程服务,它可以处理到地址/端口对的任意数量的连接。这些address/port pairs通过/etc/rinetd.conf文件指定。由于rinetd使用非阻塞I/O作为单个进程运行,因此它能够重定向大量连接,而不会对计算机造成严重影响。
NOTE:Rinetd 不能用于重定向 FTP 服务,因为 FTP 服务使用了多个 socket 进行通讯。
快速使用
转发规则
绑定地址:将绑定端口绑定到本机的哪个IP地址上,0.0.0.0:绑定到所有接口。
绑定端口:任意,保证本地端口不冲突即可。
转发地址:真实服务所在IP地址,比如:NAT方式创建虚机自动分配的地址:192.168.122.253
转发端口:真实服务的端口,比如:虚机上SSH服务暴露的端口22/tcp。
访问控制
pattern 的内容:
规则类型:
全局规则:在转发规则之前配置的权限规则会作为一个全局生效的规则生效;特定规则:在转发规则之后配置的权限规则仅适用于本条转发规则。
匹配优先级:
校验的过程是先校验是否能够通过全局规则,再校验特定的规则。
注册systemd服务
# cat /usr/lib/systemd/system/rinetd.service [Unit] Description=Rinet server daemon After=network.target [Service] Type=forking ExecStart=/usr/sbin/rinetd ExecReload=/bin/kill -HUP $MAINPID ExecStop=/usr/bin/pkill rinetd [Install] WantedBy=multi-user.target
日志管理
日志格式如下:
01/Dec/2020:17:40:34 192.168.115.223 0.0.0.0 3389 192.168.122.253 3389 1299 1839 done-remote-closed
01/Dec/2020:17:42:42 192.168.115.223 0.0.0.0 3389 192.168.122.253 3389 41402 done-remote-closed
Windows上进行端口转发
如上所述,测试环境下,使用rinetd既方便又轻量,可谓佳品。但是Windows上怎么做端口转发呢?可以使用Windows自带的netsh工具进行端口转发,也很易用!
NOTE:1、必须使用管理员权限,否则执行命令将无效;2、只对TCP端口进行转发,对于UDP端口将不起作用;
管理员权限启动powershell,执行netsh进入交互视图:
参考链接:rinetd 在生产环境要谨慎使用_woshiaotian的专栏-CSDN博客
发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/231151.html原文链接:https://javaforall.net
