Condividi la connessione VPN su Ethernet


1

Sto provando a configurare un vecchio PC con Linux (CentOS) come punto di accesso a una VPN che ho in un'altra casa. Ho due interfacce Ethernet, quindi voglio usarne una per connettermi a Internet tramite il mio router, connettermi alla mia VPN e quindi condividere quella connessione VPN sulla mia seconda Ethernet. L'ip sul secondo dispositivo dovrebbe essere assegnato da DHCP.

Ho letto molti tutorial / post e sono stato in grado di condividere la mia semplice connessione Internet, con la mia VPN inattiva. Tuttavia, una volta avviata la VPN, indipendentemente dalle regole di iptables / route, sono bloccato senza Internet nel mio secondo dispositivo. Non ho idea di cosa sto facendo di sbagliato. Qualcuno potrebbe fornire qualche aiuto?

Ecco le mie configurazioni: - enp2s0: questo è collegato al mio router principale. - enp0s29f7u1: questo sarà collegato a un secondo dispositivo

enp2s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP                                                                                           group default qlen 1000
    link/ether bc:ee:7b:19:89:68 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.26/24 brd 192.168.1.255 scope global noprefixroute enp2s0
       valid_lft forever preferred_lft forever
    inet6 fe80::c25c:2c9d:4777:79fc/64 scope link noprefixroute
       valid_lft forever preferred_lft forever
enp0s29f7u1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast stat                                                                                          e UP group default qlen 1000
    link/ether 00:e0:4c:69:35:d0 brd ff:ff:ff:ff:ff:ff
    inet 10.8.0.5/24 brd 10.8.0.255 scope global noprefixroute enp0s29f7u1
       valid_lft forever preferred_lft forever
    inet6 fe80::2e0:4cff:fe69:35d0/64 scope link
       valid_lft forever preferred_lft forever

Una volta connesso alla mia VPN, c'è un'altra interfaccia, tun0:

tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN group default qlen 100
    link/none
    inet 10.8.0.2/24 brd 10.8.0.255 scope global tun0
       valid_lft forever preferred_lft forever
    inet6 fe80::2d75:64c0:6c21:c9d9/64 scope link flags 800
       valid_lft forever preferred_lft forever

Il mio /etc/dhcp/dhcpd.conf ha le seguenti opzioni:

subnet 10.8.0.0 netmask 255.255.255.0 {
  range 10.8.0.10 10.8.0.15;
  option routers 10.8.0.5;
  option domain-name-servers 8.8.8.8, 8.8.4.4;
}

Il secondo dispositivo sta ottenendo 10.8.0.11 come ip, quindi immagino che funzioni bene.

Ho aggiunto le seguenti regole usando iptables:

iptables -t nat -I POSTROUTING 1 -o tun0 -j MASQUERADE
iptables -I FORWARD 1 -i tun0 -o enp0s29f7u1 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -I FORWARD 1 -i enp0s29f7u1 -o tun0 -j ACCEPT

Informazioni aggiuntive:

  • Ho abilitato l'inoltro ip4: /sbin/sysctl net.ipv4.ip_forwardritorna net.ipv4.ip_forward = 1

  • Posso accedere a Internet con l'ip dal mio server VPN in un'altra casa come previsto. Tuttavia, posso farlo solo dal computer in cui sto impostando questa configurazione, non dal dispositivo collegato enp0s29f7u1.

  • Queste sono le rotte prima / dopo l'avvio di vpn.

PRIMA

ip route
default via 192.168.1.1 dev enp2s0 proto static metric 101
10.8.0.0/24 dev enp0s29f7u1 proto kernel scope link src 10.8.0.5 metric 100

DOPO

percorso ip

0.0.0.0/1 via 10.8.0.1 dev tun0
default via 192.168.1.1 dev enp2s0 proto static metric 101
10.8.0.0/24 dev tun0 proto kernel scope link src 10.8.0.2
10.8.0.0/24 dev enp0s29f7u1 proto kernel scope link src 10.8.0.5 metric 100
xx.xx.xx.xx via 192.168.1.1 dev enp2s0
128.0.0.0/1 via 10.8.0.1 dev tun0
192.168.1.0/24 dev enp2s0 proto kernel scope link src 192.168.1.26 metric 101

192.168.1.0/24 dev enp2s0 proto kernel scope link src 192.168.1.26 metric 101

Ho sostituito il mio IP pubblico del mio server VPN con xx.xx.xx.xx

Cosa mi sto perdendo qui?

EDIT: Per disperazione, ho provato a collegare le interfacce, anche se sapevo che non era una grande idea. Neanche ha funzionato.

Risposte:


0

Hai un sacco di cose a posto, quindi congratulazioni per arrivare così lontano. Alcune cose mi sembrano sbagliate.

Il percorso predefinito tun0 è errato: 0.0.0.0/1 passa solo metà di Internet a tun0. Hai bisogno dell'altra metà. Prova ad aggiungere 128.0.0.0/1. In alternativa, usa 'default' o 0.0.0.0/0 per ottenere entrambe le metà in una volta, ma assicurati di usare una metrica inferiore che 'default via 192.168.1.1'. Dopo aver fatto questo, vedi il mio ultimo paragrafo. Puoi presentare un altro problema.

Un'altra delle cose che mi dà fastidio è che stai usando 10.8.0.0/24 sia per la sottorete tun che per la sottorete LAN. Probabilmente vuoi che siano sottoreti diverse. Questo si sta manifestando anche come due percorsi duplicati nella tabella di routing per 10.8.0.0/24. Prova a trasferire enp0s29f7u1 sulla sottorete successiva, 10.8.1.5/24, e fare lo stesso con il tuo server dhcp.

subnet 10.8.1.0 netmask 255.255.255.0 {
  range 10.8.1.10 10.8.1.15;
  option routers 10.8.1.5;
  option domain-name-servers 8.8.8.8, 8.8.4.4;
}

A parte questo, la configurazione sembra buona. C'è un altro controllo di sanità mentale. Assicurati di non soffocare la connessione VPN a Internet. Hai ancora bisogno di un percorso che abbia la precedenza su 0.0.0.0/0 in modo che tun non tenti di utilizzare se stesso per accedere al server VPN. È necessario disporre di un percorso nella tabella più specifico di 0.0.0.0/0. Credo che tu abbia già questa strada, ma è un errore comune.

xx.xx.xx.xx via 192.168.1.1 dev enp2s0

Per verificarlo, assicurati che i tuoi contatori Rx sull'incremento dell'interfaccia tun dopo aver stabilito il tunnel.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.