PC mit VPN Einwahl als Gateway für Subnetz verwenden

From: Christoph Sandhaus <christoph_at_draupadi.de>
Date: Wed, 10 Jun 2020 15:45:47 +0200 (CEST)

Hallo zusammen!

Ich habe einen PC (PC A), welcher sich per VPN in unser Firmennetzwerk einwählt. Die VPN-Einrichtung ist unveränderlich.
Jetzt möchte ich ich gerne, dass ein weiterer PC (PC B), welcher im selben LAN wie PC A ist, den Adressraum des Firmennetzes (192.168.0.0/16) über den PC A routet. Weiterhin wäre es gut, wenn PC B auch den DNS-Server der Firma nutzt. (192.168.100.1). Das ist aber erst mal zweitrangig.

Mein Problem scheint zu sein, dass ich die Weiterleitung der IP Pakete auf PC A nicht hin bekomme. Es wäre schön, wenn ihr mir da helfen könnt.

Beide Rechner (10.2.2.0/24) laufen mit Kubuntu (PC A: 18.04, PC B: 20.04).
Ich baue zwischen PC A und PC B ein VLAN auf (10.3.3.1 für PC A, und 10.3.3.2 für PC B). ein Ping in beide Richtungen geht. Ein Traceroute (192.168.100.1) von PC B aus, endet aber leider bei PC A:

$ traceroute 192.168.100.1
traceroute to 192.168.100.1 (192.168.100.1), 30 hops max, 60 byte packets
 1 10.3.3.1 (10.3.3.1) 3.355 ms 3.329 ms 3.304 ms
 2 10.3.3.1 (10.3.3.1) 3122.912 ms !H 3123.012 ms !H 3122.968 ms !H

Die Firewall auf beiden Geräten ist aus (ufw status: inactiv).

Auf dem PC A habe ich ip-forwarding aktiviert, in dem ich eine "1" in "/proc/sys/net/ipv4/ip_forward" eintrage.

Was hab ich übersehen? Wie kann ich prüfen, was mit den Ping-Paketen auf PC A passiert? (hoffentlich nicht nur wireshark?)

Ich bin für jede Hilfe dankbar!
Im Anschluss folgen meine Skript für PC A und PC B, sowie die Ausgabe bei der Ausführung und die Routingtabellen
Hoffentlich verschicke ich hier nicht zu viel ... :D

Danke + LG.,
  Christoph

============ Anhang =============

Ich habe zwei Skripte eingerichtet, mit denen ich die Umgebung herrichte.

################################
PC A
################################

######
Skript
######
#!/bin/bash

function printUsage() {
                echo "usage $0: [dev] [on|off]"
                echo "dev : name of local network device for vpn gateway"
                echo "on|off : switch vpn on or off"
}

# Usage ausgeben, wenn zu wenige Parameter
[ -z "$2" ] && { printUsage; exit 0; }

DEVICE="$1"
STATE="$2"

VLAN_IP="10.3.3.1/24"

case "$STATE" in
                on)
                                echo "1" > /proc/sys/net/ipv4/ip_forward # ip forwarding
                                ip addr add ${VLAN_IP} dev ${DEVICE} label ${DEVICE}:1 # device einrichten
                                ;;
                off)
                                # bereinigen
                                ip addr del ${VLAN_IP} dev ${DEVICE}:1
                                ;;
                *)
                                echo "usage: $0 [device] [on|off]"
                                exit 0
                                ;;
esac

##########
Ausführung
##########
$ sudo bash -x ./vpnGateway.sh wlan0 on
+ '[' -z on ']'
+ DEVICE=wlan0
+ STATE=on
+ VLAN_IP=10.3.3.1/24
+ case "$STATE" in
+ echo 1
+ ip addr add 10.3.3.1/24 dev wlan0 label wlan0:1

===
Routingtabelle auf PC A
===
$ ip r s
default via 10.10.20.2 dev tap0 proto static
default via 10.2.2.1 dev wlan0 proto dhcp metric 600
10.2.2.0/24 dev wlan0 proto kernel scope link src 10.2.2.12 metric 600
10.3.3.0/24 dev wlan0 proto kernel scope link src 10.3.3.1
10.10.20.0/24 dev tap0 proto kernel scope link src 10.10.20.2
169.254.0.0/16 dev wlan0 scope link metric 1000
192.168.122.0/24 dev virbr0 proto kernel scope link src 192.168.122.1 linkdown
212.184.184.164 via 10.2.2.1 dev wlan0 proto static

################################
PC B
################################

######
Skript
######
#!/bin/bash

function printUsage() {
                echo "usage $0: [dev] [on|off]"
                echo "dev : name of local network device for vpn gateway"
                echo "on|off : switch vpn on or off"
}

# Usage ausgeben, wenn zu wenige Parameter
[ -z "$2" ] && { printUsage; exit 0; }

DEVICE="${1}"
STATE="$2"

GATEWAY="10.3.3.1"
VLAN_IP="10.3.3.2/24"

case "$STATE" in
                on)
                                ip addr add ${VLAN_IP} dev ${DEVICE} label ${DEVICE}:1 # device einrichten
                                ip route add 192.168.0.0/16 via ${GATEWAY} dev ${DEVICE}:1
                                ;;
                off)
                                # bereinigen
                                ip route del 192.168.0.0 via ${GATEWAY}
                                ip addr del ${VLAN_IP} dev ${DEVICE}:1
                                ;;
                *)
                                echo "usage: $0 [device] [on|off]"
                                exit 0
                                ;;
esac

##########
Ausführung
##########
$ sudo bash -x ./vpnClient.sh wlo1 on
+ '[' -z on ']'
+ DEVICE=wlo1
+ STATE=on
+ GATEWAY=10.3.3.1
+ VLAN_IP=10.3.3.2/24
+ case "$STATE" in
+ ip addr add 10.3.3.2/24 dev wlo1 label wlo1:1
+ ip route add 192.168.0.0/16 via 10.3.3.1 dev wlo1:1

##############
Routingtabelle
##############
$ ip r s
default via 10.2.2.1 dev wlo1 proto dhcp metric 600
10.2.2.0/24 dev wlo1 proto kernel scope link src 10.2.2.124 metric 600
10.3.3.0/24 dev wlo1 proto kernel scope link src 10.3.3.2
169.254.0.0/16 dev wlo1 scope link metric 1000
192.168.0.0/16 via 10.3.3.1 dev wlo1
Received on Wed Jun 10 2020 - 15:45:47 CEST

This archive was generated by hypermail 2.2.0 : Wed Jun 10 2020 - 15:45:51 CEST