動機
最近PCを組みました。 そこそこ性能のいいやつです。 (PC を組んだ時の記事はこちら パソコンくんだ - pockestrap)
当然の如くノートPCよりもデスクトップのスペックが高いので、出先で作業するのがつらくなってきました。
ノートPCは RAM が 8GB しかないんです。CPU もコアがデスクトップの半分です。
人権が危ういレベルですね。
そこで、出先のノートPC からデスクトップにつないで作業しよう、と思い立ちました。
SSH
まずは SSH を通すことを考えました。
インターネットとおしゃべりしている Aterm さんの22番を空けて、デスクトップの22番にアドレス変換するようにしました。
また、X port forward を有効にして、GUIアプリを SSH で使えるようにしました。
そうすることで、ノートPCからデスクトップの計算資源を使えるようになりました。
GUIアプリまで使えます。やったね!
しかし、少し試してみるといくつか不満点があることに気が付きました。
通信量
テザリング回線で試したところ、X port forward をしているとかなりの通信量を持っていく上、ブラウザなどは実用的ではないぐらいにカクつきました。
固定回線であれば実用に耐えうるかも知れませんが…
IME の機嫌が悪い
IME に Fcitx を使用しているのですが、 X port forward で起動したアプリに対して IME が有効になりませんでした。
ノートPCのブラウザでWeb開発が出来ない
私は普段 Rails で Web 開発をしていることが多いです。
Rails はデフォルトだと TCPの3000番で Web サーバーが立ち上がります。
ですが、自宅ネットワーク内の3000番は自宅ネットワーク内からしかアクセス出来ません。
port forward で立ち上げたブラウザであれば 3000番を見ることは出来ますが、前述したとおり X port forward でのブラウザはかなりの負荷になります。
3000番を外部に公開することも出来ますが、セキュリティ的に厳しいです。
また、例えば3001番を使いたくなった場合などの柔軟性に欠けます。
VPN
前項の SSH での問題点の解決法を考えると、VPNを使用することが妥当であるように思えました。
全て解決出来そうですね。 調べたところ、ちょうど使用しているWiFiルータに PPTP による VPN 機能がついていたため、それを使用することにしました。
使用機器
構成図
手順
Air Station を Router モードに変更
これまで Air Station が Auto モードで動いていたのですが、Routerモードに変更しないと PPTP 機能を有効にすることが出来ないようです。 ということで、Air Station背面のスイッチをRouterに切り替えます。
Air Station の IP を固定
ルータのIPがころころ変わると不便なので、固定します。
見たところ、192.168.0.2
から64個が DHCP で配られるように設定されているので、適当に192.168.0.100
を割り当てました。
Air Station の Firewall を解除
Air Station はインターネットに直接繋がれていないため、Firewall を解除しても問題ありません。
192.168.0.0/24 -> 192.168.11.0/24 へのルーティングを書く
Router モードにする以前は一つのネットワークだったのですが、Router モードにしたことで Air Station で二つのネットワークに分かれてしまいました。
192.168.0.0/24 のデフォルトゲートウェイはインターネットになっていることが構成図からわかりますが、これだと 192.168.0.0/24 -> 192.168.11.0/24 の通信が出来ません。
そのため、上記の通信を先ほど設定した192.168.0.100
に流してやります。
Aterm の 詳細設定 → 静的ルーティング設定から設定します。
Air Station の NAT を無効にする
上記設定で 192.168.0.0/24 -> 192.168.11.0/24 への通信が出来るようになった…と見せかけて、まだ出来ません。
何故ならば、Air Station のアドレス変換機能が有効になってしまっているからです。
ということで、これを無効にします。
これで、上記ルーティングが機能するはずです。
PPTP サーバ機能を有効にする
本命の PPTP サーバ機能を有効にします。
また、下部の PPTP 接続ユーザーの編集ボタンからユーザーを追加します。
PPTP 用ポートを空ける
詳細設定 → パケットフィルタ設定から設定します。
PPTP は TCP の 1723番と、greプロトコル(47番)を使用します。
そのため、その二つの通信を許可します。
一番下の 47番 out はいらないかもしれない
PPTP パケットを Air Station に流す NAT変換を書く
詳細設定 → ポートマッピング設定から設定します。
TCP の 1723番と、47番のプロトコルを Air Station のIPに流すような NATエントリを追加します。
多分これでルータの設定は完了です。 もしかしたらなんか抜けてるかもですが。
クライアントPCの設定
今回はクライアントに Arch Linux を使用しますが、他のLinuxでもたいして変わらない手順だと思います。
パッケージインストール
$ sudo pacman -S pptpclient
初期設定
$ sudo pptpsetup --create <Profile Name> --server <IP Address> --username <User Name> --password <Password> --encrypt
<Profile Name>
は任意の識別しやすい名前をつけます。
<User Name>
と<Password>
は、作成したPPTP接続ユーザーのユーザー名とパスワードを使用します。
<IP Address>
には、インターネットに接続しているIPアドレスを入力します。
Aterm であれば、 情報 → 現在の状態 から確認することが出来ます。
接続
$ sudo pppd call <Profile Name> updetach
また、192.168.0.0/24
と192.168.11.0/24
がVPNのネットワークインターフェイスを使用するようにroute
コマンドを使ってルーティングテーブルを編集します(という認識だけど合ってるかな?)
ppp0
の部分はもしかしたら違う名前かも? ip link
とかで確かめてそれっぽいやつを使います。
$ sudo route add -net 192.168.11.0 netmask 255.255.255.0 ppp0 $ sudo route add -net 192.168.0.0 netmask 255.255.255.0 ppp0
まだ実際に外で使用していないのでなんとも言えないのですが、とりあえず構築は出来ました。
まだPPTPの仕組みを理解していないので、きちんと理解しておきたいですね…
参考
- BUFFALO WHR-300HP2ルータで自宅VPNを構築してみた - カタカタブログ
- はてなグループの終了日を2020年1月31日(金)に決定しました - はてなの告知
- FAQ for YAMAHA RT Series / IP Packet Filter
- PPTP Client - ArchWiki
追記
2015/09/26 routeコマンドを使ったルーティングテーブルについて追記