memo.log

技術情報の雑なメモ

EC2インスタンスにセカンダリIPv4アドレスを付与しただけでパケットは届く

OSでセカンダリIPアドレスを処理できるようにしないと処理はできないが、パケット自体はインスタンスまで届くようだ。 パケットキャプチャでPing確認したらパケットは届いてた。(返信はしなかった)

参考

aws.amazon.com

【Amazon VPC】あるホスト宛のパケットがIPアドレスが誤っていてもMACアドレスが合っていて送信元先チェックが無効なら届く(同サブネットのアドレスでもOK)

表記のとおりだが、意外な結果だった。 別サブネットでVPC外宛のルートをルートテーブルで特定ホストに向ける構成(FWみたいな)はよく見かけるが、例えばVPCのCIDR内の別のIPアドレス向けの通信でMACアドレスだけ正しくして特定ホストに届くのか、というと微妙だが届いた。ルートテーブルにくわれるか、VPCの制限的にドロップされるかと思いきや、ENIが持っていないIPアドレスでも届くようだ。

【Amazon VPC】あるホスト(IPアドレス)宛のパケットの宛先MACアドレスの値が誤っているとパケットは届かない。

物理ネットワークでは当然のことだが、VPCで送信元先チェックを無効にしていればワンチャン届いたりするのか?と思ったが、やはり届かなかった。

検証方法としては↓のソースで宛先MACアドレスをわざと誤ったものに編集して送信し、受けて側で tcpdump してパケットが届くか確かめた。 github.com

多分VPCのMapping Serviceで行き先不明のパケットとしてドロップされているのかな。

【Ruby】AF_PACKET / SOCK_RAWでPingを実装してみた

github.com

  • AF_PACKET / SOCK_RAWの場合、 Ethernetヘッダから指定する
  • プロトコル部は一応 Socket::ETH_P_IP を指定したけど、多分なんでもいいっぽい。(イーサヘッダから自分で指定するのでどちらにしても自分で指定することになるからかな)

AWS VPCでパケットのヘッダ内のチェックサム値が誤っていると宛先ホストに届く前にドロップされる

RAWソケットのプログラミングをしていた時に表記の仕様に気がついた。 チェックサムのフィールドをとりあえず適当に埋めていたらVPC内(同一サブネット)の宛先ホストに届かなかった。 どうやらVPC内でドロップしているもよう。

【Windows10】USB TypeC/コンソールケーブルを使うメモ

www.amazon.co.jp

jpn.nec.com

上記の組み合わせをWindows 10で使う場合、以下のドライバのインストールが必要だった。

synapse.kyoto

rb_tuntap(x86用Native Extensionのgem)をARM版にして手元でインストールする

github.com

を使いたいのだが、手元の環境がARMで、Native Extensionで普通に公開されているのがx86_Linux用だった。↓

rb_tuntap | RubyGems.org | your community gem host

Native Extension はプラットフォーム別に公開されるようで、x86_Mac用のは別の人がアップしてくれていた。

search | RubyGems.org | your community gem host

そこでARM用のをコンパイルして使うまでのメモ。 作者がよければ公開してもいいのだけど、とりあえずローカルインストールすることにする。

手順メモ

リポジトリのソースをDLして、Rakefileのあるディレクトリで、

% gem install rake-compiler # なければ。
% rake build
% gem install pkg/rb_tuntap-0.2.0-aarch64-linux.gem # バージョンが違ったら適宜読み替えること

あとは普通に require できる。

 % irb                                                                              (git)-[master] 
irb(main):001:0> require "rb_tuntap"
=> true
irb(main):002:0> tun = RbTunTap::TunDevice.new("tun0")
=> #<RbTunTap::TunDevice:0x0000000030f1a128 @name="tun0", @type=1, @dev="/dev/net/tun", @fd=-1>

※ sudo で実行するときは sudo gem install する必要がある

参考

qiita.com

qiita.com