• 締切済み

Linuxである特定のIPアドレスから受信したパケットを破棄するモジュ

Linuxである特定のIPアドレスから受信したパケットを破棄するモジュールを作成したいのですが、TCP/IPとドライバ間のインターフェースであるネットデバイスを操作する方法がわかりません。もし ご存知の方がいたら、教えて頂けますでしょうか。また他の方法をご存じの方、あるいは何か参考になる情報をお持ちの方、是非ご教授願います。

みんなの回答

  • nolix
  • ベストアンサー率19% (110/572)
回答No.3

ipchainsかiptablesで可能です。 kernelで上記は変わります。 2.4系は両方使えたかもしれません。 スループットは、iptablesが良いですね。 tcpdumpで確認必須です。 port,tcp,udp,icmp,synフラグ等管理可能です。

cassiopeia1989
質問者

補足

回答ありがとうございます!僕もiptablesに似たプログラムを作ろうと思ってソースを解析したのですが、どうもライブラリを使っているみたいでパケット処理の内容がわかりませんでした。

  • t_nojiri
  • ベストアンサー率28% (595/2071)
回答No.2
cassiopeia1989
質問者

補足

回答ありがとうございます!下の二個のwebは参考になりそうです!!助かりました。

  • seednyan
  • ベストアンサー率28% (448/1568)
回答No.1

カーネル2.26以上(だったかな?)であれば、iptablesコマンドで同様な処理ができたと思いますが。。。 参考例として、インターフェース eth0へのipアドレス 192.168.4.1からのパケットを拒否 iptables -A INPUT -i eth0 -s 192.168.4.1/32 -j DROP だったと思います。

cassiopeia1989
質問者

補足

iptablesを使ってしまえばそれまでなんですが、物好きでしてiptablesに似たプログラムを作ろうと思ったんです。だけどライブラリを使っているみたいで、肝心の処理がわかりませんでした。もうちょっと頑張ってみます。回答ありがとうございました!

