[FreeBSD-users-jp 96293] Re: パケットの横取り

もじもじ mojimoji528 @ yahoo.co.jp
2018年 8月 6日 (月) 04:38:39 UTC


一ヶ月ほど前に御知恵拝借したもじもじです。
結局の顛末を書こうと思い出てきました。

興味ない方は・・・(^^;

で、結論から言いますと、C でゴリゴリ書きました。

C な理由は Python が途方もなく遅いから・・・・
UDP のパケットロスしまくりでした。。。。
ただの転送プログラムなのにね・・・・

で、C で書くことにしたわけですが、etables や iptables を
勉強したり、ipfw を勉強したり色々していましたが、なんせ、
やりたいことは至極単純で、パケットフィルターはとても設定
が難しい。
FreeBSD, Linux 両方にポーティングしようと思ったら、2つ
勉強しなくちゃなんねぇ。

う〜ん、と悩んで結局 C でゴリゴリ書くことに着地しました。

一番の問題はチェックサムの計算でした。特に IP 層のチェッ
クサム。一応、0 でも動くはずですが・・・・皆さん真面目で・・・

あとは、なんせゴリゴリ、高速に動くコードを目指して書きま
した。

結果、いまんとこ満足の行く結果が出ています。

いや、ただ単にパケットをブリッジするだけのプログラムです
が・・・
で、たまにパケットを偽装して送り返すだけですが・・・

結局 C で書いたことに若干の敗北感はありますが、背に腹は
変えられない。

皆様のご指導は、忘れません。
ありがとうございました。

Wed, 04 Jul 2018 19:00:51 +0900 に、
もじもじ <mojimoji528 @ yahoo.co.jp> さんは書きました:

> 識者様:
> 
> 色々考えてるんですが、まだ、実際の作業を出来ていないので
> 机上の空論状態です。
> 
> 出来るのか、出来ないのか、いや、プログラム組めばそりゃ出
> 来るんだろうと思っているのですが、考え方としてどうなのか
> 知りたくてご質問です。
> 本当は Linux で iptables を使った方法を考えていたのです
> が、Linux users group って無いんですか?
> 全然ポインタが無くて・・・・
> 
> 門外漢かもしれません。もし、違ったらポインタ教えてくださ
> い。
> 
> で、やりたいことは、パケットの横取りです。
> 
> まず手始めにパケットの閲覧を考えています。
> かの有名な tcpdump です。これは、使えます。
> 
> ただ、今回の条件は NIC をブリッジ接続した状態での tcpdump
> です。
> 古い情報ですが、
> http://uyota.asablo.jp/blog/2009/02/24/4137825
> でブリッジデバイスが作れるようです。
> 
> tap デバイスも同梱して、tap を tcpdump してもよかろーし、
> bridge デバイスを tcpdump してもよかろーと思う。
> きっと ip アドレス付けなくても tcpdump 出来ますよね?
> 
> A-machine(192.168.10.1)----FreeBSD(Bridge)---(192.168.10.2)B-Machine
> 
> この A-B 間のパケットを FreeBSD で見ることが出来ると考え
> ています。
> この時、通したいパケットを ipfw か pf でコントロール出来
> ると考えています。
> 
> その時、あるパケットだけ、折返しとかしたいと考えた時、そ
> れは実現可能なのでしょうか。
> 
> もちろん、折り返したパケットはあたかも相手から返ってきた
> パケットっぽく偽装したいです。
> つまり、
> A --> B
> とパケットを投げた時、条件に適合したら、あたかも
> B --> A
> と投げたように、FreeBSD(Bridge) がパケットを返して、B に
> はパケットを届けたく無いのです。
> 
> 不可能ではないと思っているのですが、どうやったら実現でき
> るのかわからず、悩んでいます。
> 
> 何かヒントでもあれば、よろしくおねがいします。
> 
> # 本当は FreeBSD のところを Linux, ipfw or pf を iptables
> # でやりたいんですけどねぇ。。。。どこに聞けばいいやら・・・ブツブツ
> 
> -- 
> もじもじ <mojimoji528 @ yahoo.co.jp>
> 
> _______________________________________________
> freebsd-users-jp @ freebsd.org mailing list
> https://lists.freebsd.org/mailman/listinfo/freebsd-users-jp
> To unsubscribe, send any mail to "freebsd-users-jp-unsubscribe @ freebsd.org"

-- 
もじもじ <mojimoji528 @ yahoo.co.jp>



freebsd-users-jp メーリングリストの案内