私はDD-WRTを使用しており、Telnet経由でiptableルールを追加できます。
内部 IP (たとえば 192.168.0.200) を指すポート 80 (例: mydomain.com) の特定のアドレスからの入力を許可するルールを探しています。注:私のIPアドレスを指すようにmydomain.comにAレコードを追加しました。
私は試した:
iptables -I INPUT -p tcp --src mydomain.com --dport 80 -j ACCEPT
iptables -I INPUT -p tcp --port 80 -m string --hex-string "|08|mydomain|03|com" -algo bm -j ACCEPT
DD-WRT Webインターフェイスにログインし、ポート転送を使用してこれを実行できることを知っています。これはうまくいきますが、ポート80からのすべての要求を許可せず、mydomain.comからの要求のみを許可したいと思います。可能ですか?
答え1
あなたはそうすることはできません。 TCP要求は、以下を含むSYNパケットによって開始されます。データなし。ポート番号とIPアドレスは取得できますが、ホスト名は取得できません。
接続を許可し、ヘッダーと一致するデータを含む最初のパケットを見つけるためのいくつかの複雑なルールを作成することもHost
できます。最初のパケットにあることを保証することはできませんが、通常はそうです。その後、最初のパケットがドメインへの要求でない場合は、接続を終了します。当然ではない第二接続の要求です。実際、ファイアウォールを迂回したい人が利用できるあらゆる種類のトリックがあります。たとえば、パケットの他の場所にドメインを入力します。
これらのフィルタリングが必要な場合は、HTTPプロキシが必要です。
PS:その16進文字列と何を一致させたいのかわかりません。ヘッダーはHost
DNS長文字列形式ではなく、純粋なASCIIです。それだけです--hex-string "mydomain.com"
。