2017-03-31 2 views
1

達成する必要があるもの 正しいウェブサイトとサブウェブサイトを開いているユーザーの数を計算する必要があります。 `http://stackoverflow.com ' ' https://stackoverflow.com/questions「私は ルータはCentOSに7 iptablesの https://github.com/xnsystems/kpcre/wiki/iptables-string-regex正規表現のURLが一致するiptables

私はイカを使用することはできませんに設定している何

。 このカウント・システムは、私がlogオプション で使用のiptablesを数える必要があるか、多分任意のパケット修正なしのURLをカウントするソフトウェアがある理由であるIPヘッダ(srcとdstのIPアドレス) を変更することはできません

問題 Iどのくらい多くのIPアドレス(何人のユーザー)が正しいURLをヒットするのかを確認する方法を見つけることができません

iptablesの行はこのように見え、うまくいきません 私はすべてのURL(すべてのサブURL)だけでなく、http://stackoverflow.com

sudo iptables -I OUTPUT -p tcp --dport 80 -m string --string "^http://stackoverflow.com$" --algo regex -j ACCEPT

この場合は手伝ってください。

UPDATE:3つの例以下は
あなたは私が--algo正規表現を使用ご覧のようにそれらが

sudo iptables -I OUTPUT -p tcp --dport 80 -m string --string stackoverflow.com --algo regex -j ACCEPT 
sudo iptables -I OUTPUT -p tcp --dport 80 -m string --string stackoverflow.com/documentation --algo regex -j ACCEPT 
sudo iptables -I OUTPUT -p tcp --dport 80 -m string --string stackoverflow.com/questions'; --algo regex -j ACCEPT 

を作品作りしてみてください。
それ以外の解決方法が分かっている場合は、お勧めします。

+0

iptablesについては何も分かりません。しかし、正規表現 '/'と '.'を引用することで正規表現が改善されるかもしれません。あなたは代わりに '\/\ /'と '\ .'を使用することを意味します。 – Yunnosch

+0

他のURLにマッチさせるには、あなたのプログラムが使う正規表現(sed、grep、perl)のフレーバーを教えてください。 perl flavorの場合、これは役に立ちます: '^ http:\/\/\ w +(\。\ w +)+ $' – Yunnosch

+0

私はこのプログラムを使用しています。それは私が知っているすべてです。しかし、どのように動作するのかわからない。 - https://github.com/xnsystems/kpcre/wiki/iptables-string-regex – user7796341

答えて

0

私は(例えば\bが知っているようだが、説明されていない)、それは非常に完全なものではありません、仕様のリンクをチェックし、私はあなたが必要とする正規表現があると思う:

^(http:\/\/){0,1}[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+(\/[a-zA-Z0-9_-]+){0,}$ 

UPDATE:許可http://プレフィックスと/documentationサフィックス。

お試しください。
キャプチャグループ()の使用は指定されていませんが、通常は機能します。
あなたは、一致していてはならない、または一致しない、または一致しないべき例を挙げると、私はこの答えに適応します。 最も簡単に適合させるには、[a-zA-Z0-9_-]の間に2つの場所にさらに多くの文字(URLに許可する)を挿入します。

+0

以下の3つの例を試してみてください。### sudo iptables -I OUTPUT -p tcp --dport 80 -m string - 文字列stackoverflow.com - アルゴ正規表現-jアクセプト### ### sudo iptables -I OUTPUT -p tcp --dport 80 -m文字列--string stackoverflow.com/documentation-algo regex -j ACCEPT ### ### sudo iptables -I OUTPUT -p tcp --dport 80 -m文字列--string stackoverflow.com/questions '; --algo regex -j ACCEPT ###ご覧のとおり、--algo regexを使いました。あなたがそれ以外の解決策を知っているなら、お勧めします。 – user7796341

+0

@ user7796341申し訳ありません。私はiptablesをしません。正規表現の問題を抽出することができれば、私は助けようとします。あなたが行った実験の結果であなたの質問を更新することができます。私のコメントが何か改善されたら、正規表現を更新してください。 – Yunnosch

+0

を理解してください。 正規表現の使い方を教えてください。私は正確にこれを一致させる方法を意味します### http://stackoverflow.com ###とthis ### stackoverflow.com/documentation ### – user7796341

0

パケットにURLを含む行には、URLだけでなく、その周りにいくつかの余分なキーワードがあります。

あなたは、「http://stackoverflow.comのみをブロックしたい場合、あなたは次のようにURLを指定する必要があります。

iptables -I OUTPUT -p tcp --dport 80 -m string --string "/\/ .+Host: stackoverflow.com/si" --algo regex -j DROP 

またはあなたが「http://stackoverflow.com/questionsのみをブロックしたい場合は、あなたが指定する必要がありますこのようなURL:

iptables -I OUTPUT -p tcp --dport 80 -m string --string "/\/questions .+Host: stackoverflow.com/si" --algo regex -j DROP