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ネットワークに接続するにはWebを閲覧できます。

いくつかの検索の後、次のファイアウォールルールを追加しました(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方向ごとに1つのルールとして追加することから始めます。これらのルールは、定義に従って新しいフローが常に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つの状態の両方を含む1つのルールにのみマージすることができます。なぜなら、常にこの3つの状態の1つであるからです(例、無効を除く)

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 linkip -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

5番目は2番目のものの親セットです。なぜなら、WANインターフェイスはおそらくルールに追加されなければならないからです。

関連情報