Linux(CentOS 7)でルータを構築する最も簡単な手順

前回は Windows Server をルータにする手順を紹介した。

Windows Server をルータにする2つの方法(レジストリ or サービス)

今回は、CentOS をルータにする手順を紹介する。

検証環境

Linux(CentOS 7)でルータを構築する最も簡単な手順

本記事の検証環境は上図のようになっている。

CentOS のバージョンは7.4(Minimal)を使用する。

CentOS のバージョン確認方法

 

CentOS のバージョンは以下のコマンドで確認できる。

 

※以降、わかり易いようにコマンド・設定変更箇所はこの色で記述する。

[root@localhost ~]#cat /etc/redhat-release
CentOS Linux Release 7.4.1708 (Core)

ネットワークの基礎になるが、”192.168.1.1″ の Windows 10 端末と “192.168.2.2” の Windows 10 端末は相互に通信が通らない。本記事では CentOS 7.4 のIPアドレスの設定から手順を紹介していくが、例え CentOS 7.4 に適切なIPアドレスを設定したとしても、それは同様だ。

なお、IP アドレスの設定方法など、 Linux の操作方法に問題がない場合は「IP フォワーディングの有効化」から読んでいただければ、すぐにでも CentOS をルータにすることが可能だ。

IP アドレスの設定

Linux に限らず、デバイスをルータにしたいのであれば、まずは NIC に IPアドレスを設定しなければ始まらない。今回の検証環境の CentOS には NIC が2つ存在するので、それぞれに IP アドレスを設定する必要がある。

まず、CentOS にログイン後、以下のコマンドを実行することで インターフェースの状態を確認することができる。

[root@localhost ~]#nmcli device

以下のような結果が返ってくるだろう。つまり、2つの NIC が無効化されている。

Linux(CentOS 7)でルータを構築する最も簡単な手順

Linux はデフォルトで NIC が無効化されている場合がある。今回の CnetOS 7.4 (Minimal) もそれに該当している。

NIC の有効化と IP アドレスの設定は、以下のコマンドで同時に行うことが可能だ。

[root@localhost ~]#vi /etc/sysconfig/network-scripts/ifcfg-enp0s3

※「enp0s3」の部分は上記で実行した「nmcli device」コマンドの結果に従う。

コマンドを実行すると以下のようなコンフィグファイルが開かれる。

TYPE=Ethernet

PROXY_METHOD=none

BROWSER_ONLY=no

BOOTPROTO=dhcp

DEFROUTE=yes

IPV4_FAILURE_FATAL=no

IPV6INIT=yes

IPV6_AUTOCONF=yes

IPV6_DEFROUTE=yes

IPV6_FAILURE_FATAL=no

IPV6_ADDR_GEN_MODE=stable-privacy

NAME=enp0s3

UUID=0c504f71(以下省略)

DEVICE=enp0s3

ONBOOT=no

上記のコンフィグを編集していく。vi で開いたため、キーボードの「i」を押してインサートモードに移行する。

最終的に以下になるようファイルを編集する。

TYPE=Ethernet

PROXY_METHOD=none

BROWSER_ONLY=no

BOOTPROTO=none

DEFROUTE=yes

IPV4_FAILURE_FATAL=no

IPV6INIT=yes

IPV6_AUTOCONF=yes

IPV6_DEFROUTE=yes

IPV6_FAILURE_FATAL=no

IPV6_ADDR_GEN_MODE=stable-privacy

NAME=enp0s3

UUID=0c504f71(以下省略)

DEVICE=enp0s3

ONBOOT=yes

 

IPADDR=192.168.1.254

NETMASK=255.255.255.0

※「ONBOOT」と「IPADDR」の間の空行は不要だが、追加した行を区別するために今回は挿入している。

編集が完了したらキーボードの「ESC」を押下し、インサートモードから抜ける。その状態で「:wq」を入力し、エンターを押下することで保存が完了する。もしも間違ってしまい、保存せずに終了したい場合は「:q!」だ。

同じように2つ目の NIC の IP アドレスも設定する。

[root@localhost ~]#vi /etc/sysconfig/network-scripts/ifcfg-enp0s8

先ほどと同様の編集を行い、内容を保存する。

TYPE=Ethernet

PROXY_METHOD=none

BROWSER_ONLY=no

BOOTPROTO=none

DEFROUTE=yes

IPV4_FAILURE_FATAL=no

IPV6INIT=yes

IPV6_AUTOCONF=yes

IPV6_DEFROUTE=yes

IPV6_FAILURE_FATAL=no

IPV6_ADDR_GEN_MODE=stable-privacy

NAME=enp0s8

UUID=f118c10c(以下省略)

DEVICE=enp0s8

ONBOOT=yes

 

IPADDR=192.168.2.254

NETMASK=255.255.255.0

修正が完了したら、「reboot」コマンドで CentOS を再起動する。

起動後に「nmcli device」コマンドを実行すると、以下のように NIC がアクティブになっているはずだ。

