CentOS 7でPBR(ポリシーベースルーティング)の設定方法

前書き

Linux(CentOS 7)において、PBR(ポリシーベースルーティング)の設定方法を記載したいと思います。

PBRの使用用途の一例をあげると、サーバ上で動く複数のアプリケーションがそれぞれ別々のネットワークを使用するときに使用します。

箇条書きにすると以下のような環境の場合です。

PBRを使用する事例

  • サーバが複数のネットワークに所属している。
  • サーバ上で複数のアプリケーションが動作している。
  • アプリケーションそれぞれが、別々のネットワークを使用する。

 

環境

本記事のネットワーク構成

本記事で扱うネットワーク構成図は以下の通りです。

ネットワーク 説明
192.168.0.0/24 クライアントPCが所属するネットワーク
10.0.0.0/16 サーバが所属するネットワーク
172.31.0.0/16

 

OSバージョン

本記事で使用するサーバ(接続先)とクライアントPC(接続元)のバージョンは以下の通りです。

図上の名称 OSバージョン
サーバ CentOS 7
クライアントPC Windows 10


IPアドレス

ネットワーク構成図に書いていますが、IPアドレスを表にすると下記のとおりです。ちなみに、サーバのデフォルトゲートウェイは10.0.0.111です。

場所 IPアドレス
クライアントPC 192.168.0.99
R1(192.168.0.0/24) 192.168.0.252
R1(10.0.0.0/16) 10.0.0.0.252
R1(172.31.0.0/16) 172.31.0.252
サーバ(10.0.0.0/16) 10.0.0.111(デフォルトゲートウェイ)
サーバ(172.31.0.0/16) 172.31.0.111

 

実現したいこと

実現したいことは、クライアントPCから「10.0.0.0/16」と「172.31.0.0/16」のどちらのネットワークでも、サーバと通信可能とすることです。

 

事前の設定

PBRを設定する前に、サーバに設定する最低限の設定値を示します。

インターフェース設定

  • /etc/sysconfig/network-scripts/ifcfg-ens192
  • /etc/sysconfig/network-scripts/ifcfg-ens224

 

PBRの設定

結論のPBRの設定値を先に示したいと思います。

設定値

  • /etc/iproute2/rt_tables
  • /etc/sysconfig/network-scripts/route-ens224(ファイル新規作成)
  • /etc/sysconfig/network-scripts/rule-ens224(ファイル新規作成)

設定値の意味

上記の設定値の意味を説明したいと思います。

  • /etc/iproute2/rt_tables
    《テーブル番号》
    第1カラムの番号です。ここでいうと101番で新規追加しています。
    0~255の値を設定できて、0、253、254、255はすでに設定されているので、それ以外の番号で指定します。
    《テーブル名》
    第2カラムで設定する値です。任意で指定できます
    ここでは”rule01″という名前で設定しています。
    ここで設定した名前を、次のルーティング設定ファイル(route-XXX)とルール設定ファイル(rule-XXX)に使用します

  • /etc/sysconfig/network-scripts/route-ens224
    1行目の「default via 172.31.0.252 table rule01」は、テーブル名”rule01″のルールにマッチする場合の送信先は”172.31.0.252″であるという意味になります。
    2行目の「192.168.0.0/24 dev ens224 table rule01」は、テーブル名”rule01″のルールにマッチする場合の192.168.0.0/24宛の通信は、ens224というデバイス名のインタフェースを使用するという意味になります。

  • /etc/sysconfig/network-scripts/rule-ens224
    「from 172.31.0.111 table 101 priority 30001」は、サーバの172.31.0.111から送信される通信は、テーブル番号”101″のルールをpriority値を30001として見るという意味になります。

 

PBRを入れないとどうなるか?

本記事の環境のような場合、PBRの設定を入れないとどうなるのか、そもそもの話をしたいと思います。

10.0.0.111への通信

PBR無しでも、サーバの10.0.0.111あての通信はできます。理由はサーバのデフォルトゲートウェイが10.0.0.111なので、行きと戻りの通信が同じとなり、通信できます。

172.31.0.111への通信

一方、PBRを入れない状態ではサーバの172.31.0.111への通信はできません。理由は、行きと戻りの通信が異なる経路となるためです。

CentOS 7で検証していますが、通信を受信したインタフェースと同じインタフェースからのみ、戻りの通信を返すことができます

言い換えればCentOS 7の規定の動きとして、受信したインタフェースと異なるインタフェースからは戻りの通信を返すことができません

 

以上です。最後までお読みいただきありがとうございました。

 

参考サイト

https://tech-mmmm.blogspot.com/2019/09/rhel-7centos7policy-based-routing-pbr.html

https://www.wantedly.com/companies/serverworks/post_articles/109394

https://milestone-of-se.nesuke.com/nw-basic/routing/policy-based-routing/