192.168.1.0
내 액세스 포인트가 을(를) 통해 트래픽을 보내고 eth0
다른 모든 트래픽을 을(를) 통해 보내도록 하려면 어떻게 해야 합니까 tun0
?
Raspberry Pi VPN 액세스 포인트를 설정했습니다. 그것은 내 모든 서버와 동일한 서브넷에 위치하며 192.168.1.0
서버와 마찬가지로 케이블로 내 모뎀/라우터에 연결됩니다. 그런 다음 Raspberry Pi wlan0
에는 클라이언트가 연결할 수 있는 WIFI 스틱( )이 있고 자체 서브넷을 실행하며 규칙을 192.168.2.0
사용하여 VPN 연결( )을 통해 iptables
클라이언트의 모든 트래픽을 전달합니다 .wlan0
tun0
나는 이것을 함으로써 이것을 앞으로 설정했습니다;
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
내 문제는 이제 Wi-Fi로 내 액세스 포인트에 연결된 클라이언트가 내 서버와 통신할 수 없다는 것입니다. 어떻게 이를 달성할 수 있나요?
| | ¦
| __________________|_______¦_________
| | 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 |
| |____________________|
내 액세스 포인트 설정에 대해 더 자세히 설명했습니다.http://www.snabela.net/index.php/2013/11/raspberry-vpn-access-point/
AP 클라이언트의 모든 인터넷 트래픽이 VPN을 통해 전송되는 동안 노트북에서 서버로 SSH를 통해 연결하려면 어떻게 해야 합니까? 다른 iptables 규칙을 추가할 수 있나요?
액세스 포인트 ifconfig -a 출력:
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)
액세스 포인트의 경로 -n 출력:
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
답변1
추측을 해보고 기본 FORWARD 정책은 REJECT 또는 DROP(확인 iptables -L FORWARD
)이라고 말씀드리겠습니다. 그것이 맞다면 전체 문제는 다음 줄입니다.
sudo iptables -A FORWARD -i wlan0 -o tun0 -j ACCEPT
wlan0
그것이 하는 일은 를 통해 들어 오고 나갈 모든 것을 FORWARD하는 것에 대해 ACCEPT입니다 tun0
. 에서 192.168.2.2
까지 의 패킷과 일치하지 않는 것은 192.168.1.79
을 통해 나가기 때문입니다 eth0
.
가장 쉬운 방법은 해당 줄을 제거하고 다음 두 줄로 바꾸는 것입니다. 그러면 내부 인터페이스 간에 모든 방향으로 모든 것을 전달할 수 있습니다.
sudo iptables -A FORWARD -i wlan0 -j ACCEPT
sudo iptables -A FORWARD -i eth0 -j ACCEPT
단순히 VPN에서 서버를 제외하려면 -o wlan0
두 번째 줄에 추가하세요. 물론 세션 설정이 특정 방향으로 진행되어야 하는 등 더 엄격한 요구 사항을 추가하려면 이러한 규칙을 조정해야 합니다. 즐거운 시간을 보내시고 콘솔을 편리하게 사용하세요. ;-)