Rinetd:一个用户端口重定向工具
Rinetd:一个用户端口重定向工具
概述
Rinetd 是一个 TCP 连接重定向工具,当我们需要进行流量的代理转发的时候,我们可以通过该工具完成。Rinetd 是一个使用异步 IO 的单进程的服务,它可以处理配置在 /etc/rinetd.conf
中的任意数量的连接,但是并不会过多的消耗服务器的资源。Rinetd 不能用于重定向 FTP 服务,因为 FTP 服务使用了多个 socket 进行通讯。
如果需要 Rinetd 随系统启动一起启动,可以在 /etc/rc.local
中添加启动命令 /usr/sbin/rinetd
。在没有使用 -c
选项指定其他配置文件的情况下,Rinetd 使用默认的配置文件 /etc/rinetd.conf
。
快速使用
git clone https://github.com/boutell/rinetd.git
cd rinetd
make && make install
echo "0.0.0.0 8080 www.baidu.com 80" > /etc/rinetd.conf
rinetd -c /etc/rinetd.conf
这里所有对 Rinetd 宿主机 8080 端口的请求都会被转发到 Baidu 上,注意: 保指定的端口没有被其他应用占用,如上面的 8080
端口。使用 kill -1
信号可以使 Rinetd 重新加载配置信息而不中断现有的连接。
转发规则
Rinetd 的大部分配置都是配置转发规则,规则如下:
bindaddress bindport connectaddress connectport
源地址 源端口 目的地址 目的端口
这里的地址可以是主机名也可以是 IP 地址。
如要将对 192.1.1.10:8080
的请求代理到 http://www.example.com:80
上,参照上面的规则配置如下:
www.example.com 80 192.1.1.10:8080
这里将对外的服务地址 http://www.example.com 重定向到了内部地址 192.1.1.10 的 8080 端口上。通常 192.1.1.10:8080 在防火墙的内部,外部请求并不能直接访问。如果我们源地址使用 IP 地址 0.0.0.0
,那么代表将该服务器所有 IP 地址对应端口上的请求都代理到目的地址上。
权限控制
Rinetd 使用 allow pattern
和 deny pattern
两个关键字进行访问权限的控制。如:
allow 192.1.5.*
deny 192.1.5.1
这里 pattern
的内容必须是一个 IP 地址,不能是主机名或者域名。可以使用 ?
匹配 0 - 9 的任意一个字符,使用 *
匹配 0 -9 的任意个的字符。在转发规则之前配置的权限规则会作为一个全局生效的规则生效,在转发规则之后配置的权限规则仅适用于本条转发规则。校验的过程是先校验是否能够通过全局规则,再校验特定的规则。
日志收集
Rinetd 可以产生使用制表符分隔的日志或者 Web 服务器下的通用日志格式。默认情况下,Rinetd 不产生日志,如果需要获取日志,需要添加配置:
logfile /var/log/rinetd.log
如果需要采集 Web 通用格式的日志,需要添加配置:
gcommon
No Comments