1

Temat: OpenVPN w Debianie

Witam.
Na początek słowami wstępu: PC z zainstalowanym Debianem, pełni role Routera/Proxy/UrlFilter dla kilkunastu użytkowników.
Chciałbym mieć dostęp do owego debiana zdalnie przez OpenVPN, ale po połączeniu się z serwerem OpenVPN cały ruch użytkowników idzie przez interfejs VPN.

Czy jest możliwość skierowania ruchu za pomocą iptables, użytkowników na interfejs eth0 (normalny WAN) a nie tun0 (interfejs OpenVPN) ?

Z góry dziękuje za pomoc smile

2

Odp: OpenVPN w Debianie

Po prostu wysyłasz zły routingu do klientów, bo wymuszasz ruch przez vpn a nie chcesz tego robić.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

3

Odp: OpenVPN w Debianie

Ale taki routing ustawia sie domyślnie po zestawieniu polaczenia z VPN. Próbowałem wykorzystać ten poradnik do zaawansowanego routingu LINK, niestety zasosowany sposób działa tylko wtedy gdy na serwerze nie jest uruchomiony serwer proxy.
Jak wiec zmienić ten routing i wymusić ruch przez odpowieni interfejs?

4

Odp: OpenVPN w Debianie

Nie ustawia się "sam". Sam ustawia się tylko taki jaki dane masz na interfejsie, resztę w sumie wymuszać w konfigu openvpn. Pokaż konfig serwera.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

5

Odp: OpenVPN w Debianie

Tutaj jest "maskarada" bardzo prymitywna, ale od czegoś zawsze trzeba zacząć.

#!/bin/sh

# włączenie forwardowania pakietów:
echo 1 > /proc/sys/net/ipv4/ip_forward

# czyszczenie tablic
iptables -F -t nat
iptables -X -t nat
iptables -F -t filter
iptables -X -t filter

# Zezwolenie na to by serwer przepuszczał pakiety które pochodzą z naszej sieci
# lokalnej lub sa dla niej przeznaczone.

iptables -t filter -A FORWARD -s 172.16.0.0/255.255.0.0 -d 0/0 -j ACCEPT
iptables -t filter -A FORWARD -s 0/0 -d 172.16.0.0/255.255.0.0 -j ACCEPT

# Maskowanie pakietow pochodzacych z LANu
iptables -t nat -A POSTROUTING -s 172.16.0.0/16 -d 0/0 -j MASQUERADE

/sbin/modprobe ip_nat_ftp
/sbin/modprobe ip_nat_irc

# Przekierowanie portu 80 (www) na squida
iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-ports 3128

A tutaj plik client.conf za pośrednictwem którego łącze się z OpenVPN

dev tun                         # rodzaj interfejsu
client                          # tryb pracy
remote xx.xx.xx.xx            # IP serwera 
proto udp                       # uzywany protokol
port 1194                       # uzywany port
nobind                          # nie otwiera portu po stronie klienta
ca ca.crt                       # plik certyfikatu CA
cert user1.crt              # plik certyfikatu klienta
key user1.key               # plik klucza prywatnego klienta
persist-tun                     # podtrzymuje interfejs TUN w stanie UP podczas restartu
persist-key                     # zapamietuje klucz
keepalive 10 120                # utrzymuje polaczenie
cipher AES-256-CBC              # ustawienie algorytmu szyfrowania
comp-lzo                        # wlaczenie kompresji
verb 1                          # poziom logowania
user nobody                     # uzytkownik na potrzeby OpenVPN (tylko Linux)
group nogroup                   # grupa na potrzeby OpenVPN (tylko Linux)

log openvpn.log                 # pliki logow serwera OpenVPN
status openvpn-status.log

# Konfiguracja tls-auth
ns-cert-type server
key-direction 1

<tls-auth>
#
# 2048 bit OpenVPN static key
(...)

6

Odp: OpenVPN w Debianie

Konfig serwera openvpn.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

7

Odp: OpenVPN w Debianie

Przepraszam, źle zrozumiałem, już zamieszczam to co należy:

