Ubuntu met NAT/IP-forwarding erg traag

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • TSS_Droopy
  • Registratie: Februari 2002
  • Laatst online: 23:20
Ik zal even beginnen, met toe te geven dat Linux nog wel eens een uitdaging is voor mij.
In de loop der jaren wel wat bekender mee, maar nog steeds geen expert hierin.
Ik ben wel bekend met IT en netwerken.

Ik heb sinds een tijdje een NordVPN (OpenVPN) abonnement en gebruikte mijn Edgerouter Pro 8 als Openvpn client en routeerde een aantal clients over die vpn. Dit werkte prima.
Nou is het zo dat OpenVPN vooral CPU gebruikt en de Edgerouter als OpenVPN client niet verder kwam dan rond de 10-20 Mbit/s throughput omdat de CPU het niet trok.
Nu heb ik op een overtollige Intel Nuc (i3) een kale ubuntu 16.04.4 LTS geïnstalleerd en gebruik die als 2e gateway op mijn netwerk puur om die clients over NordVPN te routeren wanneer gewenst.
Hiervoor heb ik op de verder default ubuntu ip-forwarding aangezet en IPtables ingericht.
Ik gebruik NordVPN om in te bellen naar de USA.
De Nuc heeft dus maar één netwerkkaart en gebruikt zelf ook mijn Edgerouter als gateway om de VPN op te zetten, daarna wordt de default route naar de VPN gezet.
Als ik een speedtest-cli doe op de Nuc zelf kom ik op een snelheid van 123.14 Mbit/s download en 19.27 Mbit/s upload. De CPU load gaat op dat moment naar rond de 60% vooral voor OpenVPN. Dit is meer dan voldoende.
Pak ik een client met de default gateway (dus gewoon mijn ISP KPN) dan krijg ik netjes mijn snelheid van 200Mbit/s.
Verander ik diezelde client echter die Nuc als gateway, dan kom ik niet verder als +/- 20Mbit/s down en 14 Mbit/s up. De CPU komt dan niet boven de 20% uit. Ik raak dus >80% van mijn downloadspeed kwijt door de NAT/iptables.
Nu is de vraag waar dat door komt. ik heb met speedtest-cli bevestigd dat ik op de server zelf ook gewoon over de VPN naar buiten ga.

mijn configuratie
ifconfig:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
eno1      Link encap:Ethernet  HWaddr xx.xx.xx.xx
          inet addr:192.168.0.1  Bcast:192.168.0.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:855286 errors:0 dropped:1 overruns:0 frame:0
          TX packets:658048 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:1030080800 (1.0 GB)  TX bytes:434659639 (434.6 MB)
          Interrupt:20 Memory:f7c00000-f7c20000

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:22305 errors:0 dropped:0 overruns:0 frame:0
          TX packets:22305 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1
          RX bytes:12378476 (12.3 MB)  TX bytes:12378476 (12.3 MB)

tun0      Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
          inet addr:xx.xx.xx.xx  P-t-P:xx.xx.xx.xx  Mask:255.255.255.0
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1500  Metric:1
          RX packets:524520 errors:0 dropped:0 overruns:0 frame:0
          TX packets:342422 errors:0 dropped:1245 overruns:0 carrier:0
          collisions:0 txqueuelen:100
          RX bytes:633809297 (633.8 MB)  TX bytes:112983869 (112.9 MB)


cat /etc/sysctl.conf
...
net.ipv4.ip_forward=1
...


more /etc/iptables/rules.v4
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
*nat
:PREROUTING ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A POSTROUTING -s 192.168.0.0/24 -o tun0 -j MASQUERADE
COMMIT
*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -s 192.168.0.0/24 -i eno1 -p icmp -j  ACCEPT
-A INPUT -s 192.168.0.0/24 -i eno1 -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -s 192.168.0.0/24 -i eno1 -j REJECT --reject-with icmp-host-prohibited
-A INPUT -j DROP
-A FORWARD -i tun0 -o eno1 -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -d 192.168.0.0/24 -i eno1 -j DROP
-A FORWARD -s 192.168.0.0/24 -i eno1 -o tun0 -j ACCEPT
-A FORWARD -d 192.168.0.0/24 -i tun0 -o eno1 -j ACCEPT
-A FORWARD -j DROP
-A OUTPUT -j ACCEPT
COMMIT


doe ik wat verkeerd, of zie ik iets over het hoofd? Alvast bedankt!

"I see said the blind man, as he picked up his hammer and saw"