VPN-Verbindung über Ethernet freigeben


1

Ich versuche, einen alten PC mit Linux (CentOS) als Zugangspunkt zu einem VPN einzurichten, das ich in einem anderen Haus habe. Ich habe zwei Ethernet-Schnittstellen, daher möchte ich eine verwenden, um über meinen Router eine Verbindung zum Internet herzustellen, eine Verbindung zu meinem VPN herzustellen und diese VPN-Verbindung dann über mein zweites Ethernet freizugeben. Die IP auf dem zweiten Gerät sollte von DHCP zugewiesen werden.

Ich habe viele Tutorials / Beiträge gelesen und konnte meine normale Internetverbindung mit ausgefallenem VPN teilen. Sobald ich jedoch das VPN starte, stecke ich auf meinem zweiten Gerät ohne Internet fest, unabhängig von den Regeln für iptables / routes. Ich weiß nicht, was ich falsch mache. Kann mir jemand helfen?

Hier sind meine Konfigurationen: - enp2s0: Dies ist mit meinem Hauptrouter verbunden. - enp0s29f7u1: Dies wird mit einem zweiten Gerät verbunden

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

Sobald ich mich mit meinem VPN verbinde, gibt es eine andere Schnittstelle, 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

Meine /etc/dhcp/dhcpd.conf hat die folgenden Optionen:

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;
}

Das zweite Gerät bekommt 10.8.0.11 als IP, also denke ich, dass es gut funktioniert.

Ich habe die folgenden Regeln mit iptables hinzugefügt:

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

Zusätzliche Information:

  • Ich habe die IP4-Weiterleitung aktiviert: gibt /sbin/sysctl net.ipv4.ip_forwardzurück net.ipv4.ip_forward = 1

  • Ich kann mit der IP von meinem VPN-Server in einem anderen Haus wie erwartet auf das Internet zugreifen. Ich kann es jedoch nur von dem Computer aus tun, auf dem ich diese Konfiguration einrichte, nicht von dem Gerät, das über verbunden ist enp0s29f7u1.

  • Dies sind die Routen vor / nach dem Start des VPN.

VOR

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

NACH

ip route

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

Ich habe meine öffentliche VPN-Server-IP durch xx.xx.xx.xx ersetzt

Was vermisse ich hier?

EDIT: Aus Verzweiflung habe ich versucht, Schnittstellen zu überbrücken, auch wenn ich wusste, dass es keine großartige Idee war. Es hat auch nicht funktioniert.

Antworten:


0

Sie haben eine Menge Dinge richtig gemacht, also herzlichen Glückwunsch, dass Sie so weit gekommen sind. Ein paar Dinge sehen für mich falsch aus.

Ihre Standardroute für tun0 ist falsch: 0.0.0.0/1 übergibt nur die Hälfte des Internets an tun0. Du brauchst die andere Hälfte. Versuchen Sie, 128.0.0.0/1 hinzuzufügen. Alternativ können Sie 'default' oder 0.0.0.0/0 verwenden, um beide Hälften auf einmal zu erhalten. Stellen Sie jedoch sicher, dass Sie eine niedrigere Metrik verwenden, die 'default via 192.168.1.1' lautet. Danach siehe meinen letzten Absatz. Möglicherweise führen Sie ein anderes Problem ein.

Eines der anderen Dinge, die mich stören, ist, dass Sie 10.8.0.0/24 sowohl für das Tun-Subnetz als auch für das LAN-Subnetz verwenden. Sie möchten wahrscheinlich, dass dies unterschiedliche Subnetze sind. Dies äußert sich auch in zwei doppelten Routen in Ihrer Routing-Tabelle für 10.8.0.0/24. Versuchen Sie, enp0s29f7u1 in das nächste Subnetz (10.8.1.5/24) zu verschieben und machen Sie dasselbe mit Ihrem DHCP-Server.

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;
}

Davon abgesehen sieht die Konfiguration gut aus. Es gibt noch eine Überprüfung der geistigen Gesundheit. Stellen Sie sicher, dass Sie die Verbindung Ihres VPN zum Internet nicht abwürgen. Sie benötigen weiterhin eine Route, die Vorrang vor 0.0.0.0/0 hat, damit tun nicht versucht, sich selbst zu nutzen, um zum VPN-Server zu gelangen. Sie müssen eine Route in Ihrer Tabelle haben, die spezifischer als 0.0.0.0/0 ist. Ich glaube, Sie haben diese Route bereits, aber es ist ein häufiger Fehler.

xx.xx.xx.xx via 192.168.1.1 dev enp2s0

Um dies zu überprüfen, stellen Sie sicher, dass Ihre Rx-Zähler auf der Tun-Schnittstelle nach dem Herstellen des Tunnels erhöht werden .

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.