FreeBSDでdhcpを立てる- isc-dhcpd。
ルータの静的ルーティング追加したら「dhcp機能Offにしないと動かないお!」言われたので、仕方なくサーバマシンでdhcpを立てる事になった。
以下導入メモがてら、解説をします。
makeしようぜ!
# make /usr/ports/net/isc-dhcp40-server
するとconfig画面が。
今回はHost環境でdhcpを走らせるので、
だけenableに。
上のオプションは、dhcpユーザを作って、もしdhcpdが乗っ取られた場合でも、影響範囲をdhcpだけにするためのオプション。
下は。。。何だろう。誰か教えてー。
rc.confに追加。
とりあえず、make時に出てくる「これをrc.confに書けやハゲ!」的な内容から、必要なものを書く。
今回は、以下の通り。
dhcpd_enable="YES" # dhcpd enabled?
dhcpd_flags="-q" # command option(s)
dhcpd_conf="/usr/local/etc/dhcpd.conf" # configuration file
dhcpd_ifaces="em0" # ethernet interface(s)
dhcpd_withuser="dhcpd" # user name to run as
dhcpd_withgroup="dhcpd" # group name to run as
"dhcpd_ifaces=ifaces"は、複数枚NICが刺さっている場合、DHCPをばら撒きたいネットワークに繋がっている方を指定してやって下さい。
きちんと指定してやらないと、酷い目にあいます。きちんとifconfig使って確認しましょう。
dhcpd.confを書く。
rc.confに書いた場所(今回は"/usr/local/etc/dhcpd.conf"に設定ファイルをおきましょう。sampleファイルが"/usr/local/etc/dhcpd.conf.sample"としてあります。
割り当て計画を立てる。
今回、割り当ての計画を
- 静的に割り当てる範囲(マシン側でip固定): 〜7 #=> ex, jail用
- 静的に割り当てる範囲(dhcpで配布): 8〜127 #=> ex, メインマシン、Capマシン、その他ネットワーク繋がりっぱなしのマシン用
- dhcpで動的に配布: 128〜 #=> ex, お客さん用/繋いだり繋がなかったりするマシン用
とします。
以下、この場合における設定例です。
# dhcpd.conf # # option definitions common to all supported networks... option domain-name "home.k-ota.net"; option domain-name-servers 192.168.1.1; default-lease-time 600; max-lease-time 7200; # If this DHCP server is the official DHCP server for the local # network, the authoritative directive should be uncommented. #authoritative; # ad-hoc DNS update scheme - set to "none" to disable dynamic DNS updates. ddns-update-style none; # Use this to send dhcp log messages to a different log file (you also # have to hack syslog.conf to complete the redirection). log-facility local7; # dhcp dynamic distribution subnet 192.168.1.0 netmask 255.255.255.0 { range 192.168.1.128 192.168.1.254; option routers 192.168.1.1; option broadcast-address 192.168.1.255; option static-routes 192.168.128.10 192.168.1.2; } # dhcp static distribution host fon { hardware ethernet 00:18:XX:XX:XX:XX; fixed-address 192.168.1.8; } host main { hardware ethernet 00:1B:XX:XX:XX:XX; fixed-address 192.168.1.9; } host sub { hardware ethernet 00:E0:XX:XX:XX:XX; fixed-address 192.168.1.10; }
option domain-nameを適当に指定してやり、domain-name-serversにルータ(又はネームサーバ)を指定してやって下さい。
今回ddnsのアップデートは使わないのでddns-update-styleはnoneとしました。
log-facilityはデフォルトで。
そして、これ以降が肝となってきます。
dhcpによる動的なipの配布
設定部分としては以下のようになります。
subnet 192.168.1.0 netmask 255.255.255.0 { range 192.168.1.128 192.168.1.191; option routers 192.168.1.1; option broadcast-address 192.168.1.255; option static-routes 192.168.128.10 192.168.1.2; }
- rangeで動的に配布する範囲を指定します。
- options routersでルータを指定します。
- option broadcast-address でブロードキャストアドレスを指定してやります。
- option static-routesで、静的ルーティングを指定します。組になっていて、一つ目が宛先アドレス、二つ目がその宛先に対するルータのアドレスとなっています。カンマ区切りで複数指定可能です。
dhcpdを立ち上げろ!
/usr/local/etc/rc.d/isc-dhcpd start
これで立ち上がります。
で。
きちんとipが来ているかどうか確かめてやりましょう。
- windows系OSでのip再取得
- ipconfig /release <= 今持っているipを放す
- ipconfig /renew <= ip再取得
- unix系OSでのip再取得(root要ります)
- dhclient -r <= 今もっているipを放す
- dhclient <= ip再取得
参考:(linuxのマニュアルですが、isc-dhcpdの日本語manです)
http://www.linux.or.jp/JM/html/dhcp2/man5/dhcpd.conf.5.html