私は次のルールを作成しました。
-A PREROUTING -i vboxnet0 -p tcp -m tcp --dport 80 -j internet
-A internet -j MARK --set-xmark 0x63/0xffffffff
ポート 80 から着信トラフィックをキャプチャし、表示のために送信します。うまくいきますが、53(DNS)、DHCPサービスポート、および他のいくつかのポートを除くすべてのポートをキャプチャするように編集したいと思います。私のiptablesの下に
-A PREROUTING -i vboxnet0 -p tcp -m mark --mark 0x63 -m tcp --dport 80 -j DNAT --to-destination 192.168.56.1
ポート80に向かってタグ付けされたすべてのTCPトラフィックをキャプチャし、それをローカルIPにDNATします。 3(DNS)、DHCPサービスポート、および他のいくつかのポートを除くすべてのポートを含めるように編集したいと思います。
2つのルールセットの最初の-mと2番目の-mの違いの簡単な説明の代わりに、いくつかの良いガイダンスを提示すると、正しい方向に進むことができます。
ベストアンサー1
あなたのルールを知る
ほとんどの場合と同様に、ファイアウォールルールの仕組みを理解する最初のステップは、ページman
(man iptables
)を調べることです。man
ページには次のものがあります。
-m, --match 一致
使用する一致、つまり特定の属性をテストする拡張モジュールを指定します。この一致セットは、ターゲットを呼び出すための条件を構成します。一致は、コマンドラインで指定されているように最初から最後まで評価され、段落方式で機能します。つまり、拡張プログラムでエラーが発生した場合、評価は停止します。
ページ下部で次の項目man
も確認できます。
マッチングとターゲット拡張
iptablesは拡張パケットマッチングとターゲティングモジュールを使用できます。これらのリストはiptables-extensions(8)のマンページにあります。
これにより、ページには、お客様のオプションが実際に実行する操作に関するiptables-extensions
man
具体的な情報が表示されます。-m
そこにいくつかの小さな部分があります:
表示
[!] --タグ値[/mask]
...
TCPプロトコル
[!] --destination-port,--dport ポート[:port]
...
DNAT
このターゲットは、natテーブル、PREROUTINGおよびOUTPUTチェーン、およびこれらのチェーンでのみ呼び出されるカスタムチェーンでのみ有効です。これは、パケットの宛先アドレスを変更する必要があり(この接続のすべての将来のパケットも破損する)、ルールチェックを停止する必要があることを指定します。次のオプションが必要です。
--対象 [ipaddr[-ipaddr]][:port[-port]]
...
表示
この宛先は、パケットに関連する Netfilter タグ値を設定するために使用されます。たとえば、fwmarkベースのルーティング(iproute2が必要)で使用できます。これを行う予定の場合は、ルーティングに影響を与えるためにマングルテーブルのPREROUTINGチェーンにこのフラグを設定する必要があることに注意してください。タグフィールドの幅は32ビットです。
--set-xmark 値[/マスク]
簡単に言えば、-m
オプションは一致するオプションをに追加するだけですiptables
。ただし、このman
ページには、一部の非標準ターゲット(DNAT
使用中のターゲットを含む)も一覧表示されます。
何をすべきか
nat
さて、これらすべてをまとめると、あなたが使用しているテーブルがあなたの目標に適した唯一のテーブルであると仮定しますDNAT
。
トラフィックを表示することも不要に見えます。nat
パケットを処理できるように表示のみされていますが、そもそも表示をせずにnat
ただパケットを処理すればいいです。
たとえば、
-A PREROUTING -i vboxnet0 -p tcp -m tcp --dport 80 -j DNAT --to-destination 192.168.56.1
複数のポートを含む複数のルールを指定したり、指定されたポート範囲を使用したり、指定された不正一致を使用したり[port]:[port]
できます!
。
53
たとえば、(ドメイン)と(ssh)を除くすべてのポートにルールを適用するには、22
次の手順を実行します。
-A PREROUTING -i vboxnet0 -p tcp -m tcp ! --dport 53 -j DNAT --to-destination 192.168.56.1
-A PREROUTING -i vboxnet0 -p tcp -m tcp ! --dport 22 -j DNAT --to-destination 192.168.56.1
多くのポートをフィルタリングしたい場合は面倒ですが、それは人生ですiptables
。/etc/services
特定のサービス/プロトコルに影響を与えないように、ポートマッピングのリストを確認することをお勧めします。