dd-wrt: VAP가 인터넷에 액세스하지 못하도록 방지

dd-wrt: VAP가 인터넷에 액세스하지 못하도록 방지

내 IoT 장치에 대한 보조 네트워크를 구성하려고 합니다. 몇 개의 장치만 인터넷에 액세스하도록 허용하고 나머지 장치는 해당 네트워크에 "감금"되어야 합니다. 또한 IoT 네트워크의 모든 장치는 기본 네트워크의 MQTT 서버에 액세스할 수 있어야 합니다.

내 설정은 다음과 같습니다.

  • 펌웨어: DD-WRT v3.0-r34015M kongac (2017/12/09) -최신 버전이 무선 연결에 많은 문제를 일으키고 있습니다. 10분 후에도 Wi-Fi가 계속 끊어지며 이 문제를 해결하는 유일한 방법은 라우터를 다시 시작하는 것입니다.
  • 하드웨어: 넷기어 R7000

내 네트워크 구성은 다음과 같습니다.

  • 무선->기본 설정에서:

    • VAP를 추가했어요
    • 네트워크 구성: 브리지됨
    • AP 격리: 비활성화됨
  • "설정" -> "VLAN"에서

    • 포트 2 = VLAN15(브리지 할당 없음)
  • 설정->네트워크에서

    • 새로운 브리지 추가(br2)
    • wl02 및 vlan15를 br2에 할당
    • br2에 192.168.7.0/24 할당
    • br2용 DHCP 서버 추가
  • 설정->고급 라우팅에서

    • br2를 통해 192.168.1.0/24에서 192.168.7.0/24로 경로를 추가했습니다.

방화벽 규칙을 추가하지 않으면 기본 네트워크에서 IoT 네트워크의 장치에 액세스할 수 있고, IoT 네트워크에 연결하려면 웹을 탐색하면 됩니다.

몇 가지 검색 후 다음 방화벽 규칙을 추가했습니다(dd-wrt가 항상 규칙 앞에 추가되는 것 같으므로 DROP을 먼저 입력해야 합니다).

iptables -I FORWARD -i br2 -j DROP
iptables -I FORWARD -i br2 -o br0 -d 192.168.1.38 -p tcp --dport 1883 -m state --state NEW -j ACCEPT
iptables -I FORWARD -i br0 -o br2 -m state --state NEW -j ACCEPT

그러므로,

  • IoT -> 인터넷 = 거부됨
  • 메인 -> IoT = 거부
  • IoT->192.168.1.38:1883 = 거부됨

iptables에 뭔가 빠졌다고 확신하지만 무엇인지는 잘 모르겠습니다.

또한 다음을 추가한다고 가정하는 것이 안전합니다.

iptables -I FORWARD -i br2 -o br0 -s 192.168.7.5 -m state --state NEW -j ACCEPT

192.168.7.5가 인터넷에 접속할 수 있나요?

어떤 지침이라도 대단히 감사하겠습니다.

업데이트: 요청 명령의 출력(편집된 WAN IP 포함):

root@DD-WRT:~# ip -br link
root@DD-WRT:~# ip -4 -br address
root@DD-WRT:~# ip route
default via 73.70.220.1 dev vlan2
X.X.X.X/23 dev vlan2  proto kernel  scope link  src X.X.X.X
127.0.0.0/8 dev lo  scope link
169.254.0.0/16 dev br0  proto kernel  scope link  src 169.254.255.1
172.16.0.0/24 via 172.16.0.1 dev vlan3
172.16.0.0/24 dev vlan3  proto kernel  scope link  src 172.16.0.3
192.168.1.0/24 via 192.168.1.1 dev br0  scope link
192.168.1.0/24 dev br0  proto kernel  scope link  src 192.168.1.1
192.168.7.0/24 via 192.168.7.1 dev br2  scope link
192.168.7.0/24 dev br2  proto kernel  scope link  src 192.168.7.1
192.168.15.0/24 dev br1  proto kernel  scope link  src 192.168.15.1
root@DD-WRT:~# ip rule
0:  from all lookup local
32766:  from all lookup main
32767:  from all lookup default

답변1

첫 번째: -I머리에 삽입하는 것을 의미합니다. 즉,접두사. -A사용추가의마지막에. -A이렇게 하지 않으면 실제로 예상대로 작동하지 않을 수 있습니다.반품이전에 배치되었을 수 있는 다른 iptables 규칙을 검토하세요. 그럼 계속해서 -Ibut을 사용하고 나중에 줄 번호를 늘려서 삽입 위치를 선택하고 규칙을 일반적인 순서로 정렬해 보겠습니다.

