porech / engarde

A go network utility to create a reliable IP tunnel over multiple connections
GNU General Public License v2.0
276 stars 41 forks source link

Help routing. #16

Closed Marctraider closed 4 years ago

Marctraider commented 4 years ago

Hi there! I'm glad I finally found this piece of programming, after trying to mud my way through openmptcprouter, mlvpn, glorytun, etc.

For a maximum possible reliable connection non of them are really suited. This, combined does exactly what I want! (Looks like it does similar to Speedify redundant mode.

So far I managed to (Running Openwrt client, Debian 9 server vps)

  1. Swap 3 LAN ports to 3 WAN ports and make the WAN port LAN port, all 3 WAN ports receive DHCP from ISP, put them all on WAN firewall zone and enabled default route.

  2. Did all instructions on front page, and manage to ping the tunnel ip 10.97.98.1 end point to vps with on router, and reply back to router as well. So server config seems fine! I can rip wan cables one by one and ping nicely continues.

Now comes part that my local subnet (all clients) need to route to the wg0 interface but so far no luck.

Local brlan is 192.168.1.1/24 and tunnel ips are 10.97.98.1 on vps and 10.97.98.1 on router side.

I tried using policy-based-routing package and tried route from 192.168.1.1/24 etcetera to 10.97.98.1 through wg0 but no luck so far.

Anyone have any tips? Maybe I'm doing something wrong? Seems like last piece of puzzle. If router 192.168.1.1 can do it it cannot be too hard to make it happen for clients on same subnet. Thanks!

Seems promising so far.

Marctraider commented 4 years ago

Edit: Managed to get it all working, speed is a bit low tho (max 60mbit) where the highest wan should do 200Mbit.

Since it is whichever packet arrives first, this shouldnt be happening? My VPS caps around 800Mbit/s so that is certainly not the cause!

Anyway very much thanks for all this work! I couldn't ask for more! 👍

ale-rinaldi commented 4 years ago

Hello @Marctraider , sorry I've seen your issues just now. I'm really happy you're finding engarde useful :)

For the max speed, yep, this is something we're trying to work on, I've seen that about 60Mbps is the same max speed I can get. This should have something to do with how Golang handles sockets, but this is something I'll look into as soon as possible.

As you've probably seen I slowed down the development a bit: that's because I had a motorbike accident and that made me out of games for a while ^^ anyway, the project is still live and I'm going to continue with it soon ;)

Marctraider commented 4 years ago

@ale-rinaldi I'm sorry to hear about your accident :-( I hope you get better soon! And good to hear you havent stopped development!

6 Days ago I hadn't really finetuned both endpoints on lots of linux tweaks and maybe some weird things happened that ruined performance.

I can achieve the following bandwidth (average) WAN1: Native speed 20Mbit/s WAN2: Native speed 150Mbit/s WAN3: Native speed 30Mbit/s

With all 3 connected I can get max speed of around 100Mbit/s, With lets say, wan3 removed, i can obtain 130-150 Mbit at times. (Basically the max I can achieve on my fastest link)

Still very satisfied. if i wanted superb speed i would go back to openmptcprouter or something 📦

I also noticed when i was experimenting with Cake SQM (QoS), i get superb bufferbloat reduction when I apply it onto the wireguard interface, versus seperately applying SQM to my individual WAN interfaces.

Currently my system specs are Intel NUC at 2.6GHz (Celeron J4005) and rented VPS at 2.4Ghz 100% reserved) dual core.