2014年3月26日水曜日

二つのインターフェースを持つサーバのWANアクセス

どうも、Qです。

題名がなんかものものしいですがw絵で描くとなんということは無いです。

The Internet

無線アクセス(3G,LTE等)

無線LANルータ(いわゆるモバイルルータ)

無線LAN

サーバ

宅内ネットワーク(Ethernet)

HUB(スイッチングハブ等)--その他PC等

無線LANルータ--無線LAN--その他PC等

無線アクセス
 |
The Internet


大体こういうイメージです。
肝は何かというと、

サーバはインターネット、即ちWANに出るインターフェース(物理ポート)が二つある、

ということです。
HUBおよび下の無線LANに繋がってるその他PC等は下側の無線アクセスしか通らないようになってるので、これ自体は普通にモバイルルータやスマフォでテザリングしてるのと同じです。

なんでこんなことしてるかというと、上側の無線LANルータはグローバルアドレスを持ったモバイルルータ(厳密にはそういうサービスに対応したSIMカード)がなので、サーバには外部からアクセス可能なのです。一方、下側の無線LANルータは、グローバルアドレスを持っていないモバイルルータ、但し速度はこっちの方が早い、という構成なので、その他PCにとっては都合がいいわけです。

こうすると、サーバのアクセス速度が低くても良いと割り切れば、格安でWANからのアクセスができることになります。具体的にはOCNのmobile one等ですね。



まあ結果的に上記の構成は構築できたのですが、一点ちょっとハマった点。

サーバにはCentOSを使ってますが、そのサーバはグローバルアドレスを持っている上側無線LANルータとは無線LAN で、下側無線LANルータには有線でつながってます(下側無線LANルータは、無線-有線変換をしてます)。
この構成だと、サーバはパケットを基本的に有線側に投げてしまうため、上側無線LANを経由してWANからアクセスしたときに、応答が返ってこないという現象が起きました。

より具体的には、sshやhttpでサーバにアクセスすると、最初のアクセスしたパケットは確かにサーバに届いているっぽいのですが、その応答パケットが下側の無線LANルータから抜けてくるため、アクセスしたPCには全然関係ないところからパケットが返ってきたことになり、通信ができなくなります。アクセスしたPCの環境によっては、そもそも返ってこないこともあるかもしれません。
(まあこれだ、ということに気づくのにかなり時間かかったんですがw)
 
で、解決方法で大分右往左往しましたが、手っ取り早いのはデフォルトゲートウェイを変えてしまうことです。上記の状態になっている場合、routeコマンドを打てば
default 下側無線LANルータアドレス
になっているはずなので、これを上側無線LANルータアドレスにして、元のを消すだけです。
(routeコマンドを打つだけというのに気づくのにこれまたかなり時間かかりましたw)

route add default gw ルータのアドレス wlan0

等ですね。
恒久的にするためには、上記コマンドを起動時に自動で叩くスクリプトでもいいかもしれませんが、自分の場合は/etc/sysconfig/network-scriptsの(但しCentOS6.5)
ifcfg-ethx
ifcfg-wlanx
内部のGATEWAYの項目を変えました。自分の場合は有線側を使いたくなかったので、ifcfg-ethxのGATEWAYをコメントアウトしただけです。
後はnetworkを再起動すればOK。
たったこれだけのために結構ハマりました・・・



余談ですが、実は下部高速無線LANルータには楽天のLTEアクセスを使ってます。最近規約改定があって、月の通信容量が一定を超えたら300Kbpsになる、とのことなんですが、更にそれでも使い続けると更に速度が絞られます。

測ってみたら100Kbpsもでませんでした。設定値は64~100Kbpsじゃないかな?と思うんですが規約には書いてないので分かりません。

300Kbpsは正直なにか大きなファイルのダウンロードでもしない限り、そんなに遅いという実感はないです。が、2段目に絞られた64~100Kbps状態だと、少なくともPC側はほぼまともに通信できません。スマフォでのwebブラウジングは意外となんとかなりますが。
(まあCentOS落としたりしたからねwそりゃ遅くもなりますwww)

とはいえ、お値段的には他のサービスと比べると決して見劣りはしてないので、まあ悪くないんじゃないかなぁ?と判断してます。僕の場合は、もう一個の無線LANアクセスを使えばいいというのもありますしw


とりあえずそんな感じです。