[fli4l] Fli4l als OpenVpn Server hinter einer Fritzbox

Hans Bachner hans at bachner.priv.at
Di Apr 2 16:24:00 CEST 2019


Hallo Ralf,

Ralf Scholz schrieb am 02.04.2019 um 14:17:
> Hallo NG,
>
> ich möchte hinter einer Fritzbox einen Fli4l als Openvpn Server betreiben.
>
> Soweit sogut, ich kann mich als Roadwarrior über die Fritzbox (nur der
> entsprechende Port ist als UDP weiter geleitet) mit dem Fli4l verbinden,
> komme dann aber nur auf den Fli4l und auf keinen andere Rechner in dem
> Subnetz.
> Desweiteren Routet der Fli4l vom 192.168.100.xxx zum 192.168.255.xxx Netz
>
> Es ist eine 3.6.0 Version.
>
> WAN - Fritz Modem (Router + WLAN  (192.168.100.100)) - Fli4l (Openvpn
> (192.168.100.199)) ... Weitere Rechner im 192.168.100.xxx

meinst du mit "weitere Rechner" die im WLAN? Außerdem hast du vermutlich 
weitere Rechner im Netz 192.168.255.xxx

> Zur Config:
> Base:
> Zwei Karten für beide Netze
> #------------------------------------------------------------------------------
>
> # Ether networks used with IP protocol:
> #------------------------------------------------------------------------------
>
> IP_NET_N='2'                   # number of IP ethernet networks, usually 1
> IP_NET_1='192.168.100.199/24'      # IP address of your n'th ethernet
> card and
>                                 # netmask in CIDR (no. of set bits)
> IP_NET_1_DEV='eth0'            # required: device name like ethX
> IP_NET_2='192.168.255.100/24'       # IP address of your n'th ethernet
> card and
>                                  #  Netmask in CIDR (Nr. of set bits)
> IP_NET_2_DEV='eth2'             # required: device name like ethX
>
> Die Routen dazu
> #------------------------------------------------------------------------------
>
> # Additional routes, optional
> #------------------------------------------------------------------------------
>
> IP_ROUTE_N='2'                            # number of additional routes
> IP_ROUTE_1='192.168.255.0/24 192.168.100.199'  # network/netmaskbits
> gateway
> IP_ROUTE_2='0.0.0.0/0 192.168.100.100'       # example for default-route
>
> Firewall beide Netze können miteinander.
>
>      PF_INPUT_N='2'
>      PF_INPUT_1='IP_NET_1 ACCEPT'        # allow all hosts in the local
>      PF_INPUT_2='IP_NET_2 ACCEPT'        # allow all hosts in the local
>                                          # network access to the router
>                                                    # the log file will
> be filled
>                                                    # with useless entries
>
>      PF_FORWARD_POLICY='REJECT'          # be nice and use reject as policy
>      PF_FORWARD_ACCEPT_DEF='yes'         # use default rule set
>      PF_FORWARD_LOG='no'                 # don't log anything
>      PF_FORWARD_LOG_LIMIT='3/minute:5'   # log 3 events per minute; allow a
>                                          # burst of 5 events
>      PF_FORWARD_REJ_LIMIT='1/second:5'   # reject 1 connection per
> second; allow
>                                          # a burst of 5 events; otherwise
>                                          # drop packet
>      PF_FORWARD_UDP_REJ_LIMIT='1/second:5'   # reject 1 udp packet per
> second;
>                                              # allow a burst of 5 events;
>                                              # otherwise drop packet
>      PF_FORWARD_N='3'
>      PF_FORWARD_1='tmpl:samba DROP'      # drop samba traffic if it tries
>                                          # to leave the subnet
>      PF_FORWARD_2='IP_NET_1 ACCEPT'      # accept everything else
>      PF_FORWARD_3='IP_NET_2 ACCEPT'      # accept everything else
>
>      PF_POSTROUTING_N='2'
>      PF_POSTROUTING_1='IP_NET_1 MASQUERADE'  # masquerade traffic leaving
>      PF_POSTROUTING_2='IP_NET_2 MASQUERADE'  # masquerade traffic leaving
>                                              # the subnet
> Openvpn
> DNS ist dann auch noch ein andere Rechner im Netz ...
>
> OPENVPN_1_NAME='xxx'                 # Name des Clients
> OPENVPN_1_LOCAL_PORT='yyy'          # Eingehender Port fuer die Verbindung
> OPENVPN_1_SECRET='zzz'        # Key-Datei des Clients
> OPENVPN_1_TYPE='tunnel'
> OPENVPN_1_REMOTE_VPN_IP='192.168.99.201'       # Client-IP-Adresse
> OPENVPN_1_LOCAL_VPN_IP='192.168.99.202'        # Server-IP-Adresse
> OPENVPN_1_ROUTE_N='0'
> OPENVPN_1_PF_INPUT_N='1'
> OPENVPN_1_PF_INPUT_1='ACCEPT'
> OPENVPN_1_PF_FORWARD_N='1'
> OPENVPN_1_PF_FORWARD_1='ACCEPT'
> OPENVPN_1_DNSIP='192.168.100.222'
>
>
> Die OpenVpn Config auf dem Roadwarrior dazu:
>
> remote xxx.yyy
> port zzz
> secret "geheim"
> dev tun
> ifconfig 192.168.99.201 192.168.99.202
> route 192.168.100.0 255.255.255.0
> comp-lzo
> persist-tun
> persist-key
> ping-timer-rem
> ping-restart 60
> proto udp
> tun-mtu 1500
> fragment 1300
> mssfix
> dhcp-option DNS 192.168.100.222
>
> Was mache ich falsch?

Dein Roadwarrior weiß nicht dass er Pakete an das Netz 192.168.255.xxx 
über den Tunnel schicken muss - anstatt desses schickt er sie an sein 
default gateway, bei dem sie dann versickern...

Also: nimm
    route 192.168.255.0 255.255.255.0
in die Client Konfiguration mit hinein.

Was mir sonst noch aufgefallen ist:

>      PF_POSTROUTING_1='IP_NET_1 MASQUERADE'  # masquerade traffic leaving
>      PF_POSTROUTING_2='IP_NET_2 MASQUERADE'  # masquerade traffic leaving

warum maskierst du die Pakete aus IP_NET_1 auf dem fli4l? Die maskiert 
ohnehin später die Fritzbox, wenn es ins WAN geht.

Außerdem wäre ich mit x.x.255.x als Subnetz vorsichtig. Wenn weiter 
"oben" Netze zum einfacheren Routen aggregiert werden, kollidiert das 
schnell einmal mit einer Broadcast-Maske... Ich hab das jetzt nicht 
wirklich zu Ende überlegt, möglicherweise funktioniert damit ja alles 
ganz einwandfrei. Und hat mit deinem Ausgangsproblem eher nichts zu tun.

Viel Erfolg,
Hans.


Mehr Informationen über die Mailingliste Fli4L