Unixでは、インターフェースの管理には ifconfig コマンドを用います。 インターフェースに割り当てられているイーサネット・アドレスを得るためには、 システムの起動後にコマンド
# /sbin/dmesg | grep fxp |
fxp0: <Intel Pro 10/100B/100+ Ethernet> port 0x7000-0x701f
mem 0xcb000000-0xcb0fffff,0xcc000000-0xcc000fff irq 3
at device 7.0 on pci5
|
これによって同時にインターフェース名 fxp0 も得られています。
正式には ifconfig -a で現在のインターフェース情報が全て得られます。
# /sbin/ifconfig -a
fxp0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
inet6 fe80::290:27ff:fe51:c128%fxp0 prefixlen 64 scopeid 0x2
inet 10.16.164.110 netmask 0xffffff00 broadcast 10.16.164.255
ether 00:90:27:51:c1:28
media: Ethernet autoselect (1000baseTX <full-duplex>)
status: active
...
|
インターフェースにIPを振ることによって、同一ネットワーク部を持つ、同一 セグメント内での通信が可能になります。通常は、起動時に/etc/rc.conf の 設定に従い、ifconfig コマンドによって自動的にインターフェースは設定 されます。従って、IPアドレスの変更や、DHCPによるIPの自動取得などの 設定は /etc/rc.conf を編集する必要があります。
デフォルトでは(/etc/defaults/rc.confによって)、インターフェースのリスト は自動的に取得されます。
network_interfaces="auto" # List of network interfaces (or "auto") |
このように auto が設定された場合、/etc/rc.d/netif で ifconfig -l が
実行され、リストが network_interfaces 変数にセットされます。
ifconfig -l の結果は、例えば以下のようになります。
> ifconfig -l fwe0 fxp0 plip0 lo0 |
(ちなみに、5R では /etc/network.subr にスクリプトで利用される共通の シェル関数が定義されています。)
上の場合、fwe0, fxp0 が物理デバイスですが、その他にlo0のループバック インターフェースや、擬似インターフェースなどもあります。
通常は、この auto の設定は変更しなくても良いでしょう。
次に、リストに上がったデバイスそれぞれに対して設定を書きます。 インストーラで設定した場合はその設定が /etc/rc.conf に書き込まれています。 次の /etc/rc.conf の設定は、fxp0 に対して DHCP による IP割り当てを 行う場合の設定です。
ifconfig_fxp0="DHCP" |
これを固定アドレス 10.16.240.16/24 に変更するには次のように書きます。
ifconfig_fxp0="inet 10.16.240.16/24 |
この設定によって実際には次のようなコマンドで起動時にIPの設定がされます。
# ifconfig fxp0 inet 10.16.240.16/24" |
つまり、ifconfig コマンドにそのまま引数として渡されている訳です。
複数のインターフェースがある場合には、同じように設定 /etc/rc.conf に
書くだけですが、通常は、まず手動で上記のコマンドを実行し、
ifconfig -a で結果を見て、更に ping などのツールで接続を
確認してから rc.conf に設定をします。
(このコマンドを使えば、現在の設定を変更する事も出来ますが、
DHCPでIPを取得している場合は注意が必要です。
FreeBSDの場合 dhclient が常時走っているので(ISC DHCPのクライアントソフト)、
固定アドレスを振る場合にはこのプロセスを殺してから行わなければ
なりません。)
FreeBSD では202.11.97.17/28 のような CIDR表記が可能なので
設定が簡単ですが、他のOSではこうしたCIDR表記が出来ないものもあります。
そうした場合には、昔ながらマスクによる指定をしなければなりません。
例えば、次のようなやり方です。
# ifconfig fxp0 inet 202.11.97.17 netmask 255.55.255.240 |