Welcome Guest 
Login
Username:

Password:


Lost Password?

Register now!
サイト内検索
Main Menu
Site Info
Webmasters

m-naka
 


Who's Online
7 user(s) are online (2 user(s) are browsing MyWorks(記事))

Members: 0
Guests: 7

more...
Themes

(2 themes)
SmartSection is developed by The SmartFactory (http://www.smartfactory.ca), a division of INBOX Solutions (http://inboxinternational.com)
MyWorks(記事) > サーバ管理日記 > DD-WRT with LaFoneraで簡易ネットワークサーバ
DD-WRT with LaFoneraで簡易ネットワークサーバ
Published by M-naka on 2009/8/22 (3593 reads)
実家のADSLが一時不通になった。
直接はIP電話が使用不能になって発覚。

母親と電話で遣り取りしながら確認した限りでは、どうも落雷による過電流のせいでADSLモデムが破損したらしい。プロバイダに問い合わせたところ、代品を送るとのこと。早い対応で助かった。これでとりあえずメインのデスクトップPCは使えるようになった。他は不通のままだがとりあえずPCが使えるのが最優先。

で、お盆休みで帰省して実機を直接確認したところ、驚いた。

■スイッチングハブ
■サーバ機(Omoikane.mythril.jp)


も共に破損、ハブは動作不良、サーバは起動不能に陥っていた。落雷侮りがたし。

ハブは近くの家電量販店で手頃なものを購入、サーバ機はとりあえず諦めた。特に重要なデータは入っておらず、実家用のSPAMフィルタリングと、千葉(自宅)とのインターネットVPN程度にしか使っていなかったからだ。ただ、母親用にネットブックを1台買ったので、従来Omoikaneで持たせていた、無線LANアクセスポイント機能は何らかの方法で再実装させないといけない。

帰省前時点でサーバ機の起動不能はある程度予測できていたので、無線LANアクセスポイント機能も含め、手持ちのLaFoneraをDD-WRT化して1台実家に持って行けば当座は事足りると判断。DD-WRTにはサーバ機能が少なからず実装されているので、これを簡易サーバとして使うことにした。


1.DynamicDNS
 実家用のドメイン「mythril.jp」のDynamicDNS運用のため。DD-WRTには各種DynamicDNSサービス対応クライアント機能が実装されているのだが、ウチで使っているmydnsのリファレンスはなく、手動設定のカスタム設定でも上手くいかない。mydnsのIPアドレス更新はHTTPのBASIC認証「も」利用していることから、wgetをcronで定期実行させて対応。実行は従来どおり15分毎とした。

echo '*/15 * * * * root /usr/bin/wget -q -O - http:// [ユーザー名]:[パスワード]@ www.mydns.jp/login.html >/dev/null 2>&1' >> /tmp/crontab

2.www.mythril.ne.jp への定期アクセス
 Heatbeatに相当。こちらも従来どおり5分毎実行で、httpログでmythril.jp側のグローバルIPアドレスを定期把握できるようにするため。

echo '*/5 * * * * root /usr/bin/wget -q -O - http://www.mythril.ne.jp/ >/dev/null 2>&1' >> /tmp/crontab


3.ローカルDNS
 流石にBINDまでは動いていないが、dnsmasqが動いているので、これを利用する。

echo 'IPアドレス ホスト名' >> /etc/hosts


4.PPTPサーバ
 WebGUIからユーザー名とパスワード、サーバのIPアドレスとクライアントに配布するIPアドレス帯を指定、あとはサーバ機能を有効化するだけ。これだけはWebGUIで全て解決。


5.OpenVPN
 今回の山場。www.mythril.ne.jp に対するインターネットVPN。先にWebGUI上(何故かOpenVPN Client、だが)で事前共有鍵を貼り付け、登録しておく。WebGUIからの設定だけで開通させられそうにも思うのだが、事前共有鍵とtunデバイスを用いたレイヤ3VPNについてのリファレンスが見当たらず、実際WebGUIで試行錯誤したが上手くいかないので、相当に力技だが、起動スクリプトを活用して対応することに。順番的には、

 起動時にコンフィグを流し込み
→一旦OpenVPNを終了
→10秒間待機
→流し込んだコンフィグで起動し直し


とした。WebGUIでコンフィグの仕込みはできるのだが、実際には貼り付けた以外の余計な項目まで有効になってしまうので、一旦クリア→起動済みOpenVPN終了→流し込んだコンフィグで再度起動、として対応した。コンフィグはOmoikaneで使用していたものと同等だが、よい機会なので実家側のネットワークアドレスを192.168.0.0/24(従来は192.168.2.0/24)に変更してみた。

【起動スクリプト】
echo 'cd /tmp/openvpncl
dev tun
remote vpn.mythril.ne.jp
ifconfig 172.16.1.2 172.16.1.1
route 192.168.1.0 255.255.255.0 172.16.1.1
secret /tmp/openvpncl/client.key
port 5000
ping-restart 600
ping 60
comp-lzo
verb 1
mute 10' > /tmp/openvpncl/openvpn.conf

/bin/chmod 600 /tmp/openvpncl/client.key
/usr/bin/killall openvpn
/bin/sleep 10
/usr/sbin/openvpn --config /tmp/openvpncl/openvpn.conf --daemon


また、iptables側でもNATやIPマスカレード、5000/udpの開放が必要なので、ファイアーウォールスクリプトとして以下を登録した。

【ファイアウォールスクリプト】
/usr/sbin/iptables -A INPUT -i tun0 -j ACCEPT
/usr/sbin/iptables -A FORWARD -i br0 -j ACCEPT
/usr/sbin/iptables -A FORWARD -i tun0 -j ACCEPT
/usr/sbin/iptables -t nat -A POSTROUTING -o br0 -s 172.16.1.0/24 -j MASQUERADE
/usr/sbin/iptables -t nat -A POSTROUTING -o tun0 -s 192.168.0.0/24 -j MASQUERADE
/usr/sbin/iptables -I INPUT udp --dport 5000 -j ACCEPT



あと、mythril.jp側で、

■ADSLモデムの静的ルーティング設定で、192.168.1.0/24へのゲートウェイとしてLaFonaraのIPアドレスを指定

mythril.ne.jp 側で、

■受け側のgungnir.mythril.ne.jpのIPマスカレード設定を192.168.2.0/24→192.168.0.0/24に変更
■ADSLモデムの静的ルーティング設定で、192.168.0.0/24へのゲートウェイとしてgungnir.mythril.ne.jpを指定
■OpenVPNのコンフィグファイルのrouteエントリのネットワークアドレスを192.168.0.0に変更



を仕込んで終了。これでDD-WRTを再起動、gungnir.mythril.ne.jpのiptablesとOpenVPNを再起動させ、無事にLAN間接続VPNが復旧した。先にPPTPサーバだけ有効にさせておいたので実家PCのリモートサポートは一応できていたが、OpenVPNでのLAN間接続の方が利便性その他諸々が格段に上である。


前述のとおり起動スクリプトを多用しており、かなり力技ではあるのだが、柔軟な設定ができるのはやはりLinuxベースの強みだなぁと改めて実感した。機器構成上、ストレージ領域は皆無(そりゃそうだ、『ルータ』なんだから)で、サーバというよりは間違いなく「NW機器」。だが、フラッシュメモリ駆動でかつ単純構成なため、耐障害性は従来のOmoikaneよりも遥か上を行き、単純なネットワークサーバ機能としては同等。おまけに電力消費が極めて少ない。これに雷サージを付ければ無敵の簡易サーバではなかろうか。

Navigate through the articles
Previous article Gungnirがクラッシュ→データサルベージ→レストア cyrus-imapdのPOP3 over SSL対応 Next article
The comments are owned by the poster. We aren't responsible for their content.
XOOPS Cube PROJECT
Powered by Mythril Networks © 2003-2022 The Mythril Networks Project