2020年1月9日木曜日

Linuxでスタティックルーティングの設定

先日の2ポートイーサネットカードとつながる話です。
2つ以上のネットワークにつながる機器で
肝になるのはルーティングの設定です。
荒っぽく設定していても直接繋がっている
ネットワークには普通につながることが多いですが、
その先のルーターを介する通信は
ちゃんとしてないとトラブることも。
通常は静的に設定することが必要になります。

せっかくなのでLinuxでの設定例を紹介します。
想定する環境は以下の通り。
  • 第1ネットワーク(インターフェイス名:eth0)はIPv4の回線(直接つながるのは"10.20.30.0/24"だがバックに"10.0.0.0/8"のイントラネットが存在)で、DHCPサーバが存在。ルータは"10.20.30.1"。
  • 第2ネットワーク(インターフェイス名:eth1)はIPv4/IPv6にてインターネットにつながる回線で、DHCPサーバが存在。ルータは"192.168.1.1"。
  • 第3ネットワーク(インターフェイス名:eth2)はIPv4の完全な単体の閉域網(172.16.0.*/24)で、DHCPサーバなし。

古き良き"/etc/network/interfaces"を設定ファイルとして使用する場合は
これの内容を以下のようにするのがいいでしょう。
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet dhcp
  post-up route del -net 0.0.0.0/0 gw 10.20.30.1 eth0
  post-up route add -net 10.0.0.0/8 gw 10.20.30.1 eth0

auto eth1
iface eth1 inet dhcp
  post-up route add -net 0.0.0.0/0 gw 192.168.1.1 eth1

auto eth2
iface eth2 inet static
  address 172.16.0.1
  netmask 255.255.255.0

最近のnetplanを利用する場合には
設定ファイル"/etc/netplan/net.yaml"
(ファイル名は拡張子がyamlであればなんでもいい)
を以下のようにします。
network:
  version: 2
  ethernets:
    eth0:
      dhcp4: true
      dhcp6: true
    eth1:
      dhcp4: true
      dhcp6: false
      routes:
        - to: 10.0.0.0/8
          via: 10.20.30.1
    eth2:
      addresses: [172.16.0.1/24]
      dhcp4: false
      dhcp6: false
ただし、起動時にはちゃんとならなくて、あとで
# netplan apply
を実行してやらないとうまく設定できません。なんで?
あとエントリーの削除はできないようで。やはり
# route del -net 0.0.0.0/0 gw 10.20.30.1 eth1
をあとで実行する必要もあります。
融通の利かないnetplanは普及したらやだな。

0 件のコメント:

コメントを投稿