
ath0
두 개의 Wi-Fi 인터페이스( , ) 가 있는 dd-wrt 라우터가 있습니다 ath1
. 나는 모든 것이 ath0
어떤 종류의 WAN 액세스도 갖지 않기를 원합니다. LAN(장치 간)만 가능합니다.
가장 쉽고 강력한 방법으로 이 작업을 수행하려면 어떻게 해야 합니까?
이전에는 ath1을 사용하여 가상 AP, AP용 새 브리지, 일부 고급 라우팅 및 방화벽 설정을 추가하여 이 작업을 시도했습니다. 하지만 이는 지나치게 복잡했고, 어쨌든 사용되지 않은 ath0
(5GHz) 인터페이스를 이 목적으로 사용하는 것이 훨씬 더 쉬울 것이라고 생각했습니다 .
OpenVPN을 클라이언트로 사용하고 있어 상황이 좀 더 복잡해졌습니다. 이전 접근 방식으로 iptables 방화벽을 사용할 때 -I
VPN으로 인해 /etc/의 파일이 내 규칙(상단) 을 덮어쓰고 모든 WAN 액세스를 허용하기 때문에 항상 방화벽 설정을 수동으로 재설정해야 했습니다. VPN. squashFS 때문에 이를 방지할 방법을 찾을 수 없었고 설정을 저장하거나 라우터를 재부팅한 후 항상 수동으로 덮어써야 하는 것은 그리 좋지 않습니다. 또한 나중에 다시 덮어쓰지 않을지 확실하지 않습니다.
ath0
나도 VPN 액세스를 원하지 않습니다 . 소스 IP와 함께 iptables를 사용할 수 없습니다. 해당 SSID/인터페이스의 모든 클라이언트에 대해 연결되자마자 IP를 미리 알 수 없기 때문입니다.
나는 이것을 찾아보았지만 지나치게 발전된 가상 AP/브리지 솔루션을 제외하고는 내 경우에 적합한 것을 찾을 수 없었습니다.
답변1
라우터에 ebtables
(또는 ebtables-nft
) 도 있고 모든 (W)LAN 인터페이스가 동일한 마스터(예: 이름이 지정됨 ) 에 대한 브리지 슬레이브라고 가정합니다 .iptables
bridge0
ebtables -I INPUT -i ath0 -j mark --set-mark 0xabcd
iptables -I FORWARD -i bridge0 -m mark --mark 0xabcd -j DROP
(마크 값은 0xabcd
임의적입니다.)
이로 인해 "LAN 측"에서 라우터로 들어오는 모든 트래픽이 브로드캐스트 도메인 내에 "머물러" 있게 됩니다. 그 이유는 ebtables
' INPUT
브리지 슬레이브/포트에서 다른 브리지 슬레이브/포트로 이동하는 트래픽(예: L2 전달)이 포함되지 않기 때문입니다. 그리고 라우터 자체(따라서 ath0
표시됨)를 대상으로 하는 경우 L3에서 전달되는 것을 원하지 않습니다(예: "LAN"에서 "WAN"/VPN/...으로 이동할 수 있음). .
대안으로 iptables나 패킷 표시에 의존하지 않고도 이를 수행할 수 있습니다.
ebtables -I INPUT -i ath0 -d Unicast -p ip ! --ip-dst $ROUTER_LAN_IP -j DROP
테스트되지는 않았지만 -d Unicast
DHCP를 유지하고 작동하도록 되어 있습니다. IPv6도 필요한 경우(트래픽L3 라우터의 경우) 작동하려면 다음과 같이 더 많은 예외를 위한 추가 체인이 필요/원할 수 있습니다(다른 접근 방식으로도 DHCP를 허용할 수 있음).
ebtables -N ATH0
ebtables -A ATH0 -p ip --ip-dst $ROUTER_LAN_IP -j ACCEPT # unicast
ebtables -A ATH0 -p ip --ip-dport 67 -j ACCEPT # broadcast
ebtables -A ATH0 -p ip ... -j ACCEPT
...
ebtables -A ATH0 -p ip6 ... -j ACCEPT
...
ebtables -A ATH0 -j DROP
ebtables -I INPUT -i ath0 -j ATH0
그러나 보시다시피 후자의 접근 방식은 훨씬 더 서투릅니다.
PS 저는 모든 WRT 등에 대한 경험이 없기 때문에 xtables 규칙을 어떻게 지속시켜야 하는지 모르겠습니다. (공평하게 말하면 AFAIK는 "일반적인" Linux 배포판에서도 배포판에 따라 다릅니다.)