普段MacとLinuxを利用しているので、ほとんどがsshしてコマンド操作(CUI)で用が足りるんですが、
たまに遠隔地にあるWindows上でGUI操作をしないといけないことがあるので、stoneとvncで解決させました。
いろいろと方法はあると思いますが、stoneが一番手軽だったので。
(普段利用しているUT-VPN はWin用とLinux用のクライアントはあるんですが、Mac用クライアントが無いので、こんな面倒なことをしてます。)
現在の状態
MacbookAirとServerAは同じネットワーク(192.168.11.0/24)
ServerAとWindowsPCはVPN(UT-VPN)環境を構築済みで通信可能(172.16.100.0/24)
Macbook AirとWindowsPCは直接通信不可(WindowsPCは遠隔地でNAT配下)
環境(OS、IPアドレス)
MacbookAir(Lion) 192.168.11.20
ServerA(Fedora16) 192.168.11.30,172.16.100.50
WindowsPC(XP) 172.16.100.10
実現したいこと
stoneでパケットを中継して、MacBookAirからWindowsPCへのVNC接続を可能にする
MacbookAirからServerAの5910ポート(192.168.11.30:5910)にVNC接続すると、stoneで中継されWindowsPCの5900ポート(172.16.100.10:5900)に接続される
VPN(UT-VPN)上の通信で既に暗号化されているので、今回stoneでSSL化の必要は無し
stoneの導入
stoneはServerA(Fedora16)に導入
1
2
3
4
5
6
7
8
9
mkdir ~/src ~/bin
cd ~/src
wget http://www.gcd.org/sengoku/stone/stone-2.3e.tar.gz
tar zxvf stone-2.3e.tar.gz
cd stone-2.3d-2.3.2.7
curl -o stone.diff -LO "http://bugs.debian.org/cgi-bin/bugreport.cgi?msg=10;filename=stone.diff;att=1;bug=517574"
patch < stone.diff
make linux
cp stone ~/bin
デフォルトのままだとmake linuxでこけるので、ここのpatch も適用してます。patchの内容は下記のような感じで-D_GNU_SOURCEを追加している感じ
--- Makefile 2008-02-05 08:00:00.000000000 +0900
+++ Makefile 2009-08-19 08:59:00.000000000 +0900
@@ -97,7 +97,7 @@
$(MAKE) FLAGS="-DNT_SERVICE $(FLAGS)" LIBS="$(LIBS) $(SVC_LIBS) -ladvapi32 -luser32 -lshell32 -lkernel32" $(TARGET)
linux:
- $(MAKE) FLAGS="-O -Wall -DCPP='\"/usr/bin/cpp -traditional\"' -DPTHREAD -DUNIX_DAEMON -DPRCTL -DSO_ORIGINAL_DST=80 -DUSE_EPOLL $(FLAGS)" LIBS="-lpthread $(LIBS)" stone
+ $(MAKE) FLAGS="-O -Wall -DCPP='\"/usr/bin/cpp -traditional\"' -DPTHREAD -DUNIX_DAEMON -DPRCTL -DSO_ORIGINAL_DST=80 -DUSE_EPOLL -D_GNU_SOURCE $(FLAGS)" LIBS="-lpthread $(LIBS)" stone
linux-pop:
$(MAKE) TARGET=linux pop_stone
stoneの起動
5910ポートで待ち受けて、WindowsPC(172.16.100.10)の5900ポートに中継させます
1
2
3
4
~/bin/stone 172.16.100.10:5900 5910
Jan 7 12:33:43.735910 3078318336 start (2.3e) [11176]
Jan 7 12:33:43.759207 3078318336 stone 3: colinux:rfb <- 0.0.0.0:cm
常用するなら、supervisordとかで起動を管理するのがいいと思いますが、一時的に利用するだけなので、フォアグランドで起動。
MacbookAirからVNC接続
Macの画面共有だとうまく接続できないので、Chicken of the VNC を利用。
うまくVNC接続出来ました。
参考