Wie kann ich meinen Access Point veranlassen, den Datenverkehr an 192.168.1.0
und eth0
den gesamten anderen Datenverkehr durchzuleiten tun0
?
Ich habe einen Raspberry Pi VPN-Zugangspunkt eingerichtet. Er befindet sich im selben Subnetz wie alle meine Server 192.168.1.0
und ist, wie die Server, per Kabel mit meinem Modem/Router verbunden. Der Raspberry Pi verfügt dann über einen WLAN-Stick ( wlan0
), mit dem sich Clients verbinden können, er betreibt sein eigenes Subnetz 192.168.2.0
und verwendet iptables
Regeln, um den gesamten Datenverkehr seiner Clients wlan0
über meine VPN-Verbindung ( tun0
) weiterzuleiten.
Ich habe dies vorangetrieben, indem ich Folgendes getan habe:
sudo iptables -t nat -A POSTROUTING -o tun0 -j MASQUERADE
sudo iptables -A FORWARD -i tun0 -o wlan0 -m state --state RELATED,ESTABLISHED -j ACCEPT
sudo iptables -A FORWARD -i wlan0 -o tun0 -j ACCEPT
Mein Problem ist, dass ein Client, der über WLAN mit meinem Access Point verbunden ist, jetzt nicht mit meinen Servern kommunizieren kann. Wie kann ich das erreichen?
| | ¦
| __________________|_______¦_________
| | Modem/Router/DCHP server |
| | 192.168.1.254 |
| |_________________________¦________|
| | ¦
| | ¦
| __________________¦_
| | 8-port switch ¦ |
| |_________________¦_|
| | | ¦
| | | -----------
| ____________________| |__________ ¦
| | eth0| ¦tun0
| __________________ ________________________
| | Server | | Pi VPN Access Point |
| | 192.168.1.79 | | eth0: 192.168.1.81 |
| |________________| | tun0: 10.X.X.X |
| | wlan0:192.168.2.1 |
| |______________________|
| |wlan0
| |
| __________|___________
| | Laptop |
| | wlan0: 192.168.2.2 |
| |____________________|
Ich habe die Einrichtung meines Access Points hier ausführlicher beschrieben:http://www.snabela.net/index.php/2013/11/raspberry-vpn-access-point/
Was muss ich tun, um per SSH vom Laptop auf den Server zugreifen zu können, während der gesamte Internetverkehr von den Clients des APs über das VPN gesendet wird? Kann ich eine weitere iptables-Regel hinzufügen?
Die Ausgabe von ifconfig -a für die Access Points lautet:
eth0 Link encap:Ethernet HWaddr b8:28:eb:f1:77:93
inet addr:192.168.1.81 Bcast:192.168.1.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:124292 errors:0 dropped:0 overruns:0 frame:0
TX packets:86097 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:136739836 (130.4 MiB) TX bytes:15199088 (14.4 MiB)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:60 errors:0 dropped:0 overruns:0 frame:0
TX packets:60 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:6200 (6.0 KiB) TX bytes:6200 (6.0 KiB)
mon.wlan0 Link encap:UNSPEC HWaddr F8-1B-67-20-B3-61-00-00-00-00-00-00-00-00-00-00
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:4760 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:630721 (615.9 KiB) TX bytes:0 (0.0 B)
tun0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
inet addr:10.4.43.179 P-t-P:10.4.43.178 Mask:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1
RX packets:108875 errors:0 dropped:0 overruns:0 frame:0
TX packets:75807 errors:0 dropped:29 overruns:0 carrier:0
collisions:0 txqueuelen:100
RX bytes:126611820 (120.7 MiB) TX bytes:6303503 (6.0 MiB)
wlan0 Link encap:Ethernet HWaddr f8:1b:67:20:b3:61
inet addr:192.168.2.1 Bcast:192.168.2.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:75019 errors:0 dropped:0 overruns:0 frame:0
TX packets:109376 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:7219164 (6.8 MiB) TX bytes:130045181 (124.0 MiB)
Die Route -n-Ausgabe des Access Points:
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 10.4.43.178 128.0.0.0 UG 0 0 0 tun0
0.0.0.0 192.168.1.254 0.0.0.0 UG 0 0 0 eth0
10.4.0.1 10.4.43.178 255.255.255.255 UGH 0 0 0 tun0
10.4.43.178 0.0.0.0 255.255.255.255 UH 0 0 0 tun0
95.211.191.34 192.168.1.254 255.255.255.255 UGH 0 0 0 eth0
128.0.0.0 10.4.43.178 128.0.0.0 UG 0 0 0 tun0
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
192.168.2.0 0.0.0.0 255.255.255.0 U 0 0 0 wlan0
Antwort1
Ich wage eine Vermutung und sage, dass Ihre Standard-FORWARD-Richtlinie REJECT oder DROP ist (prüfen Sie dies mit iptables -L FORWARD
). Wenn das richtig ist, besteht Ihr gesamtes Problem in dieser Zeile:
sudo iptables -A FORWARD -i wlan0 -o tun0 -j ACCEPT
Es AKZEPTIERT zum WEITERLEITEN von allem, was über eingeht wlan0
und über ausgegeben würde tun0
. Dies trifft nicht auf ein Paket von 192.168.2.2
an zu 192.168.1.79
, weil dieses über ausgegeben würde eth0
.
Am einfachsten ist es, diese Zeile zu entfernen und durch diese beiden zu ersetzen, um die Weiterleitung aller Daten in beide Richtungen zwischen Ihren internen Schnittstellen zu ermöglichen:
sudo iptables -A FORWARD -i wlan0 -j ACCEPT
sudo iptables -A FORWARD -i eth0 -j ACCEPT
Wenn Sie Ihren Server einfach vom VPN ausschließen möchten, fügen Sie -o wlan0
der zweiten Zeile Folgendes hinzu. Wenn Sie strengere Anforderungen hinzufügen möchten, z. B. dass die Sitzungseinrichtung in eine bestimmte Richtung erfolgen muss oder was auch immer, müssen diese Regeln natürlich angepasst werden. Viel Spaß und halten Sie eine Konsole bereit. ;-)