귀하의 질문은 처리에 관한 것입니다.상태 저장규칙. conntrack은 NEW첫 번째 패킷으로 스트리밍합니다. 모든 응답 패킷은 새로운 것이 아니지만 이 ESTABLISHED상태를 시작합니다. 귀하의 규칙은 상태만 허용하므로 NEW아무 것도 제대로 작동하지 않습니다.

이 답변에서 차선책/중복 규칙이 발생할 수 있는 다른 모든 규칙이나 네트워크 설정을 알지 못하지만 관계없이 작동해야 합니다.

udp응답 및 관련(예: 오류 와 같은 도우미 모듈 icmp또는 도우미 모듈의 데이터 ) 패킷을 허용하는 일반 규칙을 ftp방향당 하나의 규칙으로 추가하는 것부터 시작하세요. 이러한 규칙은 정의에 따라 새 흐름이 항상 NEW(OR이 아님 ESTABLISHED) 별도의 흐름을 허용하지 않습니다. 따라서 상태 RELATED만 신경 쓰면 됩니다 ( 대체되므로 사용 가능한 경우 사용해야 합니다. 그렇지 않으면 해당 문자열을 모두 다시 교체하면 됩니다 ).NEW-m conntrack --ctstate-m state --state-m state --state

iptables -I FORWARD 1 -i br2 -o br0  -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
iptables -I FORWARD 2 -i br0 -o br2  -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT

이제 새 흐름을 (만) 처리할 수 있습니다.
이전 규칙과 다음 규칙은 3가지 상태가 모두 포함된 하나의 규칙으로만 병합될 수 있거나 상태 확인이 전혀 불가능합니다. 왜냐하면 항상 이 3가지 상태 중 하나이기 때문입니다(예, 무효 제외)

iptables -I FORWARD 3 -i br0 -o br2 -m conntrack --ctstate NEW -j ACCEPT
iptables -I FORWARD 4 -i br2 -o br0 -d 192.168.1.38 -p tcp --dport 1883 -m conntrack --ctstate NEW -j ACCEPT
iptables -I FORWARD 5 -i br2 -j DROP

br0마지막 질문에 대해서는 인터페이스에서 인터넷을 사용할 수 없기 때문에 작성하신 내용이 인터넷 액세스를 허용하는지 의심스럽습니다 . 공용 IP를 사용하는 인터페이스에서 사용할 수 있습니다. 이는 인터페이스가 무엇인지 몰라도 작동해야 하며, 지정하지 마세요(이전 명령 다음에 실행하거나 그에 따라 번호를 다시 정렬).iptables-save그리고iptables-restore당신의 친구입니다):

iptables -I FORWARD 5 -o br2 -d 192.168.7.5 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
iptables -I FORWARD 6 -i br2 -s 192.168.7.5 -m conntrack --ctstate NEW -j ACCEPT

그러나 질문에 추가된 누락된 정보는 확실히 도움이 될 것 입니다 ip -br link: ip -4 -br address; 그러면 보안을 저하시키지 않고 규칙이 더욱 일반화될 수 있습니다.ip routeip ruleiptables-save

고쳐 쓰다:macMAC 주소와 일치하도록 일치시킵니다.

IP 대신 MAC 주소를 일치시킬 수 있습니다. 이 정보는 다음에만 사용할 수 있습니다.원천그리고 이는 올바른 네트워크에서만 의미가 있습니다. 따라서 -o br2MAC을 일치시키는 데 사용할 수 없습니다. 위의 규칙 5를 보다 일반적인 규칙(보안상 여전히 괜찮음)으로 바꾸겠습니다. -R사용바꾸다위의 규칙 5와 6을 조정하세요(다시 말하지만 iptables-save매우 편리함).

iptables -R FORWARD 5 -o br2 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
iptables -R FORWARD 6 -i br2 -m mac --mac-source 02:03:04:05:06:07 -m conntrack --ctstate NEW -j ACCEPT

마지막으로 다음을 얻습니다.

iptables -I FORWARD 1 -i br2 -o br0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
iptables -I FORWARD 2 -i br0 -o br2 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
iptables -I FORWARD 3 -i br0 -o br2 -m conntrack --ctstate NEW -j ACCEPT
iptables -I FORWARD 4 -d 192.168.1.38/32 -i br2 -o br0 -p tcp -m tcp --dport 1883 -m conntrack --ctstate NEW -j ACCEPT
iptables -I FORWARD 5 -o br2 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
iptables -I FORWARD 6 -i br2 -m mac --mac-source 02:03:04:05:06:07 -m conntrack --ctstate NEW -j ACCEPT
iptables -I FORWARD 7 -i br2 -j DROP

다섯 번째는 두 번째 것의 상위 집합입니다. 왜냐하면 WAN 인터페이스가 아마도 규칙에 추가되어야 하기 때문이지만 잘 모르겠습니다.

관련 정보