user icon

QNAP ファームウェア4.2.1 で起動スクリプトを追加して dhcpd を自由に設定する

「NAS(ナス)とNIC(肉)の相性は最高だネ」 夏野菜ジョークでハートキャッチ! muraveです。

QNAP TurboNAS で既存のファイルサーバー(Samba)を置き換えるための準備をしています。
このサーバーは DHCP Server の役割も担っているので NAS の選定時、機能が載っているという確認はしていました。

ところがいざ仕入れてセットアップと動作確認を進めると

「DHCP Server (dhcpd) の設定画面が NAS の IP より後ろしか range の設定できないという仕様でク◯だ!」

「設定した『既定のゲートウェイ』を再起動時に無視して自分のIPを設定しやがって◯ソとかいうレベルじゃなくバグってんじゃねーか!」

などありまして、大変困ってしまったのでした。 あまり使われてないんですかね。

置き換えするサーバーが居るネットワークはなぜか真ん中あたりにゲートウェイが居るし、range だって複数設定したいんだよ!

ということで、回避方法を調べていたところ dhcpd の設定ファイルを書き換えてから kill -HUP する独自の起動スクリプト(autorun.sh)を追加するという方法にたどり着きました。

参考にさせていただいたサイトです。


さて、はじめましょう。

QNAP TurboNAS のファームウェアは 2016/06/01 に公開された現時点では最新の 4.2.1 です。
adminでssh接続して作業します。autorun.sh 等の設置場所については qpkg.conf での他の起動スクリプトの場所を参考にしました。

qpkg.conf に独自の起動スクリプトについて追加します。
vi /etc/config/qpkg.conf

[autorun]
Name = autorun
Version = 0.1
Author = murave
Date = 2016-06-20
Shell = /share/CACHEDEV1_DATA/.qpkg/autorun/autorun.sh
Install_Path = /share/CACHEDEV1_DATA/.qpkg/autorun
Enable = TRUE

autorun.sh を作ります。
mkdir /share/CACHEDEV1_DATA/.qpkg/autorun
vi /share/CACHEDEV1_DATA/.qpkg/autorun/autorun.sh

#!/bin/sh
cp /share/CACHEDEV1_DATA/.qpkg/autorun/dhcpd_eth0.conf /etc/dhcpd_eth0.conf
kill -HUP `pidof dhcpd_eth0`

2つetherがある機種でeth0側で動作させているので dhcpd_eth0 になっているようです。

実行権限付与
chmod +x /share/CACHEDEV1_DATA/.qpkg/autorun/autorun.sh

元ファイルをコピーして独自 dhcpd_eth0.conf を作成。
cp /etc/dhcpd_eth0.conf /share/CACHEDEV1_DATA/.qpkg/autorun/dhcpd_eth0.conf
vi /share/CACHEDEV1_DATA/.qpkg/autorun/dhcpd_eth0.conf


        max-lease-time 86400;
        default-lease-time 86400;
        ddns-update-style ad-hoc;
        allow booting;
        allow bootp;
        class "pxeclients" {
        match if substring(option vendor-class-identifier,0,9)="PXEClient";


        }
        subnet xxx.xxx.xxx.0 netmask 255.255.255.0{
        interface eth0;
        #複数range書いたり、自由だ!(xxxは伏せ字的なヤツです)
        range xxx.xxx.xxx.100 xxx.xxx.xxx.159;
        range xxx.xxx.xxx.161 xxx.xxx.xxx.200;
        option routers xxx.xxx.xxx.160;


        option domain-name-servers 8.8.8.8, 8.8.4.4;
        }

まず、autorun.sh を直接実行してみて動作を確認。次に reboot して動作確認。

ps ax | grep dhcpd

11072 admin       744 S   /mnt/ext/opt/netmgr/api/core/dhcpdLink/dhcpd_eth0 -cf /etc/dhcpd_eth0.conf -lf /var/state/dhcp/dhcpd_eth0.leases -pf /mnt/ext/opt/netmgr/api/core/dhcpdLink/eth0.pid 

端末を対象ポート側に接続してdhcpでのIP振出確認。

IP振出履歴の確認。
more /var/state/dhcp/dhcpd_eth0.leases

オマケでWeb管理画面からの起動動作を調査して予想した手動でのeh0側 dhcpd 起動方法。

/sbin/daemon_mgr dhcpd_eth0 start "/mnt/ext/opt/netmgr/api/core/dhcpdLink/dhcpd_eth0 -cf /etc/dhcpd_eth0.conf -lf /var/state/dhcp/dhcpd_eth0.leases -pf /mnt/ext/opt/netmgr/api/core/dhcpdLink/eth0.pid"

設定ファイルが正しいかの確認などで便利です(kill -HUP して上がってこないので悩んでいたら設定ファイルが間違ってたのは秘密)

Facebooktwitterlinkedintumblrmail

タグ:

名前
E-mail
URL
コメント

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)