Moin,
hier kurz eine kleine Doku zum Natten von GRE-Tunneln. Ich wollte kürzlich ein nicht virtualisieres Gateway virtualisieren. Damit ich Lars nicht um eine IP-Änderungen bemühen muss, hab ich einfach mal probiert die Tunnel zu natten, das geht problemlos.
GRE-Nat-Module:
# cat /etc/modules
nf_nat_proto_gre
nf_conntrack_proto_gre
Und in den iptables:
-A PREROUTING -i eth0 -p gre -j DNAT --to-destination 192.168.10.35
Masquerade nicht vergessen:
-A POSTROUTING -s 192.168.10.0/24 ! -d 192.168.10.0/24 -j MASQUERADE
Für L2TP und SSH ggfs. noch weitere Ports durchnatten:
-A PREROUTING -d 176.9.38.150/32 -p tcp -m tcp --dport 222 -j DNAT --to-destination 192.168.10.35:22
-A PREROUTING -d 176.9.38.150/32 -p udp -m udp --dport 20000:20100 -j DNAT --to-destination 192.168.10.35:20000-20100
Nicht vergessen, die standardmäßige ICMP/Ping-Sperre rauszunehmen, sonst geht’s irgendwie nicht.
Und die Tunnel müssen dann lokal mit der lokalen IP gebaut werden, Beispiel:
auto tun-ffrl-dus0
iface tun-ffrl-dus0 inet static
address 100.64.7.185
netmask 255.255.255.254
pre-up ip tunnel add $IFACE mode gre local 192.168.10.35 remote 185.66.193.0 ttl 255
post-up ip link set $IFACE mtu 1400
post-down ip tunnel del $IFACE
post-up ip rule add iif $IFACE lookup ffnet
pre-down ip rule del iif $IFACE lookup ffnet ||:
iface tun-ffrl-dus0 inet6 static
address 2a03:2260:0:3f8::2
netmask 64
post-up ip -6 rule add iif $IFACE lookup ffnet
pre-down ip -6 rule del iif $IFACE lookup ffnet ||:
Wenn man mit Ansible arbeitet, kann man da die eth0-IP automatisch unter v4_remote abrufen. Das ist in unseren Rollen so hinterlegt.
Eine Durchsatzmessung auf leerem Gateway lag bei ungefähr 900 Mbit/s über L2TP von einer Maschine an einem virtuellen x86-Knoten und dann über das FFRL-Backbone (getestet mit Speedtest.net).
Dies ist ein Wiki, sollte ich etwas vergessen haben, gerne ergänzen.
Grüße
Matthias