최근에 질문한 내용을 좀 더 자세히 설명하려고 합니다.여기(그리고 도움 받기) 이 튜토리얼을 바탕으로:https://www.instructables.com/Raspberry-Pi-VPN-Gateway/#step5.
Raspberry PI를 VPN 상자로 사용하여 다음 IP 테이블을 적용하여 소스 IP 주소를 사용하여 VPN 인터페이스(nordlynx)를 통해 트래픽을 라우팅했습니다.192.168.4.26, 동일한 인터페이스를 종료하면 효과가 매우 좋습니다.
현재 저는 입출력용 인터페이스 1개(eth0)를 사용하고 있으며 VPN은 NordVPN에서 제공됩니다(nordlynx는 VPN 인터페이스의 이름입니다).
sudo iptables -t nat -A POSTROUTING -o nordlynx -j MASQUERADE
sudo iptables -A FORWARD -i eth0 -o nordlynx -s 192.168.4.26 -j ACCEPT
sudo iptables -A FORWARD -i nordlynx -o eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT
sudo iptables -A INPUT -i lo -j ACCEPT
sudo iptables -A INPUT -i eth0 -p icmp -j ACCEPT
sudo iptables -A INPUT -i eth0 -p tcp --dport 22 -j ACCEPT
sudo iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
sudo iptables -P FORWARD DROP
sudo iptables -P INPUT DROP
내 문제는 Nordlynx를 통해 전달되지 않는 모든 IP 주소가 더 이상 유효하지 않다는 것입니다. 다른 장치 IP 주소를 전달하여 테스트를 시도했습니다.192.168.4.51VPN을 통과할 필요가 없도록 eth0 인터페이스를 종료하지만 작동하지 않습니다.
sudo iptables -A FORWARD -i eth0 -o eth0 -s 192.168.4.51 -j ACCEPT
sudo iptables -A INPUT -i eth0 -s 192.168.4.51 -j ACCEPT
iproute2
이해합니다. 아마도 이것을 사용해야 할까요 ? 다음 IP 규칙과 경로를 추가해 보았지만 여전히 아무 것도 없습니다.
ip rule add from 192.168.4.51 table 200
ip route add default via 192.168.4.1 dev eth0 table 200
ip route flush cache
IP 규칙/경로에 관계없이 iptables 규칙에 의해 차단되기 때문입니까? 나는 여기서 약간 혼란스러워서 내가 뭘 잘못하고 있는지에 대한 조언이 큰 도움이 될 것입니다.
편집하다:
+--------------+
| |
| ISP MODEM |
| |
+--------------+
|
|
+------------------------------------+
| |
| MAIN ROUTER |
| 192.168.4.1 |
| |
+------------------------------------+
| | |
| | |
+----------------+ +--------------+ +---------------+
| | | | | |
| MACBOOK 1 | | RASPBERRY Pi | | MACBOOK 2 |
| 192.168.4.26 | | 192.168.4.63 | | 192.168.4.51 |
| |---| |---| |
+----------------+ +--------------+ +---------------+
--- ---
\--- ---/
\--- ---/
\--- ---/
\-- --/
MANUALLY SET ROUTER ADDRESS OF DEVICES TO RASPBERRY Pi
(192.168.4.63)
pi@raspberrypi:~ $ ip rule show
0: from all lookup local
32762: from 192.168.4.51 lookup vpnbypass
32763: from all lookup main suppress_prefixlength 0
32764: not from all fwmark 0xca6c lookup 51820
32765: from all to 192.154.196.27 lookup main
32766: from all lookup main
32767: from all lookup default
pi@raspberrypi:~ $ cat /etc/iproute2/rt_tables
#
# reserved values
#
255 local
254 main
253 default
0 unspec
#
# local
#
#1 inr.ruhep
200 vpnbypass
VPN이 시작되면 Linux 애플리케이션용 NordVPN(와이어가드 프로토콜)이 다음 IPtables를 설정합니다.
-P INPUT DROP
-P FORWARD DROP
-P OUTPUT ACCEPT
-A INPUT -s 192.154.196.27/32 -i wlan0 -j ACCEPT
-A INPUT -s 192.154.196.27/32 -i eth0 -j ACCEPT
-A INPUT -i wlan0 -p udp -m udp --dport 22 -j ACCEPT
-A INPUT -i wlan0 -p udp -m udp --sport 22 -j ACCEPT
-A INPUT -i eth0 -p udp -m udp --dport 22 -j ACCEPT
-A INPUT -i eth0 -p udp -m udp --sport 22 -j ACCEPT
-A INPUT -i wlan0 -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -i wlan0 -p tcp -m tcp --sport 22 -j ACCEPT
-A INPUT -i eth0 -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -i eth0 -p tcp -m tcp --sport 22 -j ACCEPT
-A INPUT -i wlan0 -j DROP
-A INPUT -i eth0 -j DROP
-A INPUT -i lo -j ACCEPT
-A INPUT -i eth0 -p icmp -j ACCEPT
-A INPUT -i eth0 -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -i eth0 -o nordlynx -j ACCEPT
-A FORWARD -i nordlynx -o eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT
-A OUTPUT -d 192.154.196.27/32 -o wlan0 -j ACCEPT
-A OUTPUT -d 192.154.196.27/32 -o eth0 -j ACCEPT
-A OUTPUT -o wlan0 -p udp -m udp --dport 22 -j ACCEPT
-A OUTPUT -o wlan0 -p udp -m udp --sport 22 -j ACCEPT
-A OUTPUT -o eth0 -p udp -m udp --dport 22 -j ACCEPT
-A OUTPUT -o eth0 -p udp -m udp --sport 22 -j ACCEPT
-A OUTPUT -o wlan0 -p tcp -m tcp --dport 22 -j ACCEPT
-A OUTPUT -o wlan0 -p tcp -m tcp --sport 22 -j ACCEPT
-A OUTPUT -o eth0 -p tcp -m tcp --dport 22 -j ACCEPT
-A OUTPUT -o eth0 -p tcp -m tcp --sport 22 -j ACCEPT
-A OUTPUT -o wlan0 -j DROP
-A OUTPUT -o eth0 -j DROP
답변1
네트워크 토폴로지를 설명할 수 있습니까? 192.168.4.26은 RPi의 로컬 IP 주소이고 192.168.4.51은 RPi 뒤의 다른 PC입니까?
이 명령의 출력을 복사하여 붙여넣으세요.
ip rule show
cat /etc/iproute2/rt_tables
ip route show table xyz (for every table xyz form ip rule show command above or table name from rt_tables file)