0

すべてのポートのプレルーティング ルールから 1 つの IP アドレスを除外するには、サポートが必要です。私のアクセス ポイントに接続する人は誰でも、私のキャプティブ ポータル (ランディング ページ) にリダイレクトされます。したがって、新しいルールを作成したいのですが、既存の事前ルーティング ルールを変更/削除したくありません。

既に作成したプレルーティング ルールは、ポート 22 (SSH) を除く受信ポートをキャプティブ ポータルにルーティングします。したがって、私はこのルールを使用します:

sudo iptables -t nat -A PREROUTING -p tcp --match multiport ! --dport 22 ! -s 192.168.42.19 -j DNAT --to-destination 192.168.42.1:8080

私が望むのは、特定のユーザーを除外することです。そのため、特定の IP アドレスの転送を停止したいと考えています。いろいろやってみましたが、どうにもうまくいきません。さまざまな INPUT および OUTPUT ルールを試しましたが、うまくいきませんでした。PREROUTINGで何とかしたほうがいいと思うのですが、どうすればいいですか?

4

1 に答える 1

2

一部のトラフィックが特定のルールにヒットしないようにするだけの場合は、回避しようとしているルールの前に、そのトラフィックの RETURN または ACCEPT ルールを配置できます。

たとえば、現在のルールを 3 つのルールに変更できます。

iptables -t nat -A PREROUTING -p tcp -m tcp --dport 22 -j ACCEPT
iptables -t nat -A PREROUTING -s 192.168.42.19 -j ACCEPT
iptables -t nat -A PREROUTING -p tcp -j DNAT --to-destination 192.168.42.1:8080

ACCEPT と RETURN の違いに注意してください (iptables(8) man ページから):

ACCEPT means to let the packet through.

RETURN means stop traversing this chain and resume at
       the next rule in the previous (calling) chain.

このアプローチを使用すると、現在のルールをそのままにして、NAT ルールにヒットさせたくないさまざまな種類のトラフィックを記述する任意の数のルールをその前に置くことができます。

iptables カウンターを確認することは、トラフィックが期待どおりのルール (例: iptables -t nat -L PREROUTING -vn) に達しているかどうかを判断する良い方法です。

于 2016-01-11T17:58:22.493 に答える