iptables는 소스 IP를 기반으로 특정 장치를 다른 인터페이스로 전달합니다.

iptables는 소스 IP를 기반으로 특정 장치를 다른 인터페이스로 전달합니다.

최근에 질문한 내용을 좀 더 자세히 설명하려고 합니다.여기(그리고 도움 받기) 이 튜토리얼을 바탕으로: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)

관련 정보