dev tun                         # rodzaj interfejsu
local xx.xx.xx.xx               # IP serwera 
proto udp                       # uzywany protokol
port 1194                       # uzywany port
server 10.8.0.0 255.255.255.0   # klasa IP dla tunelu VPN
ca ca.crt                       # plik certyfikatu CA
cert VPN-server.crt             # plik certyfikatu serwera
key VPN-server.key              # plik klucza prywatnego serwera
dh dh1024.pem                   # plik z parametrami algorytmu Diffiego-Hellmana
max-clients 100                 # maksymalna ilosc klientow
persist-tun                     # podtrzymuje interfejs TUN w stanie UP podczas restartu
persist-key                     # zapamietuje klucz
keepalive 10 120                # utrzymuje polaczenie
cipher AES-256-CBC              # ustawienie algorytmu szyfrowania
comp-lzo                        # wlaczenie kompresji
verb 1                          # poziom logowania
user nobody                     # uzytkownik na potrzeby OpenVPN
group nogroup                   # grupa na potrzeby OpenVPN
push "redirect-gateway def1"    # przekierowanie calego ruchu przez VPN
push "dhcp-option DNS 8.8.8.8"  # konfiguracja DNS dla DHCP
push "dhcp-option DNS 8.8.4.4"  # konfiguracja DNS dla DHCP
client-config-dir ccd

log openvpn.log                 # pliki logów serwera OpenVPN
status openvpn-status.log

# Konfiguracja tls-auth         # klucz HMAC
key-direction 0
<tls-auth>
#
# 2048 bit OpenVPN static key
(...)

8

Odp: OpenVPN w Debianie

push "redirect-gateway def1"  masz. A robi dokładnie to co mówi opis obok

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

9

Odp: OpenVPN w Debianie

Właśnie gdy otworzyłem config serwera i to przeczytałem to od razu się domyśliłem że problem pewnie leży tutaj big_smile
Przyznam szczerze że rozwiązania problemu szukałem po stronie klienta, nawet przez chwile nie przeszło mi przez myśl o zmianie konfiguracji serwera.
Mam jeszcze takie pytanie, jeśli usunę/zakomentuje tę linię wtedy wszystkie urządzenia połączone przez VPN nie będą kierowane przez interfejs tun0, ale gdy znów chce aby mój domowy kierował ruch przez VPN, wtedy wystarczy odpowiednia konfiguracja wykorzystana w już wcześniej wspominanym poradniku LINK ?

10

Odp: OpenVPN w Debianie

Jak usuniesz to żadne nie będą. Jak chcesz inaczej to musisz coś z tym zrobić - możesz np. po postawieniu tunelu zdjąć trasę domyślną z tun0 i przywrócić standardową.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

11

Odp: OpenVPN w Debianie

Próbowałem usuwać tą linię "push "redirect-gateway def1"" uzyskałem zamierzony efekt, no ale nie do końca bo wtedy wszystkie urządzenia podłączone pod VPN kierowane są przez swój domyślny WAN, a zależy mi aby tylko to jedno kierowało się przez WAN a reszta przez VPN.

Pisałeś coś Cezary o "zdjęciu trasy domyślnej z tun0 i przywróceniu standardowej", dobrze rozumiem że masz na myśli aby na tym debianie po połączeniu z VPN zmienić trasę z tun0 na eth0 (interfejs WAN) ?
Jeżeli dobrze rozumuje to jak takie coś zrealizować ?

12

Odp: OpenVPN w Debianie

Poleceniem route lub ip route. Usuń domyślną trasę zrób nową domyślną przez eth0.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

13

Odp: OpenVPN w Debianie

Wykorzystałem "ip route". Usunąłem trasy odpowiedzalne za kierowanie ruchu z sieci LAN na interfejs tun0. Teraz mam dostęp zdalny do debiana, a on sam łączy sie z internetem przez interfejs eth0, mimo iz wszystkie inne urządzenia w sieci OpenVPN łączą sie przez tun0, czyli dokładnie to co chciałem osiągnąć.

Kolejny raz ogrome podziękowania w stronę Cezarego, za szybką i fachową pomoc.
Wielki szacun dla Ciebie smile