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 重新加载配置信息而不中断现有的连接。
在/etc/rc.local 文件中,添加/usr/sbin/rinetd 或者 /usr/sbin/rinetd -c /etc/rinetd.conf 启动命令即可。 生产环境使用需谨慎! 生产环境使用需谨慎! 生产环境使用需谨慎!
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 的任意个的字符。在转发规则之前配置的权限规则会作为一个全局生效的规则生效, 在转发规则之后配置的权限规则仅适用于本条转发规则。校验的过程是先校验是否能够通过全局规则,再校验特定的规则。
将请求转发到制定ip和端口, 实现正向代理.
# 把本地所有 3547 端口的请求都转到 域名 www.baidu.com 的 3547 端口上 0.0.0.0 3547 www.baidu.com 3547
参考:
本文作者:shining_finger
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!