Come abilitare permanentemente l'ip forwarding in Linux con systemd?


8

Io cerco di abilitare l'inoltro IP (tra enp0s3e tun0interfacce) e scrivere net.ipv4.ip_forward = 1in /etc/sysctl.conf. Dopo il riavvio ho

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

Ma l'inoltro non funziona ancora. Cerco di aggiungere net.ipv4.conf.default.forwarding=1in /etc/sysctl.conf. Ora dopo il riavvio ho

$ 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

Non riesco ad abilitare /proc/sys/net/ipv4/conf/enp0s3/forwardinge /proc/sys/net/ipv4/conf/tun0/forwardingdentro sysctl.confperché questi file non esistono al momento dell'avvio così presto:

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)

, più oltre tun0è l'interfaccia dinamica (può essere aggiunto e rimosso in qualsiasi momento).

Se abilito manualmente l'inoltro per enp0s3e tun0quindi l'inoltro funziona come previsto.

Quindi, come abilitare correttamente l'inoltro per le interfacce?

PS: Gentoo con kernel 4.1.15 e systemd 226

PPS: se la mia memoria mi serve qualche tempo fa net.ipv4.ip_forward = 1era abbastanza.

Risposte:


3

Finalmente risolvo il problema. Uso systemd (con networkd) e nuove funzionalità sull'inoltro IP sono state introdotte in systemd-221: "IPForwarding =" - vedi https://github.com/systemd/systemd/blob/a2088fd025deb90839c909829e27eece40f7fce4/NEWS

Da man systemd.network:

OPZIONI DI SEZIONE [RETE]

...

ipforward =

Configura l'inoltro IP per l'interfaccia di rete. Se abilitato, i pacchetti in entrata sull'interfaccia di rete verranno inoltrati ad altre interfacce secondo la tabella di routing. Accetta un argomento booleano o i valori "ipv4" o "ipv6", che abilita l'inoltro IP solo per la famiglia di indirizzi specificata, o "kernel", che preserva le impostazioni sysctl esistenti. Questo controlla le opzioni net.ipv4.conf..forwarding e net.ipv6.conf..forwarding sysctl dell'interfaccia di rete (vedere ip-sysctl.txt [1] per dettagli sulle opzioni sysctl). Il valore predefinito è "no".

Nota: a meno che questa opzione non sia attivata o impostata su "kernel", nessun inoltro IP viene eseguito su questa interfaccia, anche se questa è attivata globalmente nel kernel, con net.ipv4.ip_forward, net.ipv4.conf. opzioni sysctl all.forwarding e net.ipv6.conf.all.forwarding.

Quindi ora uso il file di rete come segue per abilitare l'inoltro ip (per interfaccia):

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

[Network]
IPForward=ipv4
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.