美文网首页
端口转发(篇二) - xinetd

端口转发(篇二) - xinetd

作者: Chaos_John | 来源:发表于2020-12-07 22:57 被阅读0次

    欢迎转载,但请在开头或结尾注明原文出处【blog.chaosjohn.com】

    这是 端口转发 系列文章的第二篇,历史文章:

    前言

    笔者之前也过一篇文 - IPv6在虚拟机通过无线网卡桥接的网络下无法使用(VMware WorkStation)

    文中背景:笔者买了一台 GK41,运行的是随机安装的 Windows 10,同时借助 VMware Workstation 运行了一台虚拟客户机 Manjaro LinuxGK41 通过 RJ45 网口接入网络,虚拟机采用 桥接 该网口的有线网卡,给客户机 Manjaro Linux 提供网络接入。至此,主机和客户机都处于同一个局域网内,且都能分配到IPv4/IPv6,此时

    • GK41:192.168.0.41
    • Manjaro Linux:192.168.0.65

    诉求

    因为笔者不给 GK41 接显示器,但又想通过 IPv6 远程访问 Windows 10 的桌面,结合笔者之前造过 crontab + ddns6 的轮子,所以打算:

    • Manjaro Linux 配置为开机自启
    • Manjaro Linux 上配置 ddns6,通过 cron 定时检测并更新自身的 IPv6地址 到域名 manjaro-gk41.example.com
    • Manjaro Linux 转发自己的 3389 端口到 Windows 103389 端口

    3389 端口是 RDP(Remote Desktop Protocal)(微软远程桌面协议) 的默认端口

    发现问题

    最直接的想到了 篇一 中的工具 - rinetd

    然后就是 一顿操作猛如虎,试完发现不靠谱

    因为 rinetd 不支持 IPv6,它只监听 IPv4地址 和转发到 IPv4地址,详见 rinetd 在其 Github 上的某 Issue - does the program support ipv6?

    老爷子回复道:可能不会支持 IPv6 了,因为这玩意自从上世纪九十年代开始,我就没怎么动过了,添加 IPv6 支持估计会很难。


    rinetd 作者称不会添加 IPv6 支持

    解决问题

    在寻找 rinetd 替代品的过程中,笔者发现了 xinetd

    xinetdrinetd 都是 inetd("the Internet daemon") 的替代品。不过 inetd 最早跟随 4.3BSD(1986年)推出,在如今的 主流 Linux 发行版 中都已经被弃用了;而 rinetd 虽然在各大包管理器中均能找到,但它的作者也说了,自从上个世纪九十年代之后就没怎么动过了;对于 xinetd,虽然最后一个版本 2.3.15 发布于 2012年5月9日,但Github主页上最近一次更新还在2016年。

    xinetd2.1.8.8pre* 版本(早于2000年6月4号),就增加了 IPv6 支持,太超前太牛逼了,详见互联网档案馆 2000-08-16 快照互联网档案馆 2013-06-07 快照(因官网 http://www.xinetd.org 早已不可访问,所以只能在 互联网档案馆 里找到 2000-08-16 ~ 2013-06-09 之间的网页快照)

    安装

    • Manjaro Linux / Arch Linux
    $ sudo pacman -S xinetd
    
    • Debian / Ubuntu
    $ sudo apt update
    $ sudo apt install xinetd
    
    • RHEL / CentOS
    $ sudo yum update
    $ sudo yum install xinetd
    
    • FreeBSD
    $ sudo pkg update
    $ sudo pkg install xinetd
    

    配置

    配置文件默认位于 /etc/xinetd.d 目录下,且安装完会默认创建一些常用的配置(默认均为禁用状态:disable = yes

    $ ls -lh /etc/xinetd.d
    -rw-r--r-- 1 root root 306 Nov 14  2019 rlogin
    -rw-r--r-- 1 root root 303 Nov 14  2019 rsh
    -rw-r--r-- 1 root root 315 Aug  8 03:49 rsync
    -rw-r--r-- 1 root root 205 Sep  5 17:34 sane
    -rw-r--r-- 1 root root 253 Nov 13  2019 servers
    -rw-r--r-- 1 root root 254 Nov 13  2019 services
    -rw-r--r-- 1 root root 157 Nov 14  2019 talk
    -rw-r--r-- 1 root root 160 Nov 14  2019 telnet
    -rw-r--r-- 1 root root 158 Sep  6 23:32 tftp
    

    针对我的诉求,创建配置文件

    # cat >> /etc/xinetd.d/win10-gk41 <<EOF
    service services
    {
            flags           = IPv6
            disable         = no
            type            = UNLISTED
            socket_type     = stream
            protocol        = tcp
            user            = nobody
            wait            = no
            redirect        = 192.168.0.41 3389
            port            = 3389
    }
    EOF
    

    该配置表示,监听本地网卡 IPv6地址3389 端口,然后转发到 192.168.0.41:3389

    然后重启 xinetd 生效,在 微软远程桌面 里通过访问 manjaro-gk41.example.com 即可访问到 gk41 上运行的 Windows 10

    相关文章

      网友评论

          本文标题:端口转发(篇二) - xinetd

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