私は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ルールを確認してください。それでは、-I
butを使用し、後で行番号を増やして挿入位置を選択し、規則を一般的な順序で並べ替えてみましょう。
あなたの質問は処理に関するものです。状態を保存ルール。 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 link
。ip -4 -br address
これにより、セキュリティを低下させることなくルールがより一般化される可能性があります。ip route
ip rule
iptables-save
修正する:mac
MACアドレスと一致するように一致させます。
IPの代わりにMACアドレスを一致させることができます。この情報は次の場合にのみ使用できます。源泉そしてこれは正しいネットワークでのみ意味があります。したがって、-o br2
MAC を一致させるために使用することはできません。上記の規則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インターフェイスはおそらくルールに追加されなければならないからです。