web-dev-qa-db-ja.com

systemd-networkdで静的IPv6ルートを追加する方法

私は成功せずにnetworkdを介して以下のipコマンドと同等のものを達成しようとしています。

ip route add default via fe80::1 dev eth0

私のnetworkd構成は以下のようになり、デフォルトのipv6ルーティングとは別にネットワークを正常に起動します。 GatewayOnLink = yesの追加と削除を試みましたが、成功しませんでした。起動後に上記のコマンドを実行するとipv6接続が起動しますが、networkd構成を介してこれを実行したいと思います。

/etc/systemd/network/00-eth0.network
----

[Match]
Name=eth0

[Network]
DHCP=no
DNS=8.8.8.8

[Address]
Label=static-ipv4
Address=X.X.X.X/32
Peer=Y.Y.Y.Y

[Address]
Label=static-ipv6
Address=X:X:X:X::1/64

[Route]
Gateway=fe80::1
Gateway=Y.Y.Y.Y
GatewayOnlink=yes 

これはHetznerクラウドサーバー用であり、他のIPV6対応マシンで、セットアップに関する特定のことを除外することはできません。 Systemdは、coreosで実行されているバージョン238です。

4
uvcrew

1つの[Route]ブロックに2つのGatewayディレクティブを含めることはできません。

参照元: https://systemd.network/systemd.network.html#%5BRoute%5D%20Section%20Options

複数の「[Route]」セクションを指定して、複数のルートを構成します。

これは私にとってうまくいくものです:

[Route]
Gateway=fe80::1
GatewayOnLink=yes

[Route]
Gateway=Y.Y.Y.Y
GatewayOnLink=yes

このように、最初のブロックはデフォルトのIPv6ルーティングエントリを追加します。

ip -6 route add default via fe80::1 proto static

何らかの理由でproto static部分が不要な場合は、Proto=bootをnetworkd構成に追加します(これはiproute2のデフォルトです)。

0
iBug

Networkdの外部の設定が関係しているので、受け入れたいと思っている答えではありませんが、IPv6ルーティングを確実に起動します。

~ $ cat /etc/systemd/system/ipv6-routing.service 
[Unit]
Description=Setup ipv6 routing
After=network-online.target
Requires=network-online.target

[Service]
Type=oneshot
ExecStart=/usr/bin/ip route add default via fe80::1 dev eth0
RemainAfterExit=true

[Install]
WantedBy=multi-user.target
0
uvcrew