Linuxの固定IP設定

目的

今回はLinuxの固定IPの設定についてです。

サーバや組み込みなどではDHCPを用いたIPアドレスの割当ではなく、事前にデバイスとIPアドレスが関連付けられている固定IPの方が多く用いられます。

今回は、そんな任意のIPアドレスの割当方法をやっていきたいと思います。

方法

では、ここからはIPアドレスの設定を行っていきます。

Linuxの中でも、ディストリビューションによって採用するソフトが変わるため、今回はArchLinuxなどnetctlを使うOSをメインにやっていきます。

準備

まずは下記のものを用意してください

  1. ネットワークに接続したLinuxマシン

以上です。

一時的なIPアドレスの割当

この方法では、再起動すると設定が初期化されてしまうので、恒久的な設定をしたい場合は後述の方法で行ってください。

この方法は、接続したDHCP機能がないデバイスと通信がしたいときなどに一時的に使用します。

まずは、設定するデバイス名を調べてください。

                        $ ifconfig
                    

ArchLinuxの場合

ipを使って一時的に設定します。

デバイス名がわかったら、下記のコマンドを実行します。IPアドレス、サブネットマスク、デバイス名は適宜設定してください。

                            $ sudo ip addr add 192.168.7.2/24 dev enp4s0"
                        

もう一度ifconfigで確認して、IPアドレスが割り当てられていたら成功です。

恒久的なIPアドレスの割当

この方法で設定したIPアドレスは再起動しても設定が維持されます。

多くの場合はこちらの方法を使います。

まずは、設定するデバイス名を調べてください。

                        $ ifconfig
                    

ArchLinuxの場合

ArchLinuxはnetctlを採用しているため、設定にはnetctlを使います。

特徴として、デバイスごとに設定ファイルを作成して有効にします。

まずは、設定ファイルのテンプレートをコピーします。

                            $ sudo cp /etc/netctl/examples/ethernet-static /etc/netctl/staticip
                        

コピーしてきたファイルは下記のようなものになっています。

                           Description='A basic static ethernet connection'
                           Interface=eth0
                           Connection=ethernet
                           IP=static
                           Address=('192.168.1.23/24' '192.168.1.87/24')
                           #Routes=('192.168.0.0/24 via 192.168.1.2')
                           Gateway='192.168.1.1'
                           DNS=('192.168.1.1')
                        

インターフェイスやIPアドレスなどは適宜設定してください。

私の環境では、下記のように設定ました。

                           Description='A basic static ethernet connection'
                           Interface=enp4s0
                           Connection=ethernet
                           IP=static
                           Address=('192.168.1.23/24')
                           Gateway='192.168.1.1'
                           DNS=('8.8.8.8')
                        

ファイルを保存したら次に、有効にします。

                            $ sudo netctl enable staticip
                        

再起動後に固定IPが有効になります。

                            $ sudo reboot
                        

2015/10/21追記
上記方法ではうまくいかない場合があります。 その場合は下記方法を試してみてください。

                            $ sudo systemctl stop netctl-ifplugd@eth0
                            $ sudo netctl stop-all
                            $ sudo systemctl disable netctl-ifplugd@eth0.service
                            $ sudo systemctl enable netctl@eth0
                            $ sudo netctl enable staticip
                        

Ubuntu・Debianの場合

UbuntuやDebianでは、/etc/network/interfacesを編集することで実現します。

/etc/network/interfacesを開いてください。
ファイルには下記のようなものが書いてあると思います。

                            auto lo
                            iface lo inet loopback
                        

これはloの設定です。

今回は、さらにこれに設定したいデバイスの情報を追加していきます。

このファイルの下に下記の情報を追加してください。 デバイス名・アドレス・ネットマスクは適宜変更してください。

                            auto eth0
                            iface eth0 inet static
                            address 192.168.1.200
                            netmask 255.255.255.0
                            gateway 192.168.1.1
                            dns-nameservers 8.8.8.8
                        

ファイルを保存し、再起動後に固定IPが有効になります。

                            $ sudo reboot
                        

おわりに

わからないことなどがありましたら、ご質問だくさい。

2015/7/02