Linux(CentOS 7)でルータを構築する最も簡単な手順

疎通確認

Cent OS の インターフェース設定(NIC の有効化と IP アドレスの設定)を行ったことで、冒頭の検証環境通りの構成となっている。

しかし、先述したが "192.168.1.1" ⇔ "192.168.2.2" は通信ができない。

Linux(CentOS 7)でルータを構築する最も簡単な手順

192.168.1.1 からは 192.168.1.254 には届くが “192.168.2.2” には届かない

Linux(CentOS 7)でルータを構築する最も簡単な手順

192.168.2.2 からは 192.168.2.254 には届くが “192.168.1.1” には届かない

Linux(CentOS 7)でルータを構築する最も簡単な手順

CentOS は 2つのNICでそれぞれの端末に接続しているので、両方に通信が届く

ifcfg の編集箇所について

上記の手順では、"IPADDR" と "NETMASK" 以外にも「BOOTPROTO」と「ONBOOT」というパラメータを修正した。それぞれの修正理由を下記に記す。

「BOOTPROTO=dhcp」の場合どうなるのか

"none" に書き換えた「BOOTPROTO」の値をデフォルトの「dhcp」に戻すとどうなるのか。

BOOTPROTO=dhcp

下図のように、「connecting (getting IP configuration)」となる。

Linux(CentOS 7)でルータを構築する最も簡単な手順

通信自体は問題なさそうに見えるが、実際は ping に応答しなくなる。

Linux(CentOS 7)でルータを構築する最も簡単な手順

"192.168.1.1" から 192.168.1.254" に ping が飛ばなくなる

「ONBOOT=no」の場合どうなるのか

"yes" に書き換えた「ONBOOT」の値をデフォルトの「no」に戻すとどうなるのか。

ONBOOT=no

下図のように、「disconnected」となる。つまり、再起動後にインターフェースが up しなくなる。

Linux(CentOS 7)でルータを構築する最も簡単な手順

当然、ping にも応答しない。

Linux(CentOS 7)でルータを構築する最も簡単な手順

"192.168.1.1" から 192.168.1.254" に ping が飛ばなくなる

IP フォワーディングの有効化

ここからが CentOS のルータ化に必要な手順となるが、実際はパラメータを1行追加するだけだ。

それは、IP フォワーディングを有効化するためのパラメータだが、まずは IP フォワーディングが無効化されていることを確認するために、以下のコマンドを実行する。

[root@localhost ~]#cat /proc/sys/net/ipv4/ip_forward

0

値として「0」が返ってくるはずだ。この状態が IP フォワーディングが無効化されている状態となる。

IP フォワーディング

 

IPフォワーディングとは、二つ以上のネットワークインターフェースやIPアドレスを持つネットワーク機器などで、一方が受信したIPパケットを一定のルールに基づいてもう一方から送信すること。IP通信の中継。ルーティングとは異なる。詳細はこちらを参照。

「sysctl.conf」にパラメータを追加

IP フォワーディングを有効化するためには、以下のコマンドを実行し、開いたファイルにパラメータを1行追加する。

[root@localhost ~]#vi /etc/sysctl.conf

コマンドを実行すると、下記のようなコメントだけのファイルが開かれる。

# sysctl settings are defined through files in

# /usr/lib/sysctl.d/, run/sysctl.d/, and /etc/sysctl.d/.

#

# Vendors settings live in /usr/lib/sysctl.d/.

# To override a whole file, create a new file with the same in

# /etc/sysctl.d/ and put new settings there. To override

# Only specific settings, add a file with a lexically later

# name in /etc/sysctl.d/ and put new settings there.

#

# For more information, see sysctl.conf(5) and sysctl.d(5)

最終的に以下になるようファイルを編集し、保存する。

# sysctl settings are defined through files in

# /usr/lib/sysctl.d/, run/sysctl.d/, and /etc/sysctl.d/.

#

# Vendors settings live in /usr/lib/sysctl.d/.

# To override a whole file, create a new file with the same in

# /etc/sysctl.d/ and put new settings there. To override

# Only specific settings, add a file with a lexically later

# name in /etc/sysctl.d/ and put new settings there.

#

# For more information, see sysctl.conf(5) and sysctl.d(5)

 

net.ipv4.ip_forward=1

保存が完了したら再起動を実施する。

IP フォワーディングの確認

起動後に以下のコマンドを実行すると、出力される値が「1」に変わっているはずだ。

[root@localhost ~]#cat /proc/sys/net/ipv4/ip_forward

これで CentOS をルータとして構築するための手順は終了だ。

結局のところ、IP アドレスの設定さえ終了していれば、ルータとして機能させるには「net.ipv4.ip_forward=1」というパラメータを1行追加するだけでいい。

疎通確認

Linux(CentOS 7)でルータを構築する最も簡単な手順

192.168.1.1 から “192.168.2.2” に通信が通るようになった

Linux(CentOS 7)でルータを構築する最も簡単な手順

192.168.2.2 から “192.168.1.1” に通信が通るようになった

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)