Linuxでsystemdを使用してIP転送を適切に永続的に有効にする方法は?


8

私は、IP(間の転送有効にしようenp0s3tun0のインタフェース)と書き込みをnet.ipv4.ip_forward = 1して/etc/sysctl.conf。再起動後、

$ cat /proc/sys/net/ipv4/ip_forward
1

しかし、転送はまだ機能していません。追加しようとしnet.ipv4.conf.default.forwarding=1てい/etc/sysctl.confます。今再起動後、私は持っています

$ cat /proc/sys/net/ipv4/ip_forward
1
$ cat /proc/sys/net/ipv4/conf/default/forwarding
1
$ cat /proc/sys/net/ipv4/conf/all/forwarding
1
$ cat /proc/sys/net/ipv4/conf/enp0s3/forwarding
0
$ cat /proc/sys/net/ipv4/conf/tun0/forwarding
0

私は有効にすることはできません/proc/sys/net/ipv4/conf/enp0s3/forwarding/proc/sys/net/ipv4/conf/tun0/forwardingsysctl.confこれらのファイルは、このような初期ブート時に存在していないため。

systemd-sysctl[85]: Couldn't write '1' to 'net/ipv4/conf/enp0s3/forwarding', ignoring: No such file or directory
systemd-sysctl[85]: Couldn't write '1' to 'net/ipv4/conf/tun0/forwarding', ignoring: No such file or directory)

、さらにtun0動的インターフェースがあります(いつでも追加および削除できます)。

の転送を手動で有効にするenp0s3tun0、転送は期待どおりに機能します。

では、インターフェイスの転送を適切に有効にする方法は?

PS:Gentoo(カーネル4.1.15およびsystemd 226)

PPS:私の記憶net.ipv4.ip_forward = 1が少し前に私に役立つ場合は十分でした。

回答:


3

ようやく問題を解決しました。私はsystemd(networkdを使用)を使用しており、ipd転送に関する新機能がsystemd-221に導入されています。 "IPForwarding ="-https: //github.com/systemd/systemd/blob/a2088fd025deb90839c909829e27eece40f7fce4/NEWS

からman systemd.network

[ネットワーク]セクションオプション

...

IPForward =

ネットワークインターフェイスのIP転送を設定します。有効にすると、ネットワークインターフェイスの着信パケットは、ルーティングテーブルに従って他のインターフェイスに転送されます。ブール値の引数、または指定されたアドレスファミリのIP転送のみを有効にする値「ipv4」または「ipv6」、または既存のsysctl設定を保持する「カーネル」のいずれかを取ります。これは、ネットワークインターフェースのnet.ipv4.conf..forwardingおよびnet.ipv6.conf..forwarding sysctlオプションを制御します(sysctlオプションの詳細については、ip-sysctl.txt [1]を参照してください)。デフォルトは「いいえ」です。

注:このオプションがオンになっていないか、「カーネル」に設定されていない限り、net.ipv4.ip_forward、net.ipv4.confを使用してカーネルでグローバルにオンになっている場合でも、このインターフェースではIP転送は行われません。 all.forwarding、およびnet.ipv6.conf.all.forwarding sysctlオプション。

そこで、次のようなネットワークファイルを使用して、IP転送を有効にします(インターフェイスごと)。

# cat /etc/systemd/network/tun0.network
[Match]
Name=tun0

[Network]
IPForward=ipv4
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.