Raspbian Linux 8.0을 사용하여 Model 3 Raspberry Pi를 VPN 라우터로 설정했습니다. 여기에는 다음과 같은 네트워크 인터페이스가 있습니다.
- eth0 - 유선 인터넷 업링크로 구성됨(현재 사용되지 않음)
- wlan0 - 무선 인터넷 업링크(활성)
- eth1(서브넷 192.168.5.0/24) - 유선 클라이언트 LAN(내 PC용)
- wlan1(서브넷 192.168.4.0/24) - 클라이언트 WLAN(내 전화기용)
- tun0, tun1 - VPN 인터페이스
모든 것이 내가 원하는 방식으로 작동합니다(VPN을 통한 클라이언트 연결). 단 한 가지만 제외하면 eth1과 wlan1 사이에 라우팅되는 것 같은데, 이는 내가 원하지 않습니다. wlan1의 클라이언트 시스템이 eth1의 시스템에 연결되는 것을 원하지 않지만 가능합니다. 또한 클라이언트 WLAN의 시스템이 이더넷을 통해 연결된 시스템만 Pi에 SSH로 연결할 수 있을 것으로 기대하지 않지만 현재는 가능합니다. 192.168.5.1(192.168.4.1 아님)에서만 수신하도록 SSH를 설정했지만 클라이언트 WLAN에 연결하면 여전히 192.168.5.1에 SSH로 연결할 수 있습니다.
물론 wlan1과 tun0/tun1 사이, eth1과 tun0/tun1 사이를 라우팅하기를 원했기 때문에 IP 전달을 활성화했습니다.
내 iptables 규칙은 다음과 같습니다.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A FORWARD -s 192.168.4.0/24 -i wlan1 -o eth0 -m conntrack --ctstate NEW -m comment --comment "Block traffic from wlan1 (client WiFi) to eth0 (wired uplink)" -j REJECT --reject-with icmp-port-unreachable
-A FORWARD -s 192.168.4.0/24 -i wlan1 -o wlan0 -m conntrack --ctstate NEW -m comment --comment "Block traffic from wlan1 (client WiFi) to wlan0 (WiFi uplink)" -j REJECT --reject-with icmp-port-unreachable
-A FORWARD -s 192.168.4.0/24 -i wlan1 -o tun0 -m conntrack --ctstate NEW -m comment --comment "Allow traffic from wlan1 (client WiFi) to tun0 (VPN)" -j ACCEPT
-A FORWARD -s 192.168.4.0/24 -i wlan1 -o tun1 -m conntrack --ctstate NEW -m comment --comment "Allow traffic from wlan1 (client WiFi) to tun1 (VPN)" -j ACCEPT
-A FORWARD -s 192.168.5.0/24 -i eth1 -o eth0 -m conntrack --ctstate NEW -m comment --comment "Block traffic from eth1 (client LAN) to eth0 (wired uplink)" -j REJECT --reject-with icmp-port-unreachable
-A FORWARD -s 192.168.5.0/24 -i eth1 -o wlan0 -m conntrack --ctstate NEW -m comment --comment "Block traffic from eth1 (client LAN) to wlan0 (WiFi uplink)" -j REJECT --reject-with icmp-port-unreachable
-A FORWARD -s 192.168.5.0/24 -i eth1 -o tun0 -m conntrack --ctstate NEW -m comment --comment "Allow traffic from eth1 (client LAN) to tun0 (VPN)" -j ACCEPT
-A FORWARD -s 192.168.5.0/24 -i eth1 -o tun1 -m conntrack --ctstate NEW -m comment --comment "Allow traffic from eth1 (client LAN) to tun1 (VPN)" -j ACCEPT
-A FORWARD -s 192.168.4.0/24 -i wlan1 -o eth1 -m conntrack --ctstate NEW -m comment --comment "Block traffic from wlan1 (client WiFi) to eth1 (client LAN)" -j REJECT --reject-with icmp-port-unreachable
-A FORWARD -s 192.168.4.0/24 -d 192.168.5.0/24 -m conntrack --ctstate NEW -m comment --comment "Block traffic from client WiFi range to client LAN range" -j REJECT --reject-with icmp-port-unreachable
-A FORWARD -s 192.168.5.0/24 -i eth1 -o wlan1 -m conntrack --ctstate NEW -m comment --comment "Block traffic from eth1 (client LAN) to wlan1 (client WiFi)" -j REJECT --reject-with icmp-port-unreachable
-A FORWARD -s 192.168.5.0/24 -d 192.168.4.0/24 -m conntrack --ctstate NEW -m comment --comment "Block traffic from client LAN range to client WiFi range" -j REJECT --reject-with icmp-port-unreachable
COMMIT
*nat
:PREROUTING ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING -o eth0 -m comment --comment "Use VPN IP for eth0" -j MASQUERADE
-A POSTROUTING -o wlan0 -m comment --comment "Use VPN IP for wlan0" -j MASQUERADE
-A POSTROUTING -o tun0 -m comment --comment "Use VPN IP for tun0" -j MASQUERADE
-A POSTROUTING -o tun1 -m comment --comment "Use VPN IP for tun1" -j MASQUERADE
COMMIT
답변1
SSH 액세스 차단 wlan1
:
iptables -A INPUT -i wlan1 -p tcp --dport 22 -j REJECT --reject-with icmp-port-unreachable
총평: 사용의 의미를 모르겠습니다
-s 192.168.4.0/24 -i wlan1 -o eth1
바꾸다
-i wlan1 -o eth1
유효한 소스 주소를 가진 패킷뿐만 아니라 모든 패킷을 차단하고 싶기 때문인 것 같습니다.