美文网首页
rinetd 端口转发教程

rinetd 端口转发教程

作者: riverlcn | 来源:发表于2019-09-27 15:53 被阅读0次

    Linux 上有 iptables 具有端口转发的功能,但配置有点复杂,有另外一种TCP转发工具 rinetd,它能够将一个服务地址和端口转到到另外一个端口上(可以转发到内网哦).

    Linux 安装 rinetd

    先到官方网站下载源码 rineted. P.S. 2003.4.13 发布 rinetd 0.62 版本,十多年过去了,没有其他额外的修改,程序真稳定 ...

    下载之后,需要编译源码,先确定机器上安装了 gcc,然后编译安装。

    # 下载源码
    curl https://boutell.com/rinetd/http/rinetd.tar.gz -o rinetd.tar.gz
    
    # 解压编译
    tar xvzf rinetd.tar.gz
    cd rinetd
    make
    sudo make -p /usr/man/man8
    
    # 安装与使用
    sudo make install
    

    运行命令(需要管理员权限),查看安装结果.

    # sudo rinetd -h
    Usage: rinetd [OPTION]
      -c, --conf-file FILE   read configuration from FILE
      -h, --help             display this help
      -v, --version          display version number
    
    Most options are controlled through the
    configuration file. See the rinetd(8)
    manpage for more information.
    

    把需要转发的地址和端口写入配置文件 /etc/rinetd.conf(默认配置文件)

    # 格式 [source_address] [source_port] [destination_address] [destination_port]
    0.0.0.0 80 10.1.2.10 80
    

    然后运行程序

    sudo rinetd -c /etc/rinetd.conf
    

    如果需要终止程序,运行如下命令

    sudo pkill rinetd
    

    rinetd 更多说明和配置

    rinetd 是单进程服务,能够处理大量的端口工作,内存使用非阻塞IO处理,因此能够处理大量的连接,而且对机器性能影响不大。rinetd 不可以转达发哦 FTP 上,因为 FTP 需要多个 socket 连接.

    配置

    1. 配置文件

    默认配置文件是 /etc/rinetd.conf,当然了,你可以通过参数 -c 指定额外的配置文件。

    2. 转发规则

    转发规则的格式是:

    bindaddress bindport connectaddress connectport
    

    例如,

    206.125.69.81 80 10.1.1.2 80
    

    表示的意思是所有到地址为206.125.69.81,端口为 81 的请求,都会转发到 10.1.1.2 端口 80 上。当然,如果你想监听服务器上所有到 81 的地址,把 206.125.69.81 改成 0.0.0.0 就可以了。

    3. 允许和拒绝规则

    rinetd 支持通过允许或者拒绝规则过滤请求。请求规则的写法是这样的

    allow pattern
    

    其中 pattern 可以是 0-9(10个数字),.(IP 分割符号),?(模式匹配,只匹配一个字符),*(匹配任何数字). 说白了,就是IP的正则表达式.

    e.g.

    allow 206.125.69.*
    

    这个过滤规则对于位置是有要求的,过滤规则可能写在转发规则前和转发规则后. e.g.

    # 过滤规则在前
    allow 206.125.69.*
    206.125.69.81 80 10.1.1.2 80
    

    或者这样

    206.125.69.81 80 10.1.1.2 80
    
    # 过滤规则在后
    allow 206.125.69.*
    

    两者是有差别的,过滤规则在转发规则前,过滤规则就是全局性的,也就是说,只要不满足任何一个全局过滤规则,请求都会被拒绝。另外一种情况,过滤规则只对上面的一条转发规则有效。

    拒绝规则同样是这样的写法.

    deny pattern
    

    4. 日志

    rinetd 默认不写日志,可以在配置文件中,添加配置,让rinetd 记录日志. 添加如下内容

    logfile log-file-location
    

    e.g.

    logfile /var/log/rinetd.log
    

    输出日志格式是这样的,tab 分割的信息:

    07/Sep/2019:22:05:01    101.68.5.197    0.0.0.0 81      localhost       9000    1078    1188248 done-remote-closed
    07/Sep/2019:22:05:01    101.68.5.197    0.0.0.0 81      localhost       9000    2407    2366    done-remote-closed
    

    对应的字段表示:

    Date and time
    Client address
    Listening host
    Listening port
    Forwarded-to host
    Forwarded-to port
    Bytes received from client
    Bytes sent to client
    Result message
    

    还有一种日志格式,更 common 一些(好像就最后一个字段的信息,不一样,其他都一样, :-<),配置参数是 logcommon,输出日志是这样的,

    07/Sep/2019:22:11:24    101.68.5.197    0.0.0.0 81      localhost       9000    0       0       denied
    

    其他转发方式

    e.g. firewall

    firewall-cmd --add-masquerade
    firewall-cmd --add-forward-port=port=80:proto=tcp:toaddr=192.168.13.1:toport=80 --permanent
    firewall-cmd --add-forward-port=port=8080:proto=tcp:toaddr=192.168.13.1:toport=8080 --permanent
    

    参考

    相关文章

      网友评论

          本文标题:rinetd 端口转发教程

          本文链接:https://www.haomeiwen.com/subject/gkwyyctx.html