歡迎轉(zhuǎn)載,但請在開頭或結(jié)尾注明原文出處【blog.chaosjohn.com】
這是 端口轉(zhuǎn)發(fā) 系列文章的第二篇,歷史文章:
前言
筆者之前也過一篇文 - IPv6在虛擬機(jī)通過無線網(wǎng)卡橋接的網(wǎng)絡(luò)下無法使用(VMware WorkStation)
文中背景:筆者買了一臺 GK41,運(yùn)行的是隨機(jī)安裝的 Windows 10,同時借助 VMware Workstation 運(yùn)行了一臺虛擬客戶機(jī) Manjaro Linux。GK41 通過 RJ45 網(wǎng)口接入網(wǎng)絡(luò),虛擬機(jī)采用 橋接 該網(wǎng)口的有線網(wǎng)卡,給客戶機(jī) Manjaro Linux 提供網(wǎng)絡(luò)接入。至此,主機(jī)和客戶機(jī)都處于同一個局域網(wǎng)內(nèi),且都能分配到IPv4/IPv6,此時
-
GK41:192.168.0.41 -
Manjaro Linux:192.168.0.65
訴求
因為筆者不給 GK41 接顯示器,但又想通過 IPv6 遠(yuǎn)程訪問 Windows 10 的桌面,結(jié)合筆者之前造過 crontab + ddns6 的輪子,所以打算:
-
Manjaro Linux配置為開機(jī)自啟 -
Manjaro Linux上配置ddns6,通過cron定時檢測并更新自身的IPv6地址到域名manjaro-gk41.example.com -
Manjaro Linux轉(zhuǎn)發(fā)自己的3389端口到Windows 10的3389端口
3389端口是RDP(Remote Desktop Protocal)(微軟遠(yuǎn)程桌面協(xié)議)的默認(rèn)端口
發(fā)現(xiàn)問題
最直接的想到了 篇一 中的工具 - rinetd
然后就是 一頓操作猛如虎,試完發(fā)現(xiàn)不靠譜
因為 rinetd 不支持 IPv6,它只監(jiān)聽 IPv4地址 和轉(zhuǎn)發(fā)到 IPv4地址,詳見 rinetd 在其 Github 上的某 Issue - does the program support ipv6?。
老爺子回復(fù)道:可能不會支持 IPv6 了,因為這玩意自從上世紀(jì)九十年代開始,我就沒怎么動過了,添加 IPv6 支持估計會很難。

解決問題
在尋找 rinetd 替代品的過程中,筆者發(fā)現(xiàn)了 xinetd
xinetd和rinetd都是inetd("the Internet daemon")的替代品。不過inetd最早跟隨4.3BSD(1986年)推出,在如今的 主流 Linux 發(fā)行版 中都已經(jīng)被棄用了;而rinetd雖然在各大包管理器中均能找到,但它的作者也說了,自從上個世紀(jì)九十年代之后就沒怎么動過了;對于xinetd,雖然最后一個版本2.3.15發(fā)布于 2012年5月9日,但Github主頁上最近一次更新還在2016年。
xinetd 在 2.1.8.8pre* 版本(早于2000年6月4號),就增加了 IPv6 支持,太超前太牛逼了,詳見互聯(lián)網(wǎng)檔案館 2000-08-16 快照 和 互聯(lián)網(wǎng)檔案館 2013-06-07 快照(因官網(wǎng) http://www.xinetd.org 早已不可訪問,所以只能在 互聯(lián)網(wǎng)檔案館 里找到 2000-08-16 ~ 2013-06-09 之間的網(wǎng)頁快照)
安裝
-
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
配置
配置文件默認(rèn)位于 /etc/xinetd.d 目錄下,且安裝完會默認(rèn)創(chuàng)建一些常用的配置(默認(rèn)均為禁用狀態(tài):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
針對我的訴求,創(chuàng)建配置文件
# 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
該配置表示,監(jiān)聽本地網(wǎng)卡
IPv6地址的3389端口,然后轉(zhuǎn)發(fā)到192.168.0.41:3389
然后重啟 xinetd 生效,在 微軟遠(yuǎn)程桌面 里通過訪問 manjaro-gk41.example.com 即可訪問到 gk41 上運(yùn)行的 Windows 10。