10 votes

Partager ma connexion VPN avec d'autres utilisateurs du réseau local

J'ai un PC avec un adaptateur LAN physique qui se connecte à un serveur VPN. Existe-t-il un moyen de configurer une interface de passerelle (virtuelle) sur ce même adaptateur LAN de manière à ce que les autres périphériques de mon réseau puissent l'utiliser comme passerelle et faire passer leur trafic par cette interface et la connexion VPN ?

La plupart de mes ifconfig :

enp0s21f5 Link encap:Ethernet  HWaddr 4c:cc:6a:d5:94:96  
      inet addr:192.168.1.120  Bcast:192.168.1.255  Mask:255.255.255.0
      inet6 addr: fe80::76e3:9399:187d:fdad/64 Scope:Link
      UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
lo        Link encap:Local Loopback  
      inet addr:127.0.0.1  Mask:255.0.0.0
      inet6 addr: ::1/128 Scope:Host
      UP LOOPBACK RUNNING  MTU:65536  Metric:1
tun0      Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  
      inet addr:10.11.0.2  P-t-P:10.11.0.2  Mask:255.255.0.0
      inet6 addr: fdda:d0d0:cafe:1197::1000/64 Scope:Global
      inet6 addr: fe80::c9b:2e1b:882:1637/64 Scope:Link
      UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1500  Metric:1
virbr0    Link encap:Ethernet  HWaddr 00:00:00:00:00:00  
      inet addr:192.168.122.1  Bcast:192.168.122.255  Mask:255.255.255.0
      UP BROADCAST MULTICAST  MTU:1500  Metric:1

Et ici des informations sur le routage :

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         10.11.0.1       0.0.0.0         UG    50     0        0 tun0
0.0.0.0         192.168.1.1     0.0.0.0         UG    100    0        0 enp0s21f5
10.11.0.0       0.0.0.0         255.255.0.0     U     50     0        0 tun0
89.238.176.34   192.168.1.1     255.255.255.255 UGH   100    0        0 enp0s21f5
169.254.0.0     0.0.0.0         255.255.0.0     U     1000   0        0 enp0s21f5
192.168.1.0     0.0.0.0         255.255.255.0   U     100    0        0 enp0s21f5
192.168.122.0   0.0.0.0         255.255.255.0   U     0      0        0 virbr0

7voto

wsmyth Points 130

@fugitive La réponse de l'auteur fonctionne, même sous Ubuntu 19.04, mais si vous n'avez pas besoin d'héberger une connexion Internet pour vos autres périphériques LAN, vous pouvez sauter quelques étapes.

