FreeBSDでNIC(Network Interface Card)にIPアドレスを設定する方法です。
まずはじめに、IPアドレスの変更は慎重に行いましょう!!失敗するとネットワークに繋がらなくなります。
IPアドレスの設定(rc.conf)
FreeBSDでは、/etc/rc.conf にて、NICにIPアドレスを設定します。
インターフェイス名の確認
まず、ifconfigコマンドにてIPの設定を行おうとしているNICのデバイス名を確認します。
※Linux系はNICの種類に係わらずeth0,eth1といったような名前になるのですが、FreeBSDはNICの種類により
デバイス名が異なってきます。
下の結果は、私の検証用環境でifconfigを行った結果です。lnc0というデバイスに192.168.140.10というIPアドレスが振られています
今回はこれを変更してみます。
# ifconfig
lnc0: flags=108843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST,NEEDSGIANT>mtu 1500
inet6 fe80::20c:29ff:feec:9a92%lnc0 prefixlen 64 scopeid 0x1
inet 192.168.140.10 netmask 0xffffff00 broadcast 192.168.140.255
ether 00:0c:29:ec:9a:92
plip0: flags=108810<POINTOPOINT,SIMPLEX,MULTICAST,NEEDSGIANT> mtu 1500
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384
inet6 ::1 prefixlen 128
inet6 fe80::1%lo0 prefixlen 64 scopeid 0x3
inet 127.0.0.1 netmask 0xff000000
/etc/rc.conf設定
変更対象のデバイス名確認が完了しましたら、早速設定を行っていきます。
今回はIPアドレスを192.168.140.10から192.168.140.150に変更してみます。
NICにIPアドレスを設定するには設定ファイルである、/etc/rc.confを編集します
rc.confバックアップ
# cp -p /etc/rc.conf /etc/rc.conf_yyyymmdd
# vi /etc/rc.conf
変更前
ifconfig_lnc0="inet 192.168.140.10 netmask 255.255.255.0"
変更後
ifconfig_lnc0="inet 192.168.140.150 netmask 255.255.255.0"
設定反映
設定変更が終わりましたら、サーバの再起動を行って設定の反映を行います。
サーバの再起動を行いたくない場合は、/etc/netstart を実行し設定を反映させることもできます。
※ /etc/netstart はFreeBSD 6.1-RELEASEで確認しましたので、古いバージョンだと出来ないかも・・・
# /etc/netstart
devd already running? (pid=252).
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384
inet6 ::1 prefixlen 128
inet6 fe80::1%lo0 prefixlen 64 scopeid 0x3
inet 127.0.0.1 netmask 0xff000000
lnc0: flags=108843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST,NEEDSGIANT>mtu 1500
inet6 fe80::20c:29ff:feec:9a92%lnc0 prefixlen 64 scopeid 0x1
inet 192.168.140.150 netmask 0xffffff00 broadcast 192.168.140.255
ether 00:0c:29:ec:9a:92
route: writing to routing socket: File exists
add net default: gateway 192.168.140.1: route already in table
Additional routing options:.
DHCPの場合
DHCPでIPアドレスをもらう場合の設定です。
rc.confバックアップ
# cp -p /etc/rc.conf /etc/rc.conf_yyyymmdd
# vi /etc/rc.conf
変更前
ifconfig_lnc0="inet 192.168.140.10 netmask 255.255.255.0"
変更後
ifconfig_lnc0="DHCP"
設定確認
設定変更が完了しましたら、ifconfigコマンドを使用して設定内容が正しく反映されているか確認します。
# ifconfig
lnc0: flags=108843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST,NEEDSGIANT> mtu 1500
inet6 fe80::20c:29ff:feec:9a92%lnc0 prefixlen 64 scopeid 0x1
inet 192.168.140.150 netmask 0xffffff00 broadcast 192.168.140.255
ether 00:0c:29:ec:9a:92
plip0: flags=108810<POINTOPOINT,SIMPLEX,MULTICAST,NEEDSGIANT> mtu 1500
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384
inet6 ::1 prefixlen 128
inet6 fe80::1%lo0 prefixlen 64 scopeid 0x3
inet 127.0.0.1 netmask 0xff000000
sysinstallによる設定変更
設定ファイル(rc.conf)を直接編集するが嫌だという、
そんなあなたにお勧めなのがsysinstallというコマンドです。
# sysinstall
FreeBSDのバージョンによっては以下のようにコマンドを実行しなくてはいけません。
# /stand/sysinstall
設定方法は以下のとおりです
- 「Sysinstall Main menu」が表示されるので、「Configuer」を選択
- 「FreeBSD Configration Menu」が表示されるので、「Networking」を選択
- 「Network Service Menu」が表示されるので、「Interfaces」を選択
- 「Network interface infomation required」画面が表示されるので、設定変更を行いたいNICを選択
- 「User Confirmation Requested」が表示されるので、今回はIPv6を使わないので[No]を選択
- 引き続き「User Confirmation Requested」でDHCPを使用するか聞いてきますので、使用するなら「YES」を使用しないならば、「No」を選択します
※(DHCPを使用する場合はここで設定は終了です。自動的にDHCPサーバに接続してIPアドレスが割り振られます)
- DHCPを使用しない場合は、「Network Configuration」画面が表示されますので、IPアドレス等の設定を行い「OK」を選択します。
- 「Would you like to bring the lnc0 interface up right now? 」と表示されますので、「Yes」を選択します。
- 「Network Service Menu」で「Exit」を選択します。
- 「FreeBSD Configration Menu」が表示されるので、「Exit」を選択します。
- 「Sysinstall Main menu」が表示されるので、「Exit Install」を選択します。
- サーバの再起動を行い、設定を反映させます
ただ、この方法で設定を行っていくとrc.confファイルが汚されていきます:-P
cat で実際に確認してみますとそのさまが一目瞭然ですが、太字のとこに注目してください。sysinstallコマンドで何度か
設定を書き換えてみたのですが、その度にrc.confに追記という形で設定が継ぎ足されていって非常に見苦しくなります。
書式が分らないときなどに使用する分には良いのでしょうが・・・
# cat /etc/rc.conf
# -- sysinstall generated deltas -- # Tue Oct 10 18:33:50 2006
# Created: Tue Oct 10 18:33:50 2006
# Enable network daemons for user convenience.
# Please make all changes to this file, not to /etc/defaults/rc.conf.
# This file now contains just the overrides from /etc/defaults/rc.conf.
keymap="jp.106"
linux_enable="YES"
moused_enable="YES"
usbd_enable="YES"
sshd_enable="YES"
# -- sysinstall generated deltas -- # Fri Dec 22 14:28:59 2006
ifconfig_lnc0="inet 192.168.254.150 netmask 255.255.255.0"
hostname="VM-freeBSD"
# -- sysinstall generated deltas -- # Fri Dec 22 16:04:30 2006
ifconfig_lnc0="DHCP"
hostname="VM-freeBSD"
# -- sysinstall generated deltas -- # Tue Dec 26 13:58:26 2006
ifconfig_lnc0="inet 192.168.140.150 netmask 255.255.255.0"
defaultrouter="192.168.140.1"
hostname="VM-freeBSD"
とりあえず、書式の分らない時にはsysinstallを使っても良いとは思うのですが、設定変更後は
昔の設定箇所は削除するなりして、rc.conf内のゴミを掃除しておいたほうが良いような気がします。
一時的なIPアドレス変更(ifconfig)
rc.confへの設定はサーバ再起動等でrc.confが読み込まれれば、それ以後ずーっとその設定が反映され続けますが、
一時的にIPアドレスを変更したいという場合は、ifconfigコマンドを使用することによりIPアドレスを変更することができます。
ただし、このコマンドで変更したIPアドレスはサーバの再起動を行うとrc.confファイルに設定されているIP情報に戻ってしまいます。
書式
ifconfig [デバイス名] [IPアドレス] netmask [サブネットマスク]
注意
何度もしつこいようですが、ifocnfigコマンドでIPアドレスを設定した瞬間にIPアドレスが変更されます。
リモートメンテナンスの場合は十分に注意し作業してください。
設定例
NICに192.168.140.150/24のIPアドレスを設定する場合
# ifconfig lnc0 192.168.140.150 netmask 255.255.255.0
設定確認
ifconfig lnc0
lnc0: flags=108843 mtu 1500
inet6 fe80::20c:29ff:feec:9a92%lnc0 prefixlen 64 scopeid 0x1
inet 192.168.140.129 netmask 0xffffff00 broadcast 192.168.140.255
ether 00:0c:29:ec:9a:92