DynamicDNS更新をLinkstationで行う!

WindowsサーバーからLS-GLにルーターを変更しDynamicDNSのクライントもLinuxに移行します。
はじめはDiCEを入れてみたのですがEABIなdebianだからなのか起動しませんでした・・・
そこでapt-getでインストール出来るddclientというやつを使用します。

ますはインストールです。
apt-get install ddclient

インストール時に設定画面が表示されると思うので以下のように設定します。

[Choose dynamic DNS service provider]
 www.dyndns.org ←これは自分の環境に合わせてください。

[Your DynDNS fully qualified domain names]
 DDNSに登録したドメイン名

[Username for dynamic DNS service]
 ユーザ名

[Password for dynamic DNS service]
 パスワード

[Interface used for dynamic DNS service]
 eth1 ←これはご自分の環境で設定を。WAN側のデバイスです。(あとで設定し直すので適当でもいいです)

[Run ddclient on ppp connect]
  ←pppで接続している方はyesを選択

[Run ddclient as daemon?]
  ←サービスで動かさない場合はno

[ddclient update interval]
 300 ←デフォルトは5分間隔でIPが変わっていないかチェックします。短くするとCPUパワーを少し多く消費します。

基本的な設定はこれだけです。
ルーターやCTU経由で接続している場合は指定したデバイスはローカルIPなので
設定を変更しないと正常にIP変更を発見してくれませんので変更をします。

vi /etc/ddclient.conf

以下の行をコメントにして新しい設定を書きます。
use=if, if=eth1

↓変更後
#use=if, if=eth1
use=web

変更を保存してサービスをrestartします。
サービスが正常に動くか確認する為にOSの再起動でもいいでしょう。

正しく設定が行われていて正常に動くか確認する為に以下のコマンドを実行します。

ddclient -daemon=0 -verbose

ズラズラと表示されますが最後の行を確認してください。

SUCCESS: (設定したドメイン名): skipped: IP address was already set to (グローバルIP)

SUCCESSと出ていれば正しく更新作業を行ったということになります。

これでDynamicDNSの更新サービスの登録は終了です。

※日頃の動作確認の為のログ確認は/var/log/syslogで確認してください。

2013/05/17 追記
書き忘れていたので、今更ながら追記です・・・

max-intervalの設定は、行間を空けたりせず、個別のサーバー設定等と同じ箇所に書きます。
個別のサーバー設定箇所以外に書くと、global設定として設定されてしまいます。
(confには複数の個別サーバー設定が書けるので、このような仕様になっていると思われる)

設定が個別のサーバー設定として認識しているかは、以下のコマンドで確認可能です。

ddclient -daemon=0 -debug -verbose -noquiet

個別設定は
=== config ====
の下に表示されます。

私のサイトのドメイン(hiro7216.mydns.jp)設定ですと以下のように表示されます。
config{hiro7216.mydns.jp}{max-interval} : 1296000  ←15dが秒で表現されています

上記の様にドメイン設定の箇所に設定した値が表示されればOKです。

DHCPサーバーの構築

最後に残ったDHCPサーバーの構築を行いました。

非常に綺麗に纏めてあるページがあるのでそれを参考に設定しました。

DHCPサーバの構築

これもまたよく纏まっていて書き足すことも無いです(笑)

このページを参考に設定すれば難なく終わると思います。

これで一通りルーター化の設定が完了しました。

私の場合だと基本的なファイアウォールの設定はCTUで行っています。
更にgatewayとしてLS-GLを挟むことでセキュリティのレベルは少しだけ上がったように思います。
今後はCTUで出来ない細かいファイアウォールの設定を随時LS-GLのFilterに追加して強化していく予定です。

これにてLS-GLのルータ化は終了です。

自宅のネットワーク図

自宅のネットワーク図を作成しました。
この環境でセグメント別けの為にLS-GLをルーターとして構築しています。
現在もWindowsサーバーでルーティングしてセグメント別けされているのですが
Athlon64マシンを24時間稼動させていると電気代が・・・(笑)
またバックアップ等をスケジューリングでWindowsサーバーが処理しているので
SMBマウントやバックアップ周りまで設定が終わらないと完全移行は出来そうに無いです。
プリンターは稀にしか使わないのでその時にサーバーの電源入れればいいかなと思ってます。

※点線はセグメントで引いているのではなく部屋で引いてます。
 ファイルサーバーの左隣のWindowsクライアントは更に別の部屋なんですが面倒なので線引きませんでした。

2008/08/21 PS3をネットワーク図に新たに組み込みました。
ネットワーク図

UPnP搭載のルーターにする!

Windowsがクライアントとして存在する場合のgatewayにはUPnP機能が必要になりますね。
そこでルータ化の際にUPnP機能を盛り込みます。

以下のサイトを参考にインストールと設定を行いました。(感謝)

Linux ルータで、UPnP
※既にリンク先のサイトはなくなっているようです

この通りにやれば設置出来ちゃうので正直書くことは殆どありません(笑)