Si tous les appareils sont connectés à votre réseau local via wifi ou filaire, vous pouvez suivre ces étapes :

  1. Confirmez que votre PC avec la connexion VPN peut transmettre des paquets comme un routeur.

    cat /proc/sys/net/ipv4/ip_forward  #(this should return `1`)

    Si la réponse ci-dessus est 0 au lieu de 1 vous devez activer la redirection comme ceci :

    echo '1' >> /proc/sys/net/ipv4/ip_forward`  
    • [facultatif] le rendre persistant à travers les redémarrages :

      echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf && sysctl -p 
  2. récupérer les noms de vos adaptateurs à utiliser lors de la configuration d'iptables Utiliser ifconfig o ip link pour lister les adaptateurs sur votre machine.

    Voici un exemple tiré de ma machine :

    term-prompt$:>  ifconfig -a  enp0s31f6: 
    flags=-28605<UP,BROADCAST,RUNNING,MULTICAST,DYNAMIC>  mtu 1500
            inet 192.168.199.71  netmask 255.255.255.0  broadcast 192.168.199.255
            inet6 fe80::ac93:1176:160:e2cd  prefixlen 64  scopeid 0x20&lt;link>
            ether 04:0e:3c:4d:50:ab  txqueuelen 1000  (Ethernet)
            RX packets 90437  bytes 61674092 (61.6 MB)
            RX errors 0  dropped 20  overruns 0  frame 0
            TX packets 178888  bytes 41623722 (41.6 MB)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
            device interrupt 16  memory 0xec300000-ec320000    
    
    enx00e04c680345: flags=28669<UP,BROADCAST,MULTICAST,DYNAMIC> mtu 1500
            ether 00:e0:4c:68:03:45  txqueuelen 1000  (Ethernet)
            RX packets 0  bytes 0 (0.0 B)
            RX errors 0  dropped 0  overruns 0  frame 0
            TX packets 0  bytes 0 (0.0 B)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
    
    lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
            inet 127.0.0.1  netmask 255.0.0.0
            inet6 ::1  prefixlen 128  scopeid 0x10&lt;host&gt;
            loop  txqueuelen 1000  (Local Loopback)
            RX packets 122658  bytes 19677105 (19.6 MB)
            RX errors 0  dropped 0  overruns 0  frame 0
            TX packets 122658  bytes 19677105 (19.6 MB)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
    
    virbr0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
            inet 192.168.122.1  netmask 255.255.255.0  broadcast 192.168.122.255
            ether 52:54:00:19:32:b8  txqueuelen 1000  (Ethernet)
            RX packets 0  bytes 0 (0.0 B)
            RX errors 0  dropped 0  overruns 0  frame 0
            TX packets 0  bytes 0 (0.0 B)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
    
    virbr1: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
            inet 192.168.220.1  netmask 255.255.252.0  broadcast 192.168.223.255
            ether 52:54:00:0a:f9:8a  txqueuelen 1000  (Ethernet)
            RX packets 0  bytes 0 (0.0 B)
            RX errors 0  dropped 0  overruns 0  frame 0
            TX packets 0  bytes 0 (0.0 B)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
    
    wlp58s0: flags=-28670<BROADCAST,MULTICAST,DYNAMIC> mtu 1500
            ether 80:45:dd:06:00:22  txqueuelen 1000  (Ethernet)
            RX packets 258636  bytes 148222512 (148.2 MB)
            RX errors 0  dropped 0  overruns 0  frame 0
            TX packets 35682  bytes 4577182 (4.5 MB)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

    aide : comme vous pouvez le voir, mon adaptateur Ethernet est nommé enp0s31f6 et mon adaptateur Wi-Fi s'appelle wlp58s0 . Cela signifie que lorsque j'émets le iptables sur ma machine, je dois changer wlan+ a wlp+ o wlp58s0 pour qu'ils soient corrects. Je n'ai pas actuellement de tun dans mon exemple car je ne suis pas connecté à un VPN ou à un tunnel. Les interfaces de tunnel s'affichent généralement avec la convention de dénomination par défaut suivante tun{X} con {X} étant un nombre entier de 0 à l'infini. Ainsi, en utilisant le tun+ dans vos règles iptables devrait suffire, sauf si vous avez plus d'un VPN/tunnel et un schéma de routage plus complexe.

  3. set iptables pour NATer et transférer les paquets reçus sur votre interface LAN locale et envoyer à partir de votre interface tun (VPN)

    iptables -t nat -A POSTROUTING -o tun+ -j MASQUERADE
    
    iptables -A FORWARD -i wlan+ -o tun+ -j ACCEPT
    iptables -A FORWARD -o tun+ -j ACCEPT
    iptables -A FORWARD -i tun+ -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
    
    iptables -A INPUT -i tun+ -j ACCEPT

    note : tun+ utilisé dans les commandes netfilter/iptable ci-dessus - est une correspondance joker pour tout adaptateur nommé tun suivi d'un caractère (par exemple, tun0, tun1, tun2, ...). Il en va de même pour wlan+ . Vous devrez de vous assurer que le tun+ y wlan+ correspondent à ce que vos adaptateurs nom de vos adaptateurs sur votre machine, sinon les règles de transfert ne seront pas appliquées à vos paquets et les choses ne fonctionneront pas comme souhaité. en savoir plus Red Hat Enterprise Linux 4 : Guide de référence, 18.3.3. Options du paramètre iptables pour le -i option de drapeau.

  4. sur votre autre appareil/ordinateur : utilisez la commande route pour ajouter une route pour les sous-réseaux VPN et définissez la passerelle à l'IP de votre ordinateur avec la connexion VPN (pas tun, mais l'adaptateur wlan+ ou en+).

    exemple : si l'ordinateur avec la connexion VPN a un adaptateur sur votre réseau local avec une ip de 192.168.0.100 et le sous-réseau de votre réseau accessible par VPN est 10.0.0.0/24 . Sur l'autre ordinateur du réseau local qui n'a pas de connexion VPN, vous devez entrer une route qui utilise les éléments suivants 192.168.0.100 en tant que passerelle pour 10.0.0.0/24 .

    Sous Windows, la commande ressemblerait à ceci :

    route add 10.0.0.0 mask 255.255.255.0 192.168.0.100 metric 200 if <interface>

3voto

fugitive Points 1066

Solution avec wifi adapter y hostapd logiciel :

sudo apt-get install hostapd -y

Configurer hostapd

interface=wlan0
ssid=Your_WLAN
hw_mode=g # can be b/g/n
wpa=2
wpa_passphrase=PASS
wpa_key_mgmt=WPA-PSK WPA-EAP WPA-PSK-SHA256 WPA-EAP-SHA256

Editar /etc/network/interfaces

auto wlan0
iface wlan0 inet static
hostapd /etc/hostapd/hostapd.conf
address 192.168.0.1
netmask 255.255.255.0

Parce que votre PC est un routeur, vous devez activer la redirection vers les interfaces

  • 1ère voie echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf && sysctl -p # mode persistant
  • 2ème - echo 1 > /proc/sys/net/ip/ipv4/ip_forward

Pour l'activer au démarrage et le démarrer : systemctl enable hostapd && systemctl start hostapd

Installer dnsmasq car il sera à la fois votre serveur dns et dhcp.

sudo apt install dnsmasq

éditer son fichier de conf : vi /etc/dnsmasq.conf

interface=lo,wlan0
no-dhcp-interface=lo
dhcp-range=192.168.0.2,192.168.0.254,255.255.255.0,12h

Iptables :

iptables -t nat -A POSTROUTING -o tun+ -j MASQUERADE

iptables -A FORWARD -i wlan+ -o tun+ -j ACCEPT
iptables -A FORWARD -o tun+ -j ACCEPT
iptables -A FORWARD -i tun+ -m conntrack --ctstate ESTABLISHED,RELATED   -j ACCEPT
iptables -A INPUT -i tun+ -j ACCEPT

Faites-moi savoir si ça marche pour vous.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X