純規の暇人趣味ブログ

手を突っ込んで足を洗う

[Ubuntu]ローカルIPアドレスを固定にする

      2016/11/02    HimaJyun

今日もニコニコ元気にアドミン、@HimaJyunです。

私がUbuntuでサーバ構築をする際に戸惑ったのが「ローカルIPを固定する」事でした。

ググってもみても上位に出るのがGUI(デスクトップ)でのやり方や、DNSがなんとかでー……

とにかく、私が困ると言う事はみなさんも困ると言う事でしょうし、後の方のために記事にしようと思います。

最初に

まず最初に、検証に利用しているバージョンは「Ubuntu Server」の「14.04」と「16.04」です。

まさか今この記事をご覧の方でこれより古いバージョンをお使いの方は居ないと思われます。

また、みなさんが「ローカルIP」が何かをご存知である事を祈っています。(ローカルIPとグローバルIPの違いが分からない程度の能力ではサーバ構築は早過ぎます)

各種設定を確認

IPアドレスを固定にするには「アドレス」、「ネットマスク」、「ゲートウェイ」、「DNSネームサーバ」の4つが必要です。

このうち、「アドレス」はある程度自由に決められますが、他の項目はまず固定なので予め確認してメモでも取っておきましょう。

自分のネットワークでのこれらの値が分かっている方は「IPアドレスを固定する」の項目まで飛ばしてください。

アドレスとネットマスク

「ifconfig」コマンドを実行すれば良いです。

コマンドを実行すると以下の様に表示されると思います。(言語設定によっては日本語で表示されるかも知れません)

test@Server:~$ ifconfig
eth0 Link encap:Ethernet HWaddr 00:00:00:00:00:00 
 inet addr:192.168.1.2 Bcast:192.168.1.255 Mask:255.255.255.0
 inet6 addr: fe80::a00:27ff:fece:3d58/64 Scope:Link
 inet6 addr: 2001:a453:50a3:ad00:a00:27ff:fece:3d58/64 Scope:Global
 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
 RX packets:356 errors:0 dropped:0 overruns:0 frame:0
 TX packets:401 errors:0 dropped:0 overruns:0 carrier:0
 collisions:0 txqueuelen:1000 
 RX bytes:32636 (32.6 KB) TX bytes:47903 (47.9 KB)

lo Link encap:Local Loopback 
 inet addr:127.0.0.1 Mask:255.0.0.0
 inet6 addr: ::1/128 Scope:Host
 UP LOOPBACK RUNNING MTU:65536 Metric:1
 RX packets:309 errors:0 dropped:0 overruns:0 frame:0
 TX packets:309 errors:0 dropped:0 overruns:0 carrier:0
 collisions:0 txqueuelen:0 
 RX bytes:22625 (22.6 KB) TX bytes:22625 (22.6 KB)

この中の「inet addr」がローカルIP、「Mask」がネットマスクです。

言語設定が日本語の場合は「inetアドレス」と「マスク」になります。

この場合はアドレスが「192.168.1.2」で、ネットマスクが「255.255.255.0」です。

メモを取っておきましょう。

ゲートウェイ

「route -n」コマンドを実行すれば良いです。

以下の様に表示されます。

test@Server:~$ route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.1.1     0.0.0.0         UG    0      0        0 eth0
192.168.1.0     0.0.0.0         255.255.255.0   U     0      0        0 eth0

この中の「Gateway(日本語だと「ゲートウェイ」)」がゲートウェイです。
この場合だと「192.168.1.1」ですね、メモを取っておきましょう。

DNSネームサーバ

DNSネームサーバは「cat /etc/resolv.conf」コマンドを実行すれば良いです。
コマンドを実行すると以下の様に表示されます。

# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
# DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver 192.168.1.1

読んで字の如く「nameserver」がネームサーバですね。
メモを(ry

IPアドレスを固定する

さて、先程の項目で必要な設定の確認が出来ました。

エディタで「/etc/network/interfaces」を開きましょう。

「エディタでファイルを開く」と言う事の意味が分からない方はとりあえず以下のコマンドを

sudo nano /etc/network/interfaces

コマンドを実行すると「[sudo] password for [ユーザ名]」と表示されると思うので、表示されているユーザ名のパスワードを入れて下さい。

ちなみに、パスワードは一切表示されませんが、そう言う仕様です、きちんと入っているので気にせずどうぞ。

先に説明しておきますが、nano(上のコマンドで利用する場合)ではCtrl+Oが保存、Ctrl+Xが終了です。

for 16.04

何故かこの記事が人気を博しているみたいなので、16.04に対応した方法も書いておきましょう。

16.04から、多くの場合「eth0」だったものが「enpNsN」になります。(Nはマシンによって異なる番号)

例えば、今、私の手元にある仮想環境では「enp0s3」になっています。

以下の14.04での手法で「eth0」となっている所を自分のサーバにあった「enp~」に読み替えて下さい。

ローカルIP固定

14.04ではほぼ大抵多くの場合で「eth0」となっているでしょう。(16.04ではenp~なので読み替えて下さい。)

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto eth0
iface eth0 inet dhcp

# This is an autoconfigured IPv6 interface
iface eth0 inet6 auto

10行目の「iface eth0 inet dhcp」を「iface eth0 inet static」に書き換えて下さい。

書き換えたらその下の行にいくつかの項目を追加します。

以下の様に変更して下さい。

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto eth0
iface eth0 inet static
address [設定したいIPアドレス]
netmask [ネットマスク]
gateway [ゲートウェイ]
dns-nameservers [ネームサーバ]

# This is an autoconfigured IPv6 interface
iface eth0 inet6 auto

今回の場合は、IPアドレスとして「192.168.1.2」を設定したいので以下の様にします。

その他項目は先程メモを取った値を設定しましょう。

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto eth0
iface eth0 inet static
address 192.168.1.2
netmask 255.255.255.0
gateway 192.168.1.1
dns-nameservers 192.168.1.1

# This is an autoconfigured IPv6 interface
iface eth0 inet6 auto

変更が出来たら保存(Ctrl+O)してファイルを閉じます。(Ctrl+X)

ちなみにですが、こんな感じでインデントすると読みやすくなりますよ

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto eth0
iface eth0 inet static
    address 192.168.1.2
    netmask 255.255.255.0
    gateway 192.168.1.1
    dns-nameservers 192.168.1.1

# This is an autoconfigured IPv6 interface
iface eth0 inet6 auto

再起動

後はネットワークを再起動すればいいのですが、一般的に紹介されているネットワークを再起動するコマンドの殆どがUbuntu Server 14.04/16.04では正しく動作しないため、サーバそのものを再起動しましょう。(どなたか14.04/16.04でネットワークの再起動を行うコマンドをご存知でしたら教えて下さい)

サーバの再起動は「sudo reboot」コマンドです。

再起動後に再び「ifconfig」を実行する事で設定が変更されているのが分かると思われます。

 - サーバ運営 ,