6
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Linux経由でリモートデスクトップ接続をフォワーディング

Last updated at Posted at 2017-03-03

概要

リモートデスクトップ接続を通常の接続ではなく、Linuxサーバを経由して接続する場合、sshのポートフォワーディングなどの方法がありますが
これは接続しようとするユーザに、やや負担があります。

また、Apache Guacamoleを利用して、ブラウザ経由でリモートデスクトップ接続させることもできますが、環境構築がやや面倒ですし、できればWindow標準のリモートデスクトップクライアントで繋ぎたいです。

そこで、以下の方法でより簡易にフォワーディングすることができます。

イメージ図

Connection Image

インストール

まずLinuxサーバにsocatが入っていなければsocatをインストールします。

$ uname -a
Linux ip-hogehoge 4.4.44-39.55.amzn1.x86_64 #1 SMP Mon Jan 30 18:15:53 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
$ sudo yum install socat
$ socat -V
socat by Gerhard Rieger - see www.dest-unreach.org
socat version 1.7.2.3 on Mar  6 2014 21:44:52
   running on Linux version #1 SMP Mon Jan 30 18:15:53 UTC 2017, release 4.4.44-39.55.amzn1.x86_64, machine x86_64
features:
  #define WITH_STDIO 1
  #define WITH_FDNUM 1
  #define WITH_FILE 1
  #define WITH_CREAT 1
  #define WITH_GOPEN 1
  #define WITH_TERMIOS 1
  #define WITH_PIPE 1
  #define WITH_UNIX 1
  #define WITH_ABSTRACT_UNIXSOCKET 1
  #define WITH_IP4 1
  #define WITH_IP6 1
  #define WITH_RAWIP 1
  #define WITH_GENERICSOCKET 1
  #define WITH_INTERFACE 1
  #define WITH_TCP 1
  #define WITH_UDP 1
  #define WITH_SCTP 1
  #define WITH_LISTEN 1
  #define WITH_SOCKS4 1
  #define WITH_SOCKS4A 1
  #define WITH_PROXY 1
  #define WITH_SYSTEM 1
  #define WITH_EXEC 1
  #define WITH_READLINE 1
  #define WITH_TUN 1
  #define WITH_PTY 1
  #define WITH_OPENSSL 1
  #undef WITH_FIPS
  #undef WITH_LIBWRAP
  #define WITH_SYCLS 1
  #define WITH_FILAN 1
  #define WITH_RETRY 1
  #define WITH_MSGLEVEL 0 /*debug*/

socatを起動

以下のように3389で待ちうけて、対象サーバへフォワーディングします。

$ socat tcp4-listen:3389,reuseaddr,fork TCP:35.160.1.26:3389

すると、「63.36.3.10」へ接続するだけで、うまく接続を「35.160.1.26」へフォワーディングしてくれます。
RDP Client

試してダメだったこと

最初はnc(netcat)を利用してやろうとしましたが、できませんでした。
ncは標準で入っていたnc(BSD版?)やGNU Netcatでやりましたが、結果は同じく、繋いだ瞬間に"connection reset by peer"となりました。

BSD_netcat
$ mkfifo fifo
$ nc -l 3389 < fifo | nc 35.160.1.26 3389 > fifo
GNU_netcat
$ nc -L 35.160.1.26:3389 -p 3389 -vvv

追記

試しに多段経由もしてみましたが、問題なく接続できました。

参考

proxying through complex situations

6
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?