Beantwortet: Zwei OpenVPN clients für verschiedene Endgeräte (FreshTomato auf R7000)

markimark

Freshly Joined Member
Hallo,

Mein Setup: FreshTomato auf einem R7000, zwei interne LANs br0 und br1, zwei OpenVPN Clients

Ich habe nun schon Stunden Foren durchwälzt und verschiedene Dinge probiert, ich bekomme aber folgendes nicht (vollständig) hin:
- Aller Traffic von br0 wird durch tun11 (OpenVPN Client 1) geleitet - funktioniert
- Aller Traffic von br1 umgeht den VPN - funktioniert
- Keine interne Verbindung br0 und br1 - funktioniert
- Ein einzelnes Endgerät an br0 soll per IP über tun12 geleitet werden (OpenVPN Client 2) - funktioniert nur halb, dieses Endgerät wird durch Client 2 geleitet kann aber nicht mehr auf das LAN br0 zugreifen

Meine Settings:
OpenVPN Client 1: Redirect Internet traffic: NO
OpenVPN Client 2: Redirect Internet traffic: Routing Policy -> From Source IP (dies leitet erfolgreich den Traffic dieses Endgerätes durch Client 2)

WAN UP script:
sleep 30
echo 0 > /proc/sys/net/ipv4/conf/all/rp_filter
iptables -t mangle -F PREROUTING
pppoe_gateway=10.1.1.1
ip route add default via $pppoe_gateway table 200
ip rule add fwmark 1 table 200
ip route flush cache
# This rule marks all packets incoming via br1 with "1"
iptables -t mangle -I PREROUTING -i br1 -j MARK --set-mark 1

Firewall script:
# Loescht alle Regeln in der Kette FORWARD.
iptables --flush FORWARD
# Legt eine Gesamtpolicy für die Kette FORWARD fest. Alle Ports schliessen.
iptables -P FORWARD DROP
# Alle ueber tun+ raus gehende Pakete werden ueber alle Ports zugelassen.
iptables -I FORWARD -o tun+ -j ACCEPT
# Alle ueber tun+ rein gehende Pakete werden ueber alle Ports zugelassen.
iptables -I FORWARD -i tun+ -j ACCEPT
# Maskiert (ersetzt) die eigene LAN Adressedurch eine VPN Adresse des tun+ Interface (Z.B. 10.0.0.1). Erst dann kann der Rechner den VPN Server erreichen.
iptables -t nat -I POSTROUTING -o tun+ -j MASQUERADE

# All br1 Pakete duerfen rein und raus ohne VPN
iptables -I FORWARD -o br1 -j ACCEPT
iptables -I FORWARD -i br1 -j ACCEPT

# keine verbindung zwischen br0 und br1
iptables -I INPUT -i br1 -d 192.168.0.1 -j DROP
iptables -I INPUT -i br0 -d 192.168.1.1 -j DROP




Ich habe versch. Script usw probiert, aber entweder geht dann nichts mehr, oder traffic des Endgerätes geht auch durch tun11.

Habe leider auch nichts konkretes für diesen Anwendungsfall gefunden.

Danke!!
 
Solution
Ich habe nun folgende Lösung gefunden:

OpenVPN Client 1 und 2 jeweils mittels Routing Policy "From Source IP" für die jeweiligen Geräte zuordnen.

Das WAN Up (Main) ist nun leer. In der Firewall verwende ich nun einen anderen Killswitch:

iptables -I FORWARD -i br0 -o `nvram get wan_iface` -j REJECT --reject-with icmp-host-prohibited
iptables -I FORWARD -i br0 -p tcp -o `nvram get wan_iface` -j REJECT --reject-with tcp-reset
iptables -I FORWARD -i br0 -p udp -o `nvram get wan_iface` -j REJECT --reject-with udp-reset

Gerd

Active Member
Ich habe mich schon seit Ewigkeiten mit Tomato nicht beschäftigt, aber was spricht gegen OpenWRT?

Mit OpenWRT ist selektives Routing wesentlich einfacher.
 

markimark

Freshly Joined Member
Ich habe nun folgende Lösung gefunden:

OpenVPN Client 1 und 2 jeweils mittels Routing Policy "From Source IP" für die jeweiligen Geräte zuordnen.

Das WAN Up (Main) ist nun leer. In der Firewall verwende ich nun einen anderen Killswitch:

iptables -I FORWARD -i br0 -o `nvram get wan_iface` -j REJECT --reject-with icmp-host-prohibited
iptables -I FORWARD -i br0 -p tcp -o `nvram get wan_iface` -j REJECT --reject-with tcp-reset
iptables -I FORWARD -i br0 -p udp -o `nvram get wan_iface` -j REJECT --reject-with udp-reset
 
Solution
Top