Posted at

Linuxで固定IP設定(設定ファイル・コマンド)

More than 3 years have passed since last update.


設定内容

家電量販店等で売られている一般的な家庭用ルータによるNAT環境を想定しています。ここでは以下のように設定します。

項目

備考

NIC名
eth0
NICや環境により異なります。eno1,ens3,enps2p3等。

IPアドレス
192.168.11.100
LANで使われていないIP

ネットマスク
255.255.255.0
ネットワークアドレス:192.168.11.0/24 プレフィックス:24

ゲートウェイ
192.168.11.1
ルータのLAN側IPアドレス

DNSサーバ1
192.168.11.1
ルータのDNSフォワーディング

DNSサーバ2
8.8.8.8
Google Public DNS

DNS設定が不要な場合もありますが、一応書いときます。

ルータのDNSフォワーディングが無効の場合でもGoogleのDNSサーバを見に行くようにします。

デフォルトではルータのDHCPサーバが起動していると思いますが、今回は使いません。

※しかし可能であれば、DHCPサーバのMACアドレス登録機能でIP固定化する方法を激しくお勧めします!!!

設定するIPアドレスがLAN上で使われていないこと、ネットマスクが正しい事を事前に確認してください。


設定確認方法

確認にはsudo権限は不要です。

$ ip a                     #"address"は短縮可

$ ip address show dev eth0 #NIC指定表示

$ ifconfig #起動中のNICを表示
$ ifconfig -a #DOWN中のNICも表示
$ ifconfig eth0 #NIC指定表示

$ ping 192.168.11.1 #ゲートウェイにパケットが届くことを確認
$ ping 8.8.8.8 #外部ネットワークのDNSサーバにパケットが届くことを確認
$ ping google.com #名前解決されることを確認


設定ファイルを編集するタイプ

※個人的には古いと言われても再起動後も設定が残るこの方法が好きです。

静的IPアドレスを設定するファイルは、Debian系とRedHat系で異なります。


Debian系(Ubuntu,Raspbian等)

※RaspbianのJessieからはこの方法ではうまくいきません。dhcpcdによる設定が推奨されています。


/etc/network/interfaces

auto eth0

iface eth0 inet static
address 192.168.11.100
netmask 255.255.255.0
gateway 192.168.11.1
dns-nameservers 192.168.11.1 8.8.8.8

複数のNICの設定を一つのファイルに書けるので楽ですよねぇ。。

設定を反映させるには、

# /etc/init.d/networking restart

or
# service networking restart
or
# systemctl restart networking

かOS再起動で反映されます。

反映されない場合は、設定にミスがあるはずです。


RedHat系(CentOS,Fedora等)

以下の行を追記。


/etc/sysconfig/network-scripts/ifcfg-eth0

ONBOOT=yes    #rewrite:no->yes

IPADDR=192.168.11.100
PREFIX=24
GATEWAY=192.168.11.1
DNS1=192.168.11.1
DNS2=8.8.8.8

複数NICの場合は、NICごとに別々のファイル設定が必要です。その場合は、GATEWAYやDNSの設定を/etc/sysconfig/networkに書きましょう。また、GATEWAYはデフォルトルートなので、一つしか設定できません。

設定を反映させるには、

# /etc/init.d/network restart

or
# service network restart
or
# systemctl restart network

かOS再起動で反映されます。


コマンドで設定するタイプ

コマンドで設定する場合は、以下の3つのコマンドがあります。


  • ip (iproute2)

  • nmcli (NetworkManager)

  • ifconfig (net-tools)

まず、ipとifconfigではDNSサーバを設定できないので、ここでは直接/etc/resolv.confに書きます。

※注意点として、CentOS7のminimalではデフォルトでnet-toolsパッケージが入っていないため、ifconfigコマンドがありません。ifconfigやnetstat等を使う場合はyum等でnet-toolsを入れる必要があります。

※また、UbuntuにはNetworkManagerが入っていないので、nmcliを使うにはaptでNetworkManagerを入れる必要があります。

個人的にはコマンドで設定せざるを得ない時はipコマンドを使ってます。

設定時にはデバイスがDOWNの状態で、ローカルにおいてroot又はsudo権限で作業しているものとします。


ip (iproute2)

# ip address add 192.168.11.100/24 dev eth0

# ip link set eth0 up
# echo "nameserver 192.168.11.1" >> resolv.conf
# echo "nameserver 8.8.8.8" >> resolv.conf


nmcli (NetworkManager)

# nmcli connection add type eth0 ifname eth0 con-name eth0

# nmcli connection modify eth0 ipv4.addresses "192.168.11.100/24 192.168.11.1"
# nmcli connection modify eth0 ipv4.dns "192.168.11.1 8.8.8.8"
# nmcli c down eth0
# nmcli c up eth0


ifconfig (net-tools)

# ifconfig eth0 192.168.11.100

# ifconfig eth0 up
# echo "nameserver 192.168.11.1" >> resolv.conf
# echo "nameserver 8.8.8.8" >> resolv.conf


あとがき

"静的IP"と"固定IP"の違いがよくわかってないのですが、自分はなんとなく、設定ファイルで設定した場合は"静的IP"、それ以外(DHCPやコマンドとか)は固定IPと呼んでます。