あえて書くならば最初に apt-get install g++ でg++をインストールと
書いてあるようにapt-get install uuid-dev をやるくらいかな・・・

後は「マルチキャストルーティングを追加」からは環境に合わせて設定を変えました。
紹介しているページではpppoeですが私の環境ではCTUなルーターに繋がっているので
/etc/rc.localに以下の文を追加しました。

# UPnP setting
echo “initialize start UPnP.”
/sbin/route add -net 239.0.0.0 netmask 255.0.0.0 eth0
# init UPnP
/usr/bin/upnpd eth1 eth0
echo “initialized UPnP.”

※eth0、eth1の部分は環境で変更してください。
 eth1=WAN側、eth0=LAN側になります。

DNSサーバー非搭載にする

DNSサーバーの検討をしました。
BINDやpdnsdなどを検討してみましたが私の環境ではネットワークのWAN最終口にはCTUという名のルーターが存在します。
なので直接そこを見れば済むわけでキャッシュの必要性も余り感じなかったので採用をやめました。
確かにローカル内のPCを簡単にDNSで引けるpdnsdは入れようと思いましたが
重要なPC等はどれも固定IPでIPも覚えちゃってるので導入を見送りました。

ただルータ化したLinux機に繋ぐクライアントの設定は
gateway=192.168.0.1(IPはサンプルです、自分の環境に合わせましょう)
DNS=192.168.24.1
とgatewayとDNSの設定が変わるのでこれだけ統一設定出来る方向で設定しました。
この設定はDHCPだとどうでもいいですしgatewayとDNSのIPが違うだけで本来は設定の必要性は全くありません(笑)

作成済みのiptablesのシェルスクリプトip-masqに以下の文を追加するだけです。

# DNS問い合わせをrouter(192.168.24.1)に静的変換する
echo “setting SNAT: udp,tcp port 53 in eth0 > routing 192.168.24.1”
iptables -t nat -A PREROUTING -i eth0 -p tcp –dport 53 -j DNAT –to-destination 192.168.24.1
iptables -t nat -A PREROUTING -i eth0 -p udp –dport 53 -j DNAT –to-destination 192.168.24.1

これで「gatewayのIP=DNSのIP」になって気分的にスッキリしました(笑)

※eth0という設定もサンプルです。環境によって違いますのでWAN側でなくLAN側のアダプター名をセットして下さい。

IPマスカレードを動かす!

NICの二枚挿しも無事終了したことですしNIC二つのIPセグメント間をマスカレード出来るようにIPマスカレードの登録を行います。

IPマスカレードの設定について書いてあるサイトを参考にしました。

IPマスカレードルータの構築

vi /etc/init.d/ip-masq

スクリプトの登録をします。

----------------------

#!/bin/sh
#
# iptables を用いてルーティングを行う
# シェルスクリプト
#

# IP フォワーディングを有効にする
echo 1 > /proc/sys/net/ipv4/ip_forward

# テーブルの初期化
iptables -t filter -F FORWARD
iptables -t nat -F POSTROUTING
iptables -t nat -F PREROUTING

# POSTROUTING, PREROUTING ともにアドレス変換を許可
iptables -t nat -P PREROUTING ACCEPT
iptables -t nat -P POSTROUTING ACCEPT

# フィルタの設定: 通過許可
iptables -t filter -P FORWARD ACCEPT

# 内部から外部への IP マスカレードを許可
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

# ftp 通信用のモジュールのロード
/sbin/modprobe ip_nat_ftp
/sbin/modprobe ip_conntrack_ftp

----------------------

起動時にスクリプトを実行する為に/etc/init.d/ip-masqをrc.localに登録した。

これで追加したNICデバイスのIPからLS-GL搭載のNICデバイスのIPへマスカレードが出来るはずである。
(設定上逆は出来ないはず)
クライアントのgatewayに追加したNICのIPアドレスを設定すればWAN側にもアクセス可能です。
(eth0がWANに繋がっていれば)
但しDNSの取得が追加したIPからは行えないのでDNSはプロバイダ提供のDNSのIPを指定する必要がります。
※今後LS-GLにDNSサーバー&DHCPサーバーの設置を考えています。この二つを動かせば完全ルータ化が完了します。
※DNSサーバーのアプリの選定などを行っていますのでそちらはもう少しお待ちください。

debianでは基本的にiptables関連の初期化は/etc/network/interfaces内に
if-upやpre-up、upなどを使ってネットワークデバイスの起動と連動させるのが一般的なようです。
(以前の記事のIPフィルターも同様にするのが望ましいようです)
ただ今回はNIC二枚でサーバーを運用しているのでどちらと連動させるかや
二重に連動したりしないかなど不安要素も多かったので起動時に1回だけ実行するようにしています。

この辺りの動きが今後完全に掴めたらinterfaces内に移行するかもしれません。
本来はデバイスの起動と連動しないとデバイス起動とスクリプト適用のその僅かな時間に
セキュリティが弱い時間帯が存在するので理解されている方はデバイス連動にすると思いますしすべきだと思います。

主にPC、車・バイク、トイガンなどについて書いてます