Vraag


Acties:
  • 0 Henk 'm!

  • Sando
  • Registratie: Januari 2007
  • Niet online

Sando

Sandoichi

Topicstarter
Ik heb AsusWRT-Merlin firmware op mijn Asus RT-AC87U router gezet om alleen specifieke IP adressen over VPN te laten gaan. (PIA heeft nog een TorrentFreak korting.)

Je kan deze routing rules gewoon via de Web-UI opgeven bij OpenVPN Clients.

Maar dat vind ik eigenlijk nog te zwartwit. De nieuwsgroep van mijn ISP (Tweak) werkt dan bijvoorbeeld niet, en een beetje browsen gaat onnodig langzaam als je gigabit snelheden gewend bent.

Is er ook een manier om vanaf één IP specifieke poorten of ranges te routen naar meerdere netwerken?
  1. Alles over ISP
  2. P2p poorten naar snelle OpenVPN client
  3. Poorten van US-only videodiensten naar US OpenVPN client
Volgens mij moet dat kunnen als je via ssh inlogt om één en ander met iptables te regelen. Maar ik ben bepaald niet vloeiend met iptables.

Met google kom ik wel iets (hopeloos gedateerds) tegen voor Tomato routers (?): http://www.linksysinfo.or...hrough-vpn-openvpn.37240/ maar dat is niet 1 op 1 van toepassing.

Ik ben ongetwijfeld niet de eerste die dit wil proberen, maar ik heb deze router net en ik hoop dat er wat ervaringsdeskundigen voorbij komen. 8)

🇪🇺 Buy from EU (GoT)

Alle reacties


Acties:
  • +1 Henk 'm!

  • Sh4d0w
  • Registratie: Januari 2012
  • Laatst online: 09-12-2023
Dit kan door de volgende drie scripts in /jffs/scripts/ te zetten en een beetje aan te passen:
code: nat-start
1
2
3
4
5
6
7
#!/bin/sh
sleep 4
iptables -t nat -F PREROUTING
iptables -t nat -F POSTROUTING
iptables -t nat -A POSTROUTING -o tun11 -j MASQUERADE
iptables -t nat -A POSTROUTING -o tun12 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

code: firewall-start
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#!/bin/sh
sleep 4
iptables -F INPUT
iptables -F FORWARD
iptables -A INPUT -i eth0 -p icmp -m icmp --icmp-type 8 -j DROP
iptables -A INPUT -m state --state INVALID -j DROP
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -i lo -m state --state NEW -j ACCEPT
iptables -A INPUT -i br0 -m state --state NEW -j ACCEPT
iptables -A INPUT -p udp -m udp --sport 67 --dport 68 -j ACCEPT
iptables -A INPUT -j DROP
iptables -A FORWARD -i eth0 -o br0 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i tun11 -o br0 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i tun12 -o br0 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i br0 -o eth0 -j ACCEPT
iptables -A FORWARD -i br0 -o tun11 -j ACCEPT
iptables -A FORWARD -i br0 -o tun12 -j ACCEPT
iptables -A FORWARD -j DROP

code: openvpn-event
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
26
27
28
29
30
31
#!/bin/sh
sleep 2
for i in /proc/sys/net/ipv4/conf/*/rp_filter ; do
    echo 0 > $i
done
ip route flush table 11
ip route flush table 12
ip route del default table 11
ip route del default table 12
ip rule del fwmark 1 table 11
ip rule del fwmark 2 table 12
ip route flush cache
iptables -t mangle -F PREROUTING
ip route show table main | grep -Ev ^default | grep -Ev tun11 | grep -Ev tun12 | while read ROUTE ; do
    ip route add table 11 $ROUTE
    ip route add table 12 $ROUTE
done
ip route add default dev tun11 table 11
ip route add default dev tun12 table 12
ip rule add fwmark 1 table 11
ip rule add fwmark 2 table 12
ip route flush cache

# Standaard alles via ISP
iptables -t mangle -A PREROUTING -i br0 -j MARK --set-mark 0
# Verkeer naar bepaalde ips via VPN 1
iptables -t mangle -A PREROUTING -i br0 -d <ip1> -j MARK --set-mark 1
iptables -t mangle -A PREROUTING -i br0 -d <ip2> -j MARK --set-mark 1
# Verkeer over bepaalde poorten via VPN 2
iptables -t mangle -A PREROUTING -i br0 -p tcp --dport 80 -j MARK --set-mark 2
exit 0

De scripts zijn gebaseerd op deze handleiding.

De regels met "--set-mark" (onderaan 'openvpn-event') zijn de regels die je aan moet passen.
Nu wordt verkeer naar ip1 en ip2 via VPN 1 gestuurd, verkeer over poort 80 via VPN 2 en de rest via de ISP.

Het idee is dat je bepaald verkeer met iptables matcht en dan met een mark bepaalt over welke VPN het verkeer moet. Welke matches je kan gebruiken is hier te vinden.