関連するQ&A

  • LinuxでIPモジュールとデバイスドライバ間でパケットをやりとりする

    LinuxでIPモジュールとデバイスドライバ間でパケットをやりとりする時のデータ型、構造体またデータをカプセル化する方法をご存知の方、またはこれらの事が詳述してあるサイト、文献をご存知の方、是非詳細を教えていただけませんか?

  • 受信パケットがなく、IPアドレスの更新に失敗しネットに繋がらない

    はじめまして。 最近IBM製ワークステーション Intellistation M pro 6219-4D6 を購入しました!! いざOSをいれてネットに繋ごうとしたら、繋がらなくて困ってます・・・ LANケーブルを繋いだら、IPアドレスの更新が始まりますが、 一向に受信パケットが0のままで、送信パケットだけしか数値があがらなくIPアドレスの更新に失敗します。 LANボードのドライバのせいかなと思い、安価なので新しくPCIでLANボードを買い取り付けて、ドライバあてても結果は変わらずです。。。 コマンドプロンプトでipconfigでしらべてみたら 169から始まるダミーのIPが振ってきます ローカルエリア接続が繋がってないみたいです 後、デバイスマネージャで見たら、不明なデバイスが1個だけあり、 場所:Microsoft ACPI-Compliant System とでます。 これに関して、解決したくてもドライバが見つからなくて・・・ これが原因となっているんでしょうか? 他に何か考えられる原因があったり、解決法をご存知の方いらっしゃいましたら教えてください。 よろしくお願いします。 ちなみに、中古品PCショップで完動品を購入しました。 付属品は何もなかったので、ドライバCD等はないです。

  • 受信パケット0でIPアドレスが取得できない

    会社のノートパソコンなのですが、LANに接続できずに困っています。 解決方法がありましたらご教授ください。 DHCPを使用しており、有線LANです。 LANケーブルを他のパソコンに接続すると使えることからパソコンが原因かと思われます。 ローカルエリア接続の状態を見ると受信パケットだけが0のままです。 ipconfigでIPアドレスを確認したところ169.254~になっています。 デバイスマネージャには!や×はついていませんでしたが、ネットワークアダプタのドライバをインストールしなおしてみましたが改善しませんでした。 パソコン:Dell Inspiron1100 OS:WindowsXP SP2

  • セカンダリーIPアドレスについて

    Solarisにおいては、インタフェースにサブインタフェースを作るようなイメージで、セカンダリのIPアドレスを付与することができるかと思います。 この場合において、質問があるのですが、たとえば、 192.168.10.1と 192.168.10.2の IPアドレスを一つの物理インタフェースに設定した場合、 このインタフェースで、上記2つのアドレス宛のパケットを受け取れることはわかるのですが、サーバから出て行くときは、どちらのIPアドレスを使うのでしょうか? TCPなどのセッション型通信であれば、192.168.10.1宛にきたら、192.168.10.1からパケットを返すことができるかも知れませんが、DNSなどのUDPのプロトコルをつかった通信では、192.168.10.1でうけとっても、192.168.10.2でパケットを送出してしまう恐れはないのでしょうか?

  • パケット通信時のIPヘッダの取得方法について

    RedHat Linux9上で、g++3.2を使用して、ソケット通信の プログラムを作成していますが、UDPやTCPパケットを受信した際に 各パケットのIPヘッダを取得したいのですが、どのように行えばよいのでしょうか? RAWソケットを使用すればできるかとも思ったのですが、下記のURLに 「IPPROTO_RAW 経由でのあらゆる IP プロトコルの受信は、 raw ソケットを用いては行えない。」と書かれています。 http://www.linux.or.jp/JM/html/LDP_man-pages/man7/raw.7.html 上記のURLには、下記のようにも書かれていました。 packetソケットを使用しなければ実現できないのでしょうか? もし、そうならばpacketソケットのサンプルがありましたら、 教えていただけないでしょうか。 「IPPROTO_RAW ソケットは送信専用である。もしどうしてもすべての IP パケットを受信したい場合は、 packet(7) ソケットを ETH_P_IP プロトコルで用いること。」

  • アクセス元のグローバルIPアドレスについて

    TCPヘッダ内にはグローバルIPの情報は、無いようなのですが、 サーバがアクセス元のグローバルIPアドレスを知ることが出来るのは、 具体的に受信データ(パケット?)のどの階層のどの部分を解析して解るのですか?

  • TCP/IPで受信エラー

    自作Linuxマシン:クライアント、Windows:サーバの組み合わせで、TCP/IPによる大量受信をすると1000回に1回程度 "could not read received packet length error=7"というエラーがでます。実際に受信内容が化けていることも正常なこともあります。 受信側: Linux-2.6.18-at9 Debian。PowerPc 300MHz 100Base 送信側: Vista Ultimate Core-duo 1.2GHz です。 このエラーはGrepした結果、/drivers/net/temac/adaptor.cというデバイスドライバのFifoReceiveHandlerというモジュールが発しているらしいことが分かりました。 受信側プログラム: void* tcpReceiveThread(void* pParam) という受信専用のスレッドを設け、 while(1){ rcvSize = recv(socket, buf, 1024*9, 0); // Blocking Mode  ・・・・データ処理 } で常時待ちます。 Windows側には別のprocess側チャネルで送信要求をだします。 送信側プログラム:  int ok = send(socket_h, buf, 1024*9, 0); これを1回の送信要求に対し2回続けて実行します。 Windows側は同じPortNoでacceptしてあります。 不具合の推定原因: 1.受信側データ処理が重く、2回目の送信データが処理しきれていない。データ処理は1ms程度 2.受信process側の処理が重く、受信スレッドにリソースが回らない。 3.一回の送受信データ1024*9バイトが大きすぎる。あるいは必要な設定を行っていない。 などが考えられます。実行の時間的制約が厳し過ぎるのかもしれません: 受信側マシン全体で13msの間にコアジョブ3msと2個以上のpacket(1024*9)を受信しなければなりません。 ご示唆願えることがあればお願いいたします。

  • linux tcpdumpのパケット長

    少々レアな質問ですが linuxでのtcpdumpで表示される以下のメッセージで 1518の部分ですが   08:58:09.451145 < 0:11:85:12:cc:5 0:0:0:0:0:1 ip 1518: 規格のMTU 1514を超えて1518をlinuxが受信しているのですが どなたか理由をご存知ですか?

  • TCP/IP通信時のパケット分割について、パケットがMTU以下なのになぜ分割されるの?

    Linux-PCと組み込みボード間でTCP/IP(Ethernetで)で通信を行ったときの なぜ?な現象について質問です。 Linux上のプログラムでボードに対して1300バイトのデータを送信(write) しているのですがTCPDUMPでモニタしたところ1024/276バイトに分割されて 送信されています。Linux側のMTUが1500になっているのになぜパケットが 分割されてしまうのでしょうか? ちなみにCygwin上でテストしたときには1つのパケットで送信されていま した。

  • IPアドレスから個人が特定できますか

    先日、日テレのニュース番組で市役所のパソコンから通販で買い物をして料金踏み倒すという男性の事件が報道されていました。 何故、市役所が判明したかというと被害者側に届いたメールからIPアドレスを調べ、さらにそのIPアドレスをたどって役場のPCまでたどり着いたというものでした。 IPアドレスでここまで特定できるのかと思うと心配になり、自分宛てのメールを調べましたら、IPアドレスが表示されていました。 そこで質問ですが、相手方のIPアドレスから個人を特定することは普通に可能なのでしょうか? (個人的に) また、そのIPアドレスからのメールを受信拒否することは可能でしょうか? ご存知の方よろしくお願いします。