Friday, March 6, 2015

逆ポートフォワードを使ったprivate net上マシンへの接続

前回はL2TP/IPsecでVPN接続したけど、今回はあらかじめprivate network内のマシンからpublic network内のマシンにssh逆ポートフォワードしておけば、public network側のマシンのポートからprivate network内のマシンに入れるよねってのを実際にやってみたのだ。

ネットワーク構成

 [Surface3]    [ubuntu 14.04]
     | .102          | .104
----------------------- public:192.168.100.0/24
  | .101    | .103
[iMac]    [VyOS]
  | .200    | .1
---------------------- private:172.16.1.0/24
       | .201
     [RPi]

[XXX]...マシンの名前
  • ubuntu 14.04はSurface3上の仮想マシン(HyperV ブリッジ接続)
  • VyOSはiMac上の仮想マシン(Virtualbox ブリッジ接続 x 2)
  • private -> public はNATで出ていく
  • public側のルータはWiMaxルータだよ

と、構成上はともかく、実際のネットワーク接続は物理/仮想マシンが入り乱れたカオスな状態。

逆ポートフォワード

で、どういうssh接続をしたいかというと、あらかじめRPi(172.17.6.201:22)からubuntu 14.04(192.168.100.104:10022)に逆ポートフォワードしておき、Surface3(192.168.100.102)からubutntu 14.04の10022番にssh接続すると、RPiに接続するという感じ。

[RPi]--------[ubuntu 14.04]-----[surface3]
  |_______________↑ ↑______________|
    22 -> 10022          ssh -p 10022 pi@192.168.100.104

デフォルトのsshdの設定だと、逆ポートフォワードした時にIPを127.0.0.1(localhost)にバインドしちゃうから、これを0.0.0.0(任意のIP)にバインドするよう設定変更する。

ubuntuの/etc/ssh/sshd_config:

...
# 追加
Match User yukaary
    GatewayPorts yes

そんで設定を反映。

$ sudo service reload ssh

RPiにiMacからsshログインして以下のコマンドを実行。

ssh -f -N -R 10022:127.0.0.1:22 yukaary@192.168.100.104
yukaary@192.168.100.104's password: <ubuntu 14.04のパスワード>

これで完了。ubuntu 14.04側でTCPポートの状態を見てみる。

yukaary@yukaary-ubuntu-ein:~$ sudo netstat -tapn
[sudo] password for yukaary: 
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:10022           0.0.0.0:*               LISTEN
...(省略)...   

よしよし。ちゃんと待ち受けているね。ssh接続するとどうなるのか!!

$ ssh -p 10022 pi@192.168.100.104
Linux raspberrypi 3.18.7-v7+ #755 SMP PREEMPT Thu Feb 12 17:20:48 GMT 2015 armv7l

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Fri Mar  6 13:43:33 2015 from localhost
pi@raspberrypi ~ $ 

192.168.100.104:10022 --> 172.17.6.201:22という感じに繋がったのです。L2TP/IPsecに比べると、10022番しか空いてないから自由度は落ちるわけですがー。単に別ホスト(組織)の内部ネットワークに入りたかったら、こういう方法もあるということだったので試してみた。

No comments:

Post a Comment