MikroTik et OpenVPN

De Breizh-Entropy
(Redirigé depuis MikroTik et OpenDNS)
Aller à la navigation Aller à la recherche


Avant propos

Introduction

Le but ici est de mettre ce routeur en tête d'un sous-réseau afin de contourner une connexion avec un nombre de ports ouverts limités. Nous allons utiliser un serveur OpenVPN avec son client associé sur routeurOS 5.14 utilisé avec un MikroTik routerboard 450G. Nous supposerons que vous avez un serveur VPN fonctionnel compte tenu de réseau depuis lequel vous êtes connectés.

Remarques

  1. Vous allez a priori utiliser un réseau très limité, il y a donc de fortes chances que le port par défaut pour le VPN (1194) soit bloqué. Dans ce cas vous avez deux solutions :
    • Vous trouver un port ouvert sur votre réseau local et non utilisé sur votre serveur
    • Vous multiplexer ssl, openvpn (et pourquoi ssh) avec sslh. Vous devez au moins avoir la version 1.14 pour OpenVPN. Elle compile facilement si vous avez déjà installé la version présente dans les dépôts avec toutes ses dépendances.
  2. Le client routerOS est un peu pourri, vous ne pourrez pas utiliser ni la compression LZO, ni l'UDP. Pensez donc à modifier la configuration de votre serveur en conséquence.

Configuration du routeur

Les commandes données ici seront à taper dans la console du routeur disponiblent avec ssh.

Mise en place du client VPN

interface ovpn-client add name="vpn" max-mtu=$ connect-to=$ port=$ mode=ethernet user="$" password="$" profile=default auth=$ cipher=$ add-default-route=no

Les valeurs $ sont données par la configuration du VPN, un exemple concret peut être

interface ovpn-client add name="vpn" max-mtu=1500 connect-to=91.224.149.55 port=993 mode=ethernet user="user_vpn" password="*******" profile=default auth=sha1 \
cipher=aes256 add-default-route=no

Ajouter les routes pour que les paquets transitent par le VPN

ip route add dst-address=0.0.0.0/1 gateway=$ip_gateway_vpn
ip route add dst-address=$ip_publique_serveur_vpn/32 gateway=$ip_gateway_locale
ip route add dst-address=128.0.0.0/1 gateway=$ip_gateway_vpn

Ce qui doit donner quelque chose à fin qui ressemble à

ip route print 
Flags: X - disabled, A - active, D - dynamic, C - connect, S - static, r - rip, b - bgp, o - ospf, m - mme, B - blackhole, U - unreachable, P - prohibit 
#      DST-ADDRESS        PREF-SRC        GATEWAY            DISTANCE
0 ADS  0.0.0.0/0                          172.16.110.1              1
1 A S  0.0.0.0/1                          10.42.100.1               1
2 ADC  10.42.100.0/24     10.42.100.5     vpn                       0
3 A S  91.224.149.55/32                   172.16.110.1              1
4 A S  128.0.0.0/1                        10.42.100.1               1
5 ADC  172.16.110.0/24    172.16.110.52   ether1-gateway            0
6 ADC  192.168.88.0/24    192.168.88.1    ether2-master-l...        0

Éditer le firewall pour tout utiliser le NAT du routeur

ip firewall nat edit 0 value-name=out-interface

Et remplacer la valeur présente par l'interface du vpn (sobrement appelée vpn dans cet exemple)

Les DNS

Vous devez remplacer les DNS donnés par le DHCP s'ils ne sont pas accessibles au travers du tunnel ou qu'ils mentent

ip dns edit value-name=servers

Et rentrez par exemple l'IP de ceux de oleane 194.2.0.20 ou 194.2.0.50