2021-01-01から1年間の記事一覧
TimeTreeはAPIの利用にOAuthかパーソナルアクセストークンの利用が可能となっているが、今回はOAuthをRailsから利用する形で確かめてみたので、手順をメモしておく。 こんな感じで、Railsアプリ上のリンクを踏むと、TimeTreeのOAuth認証に飛び、ログインする…
OSのコマンドかなにかであってもよさそうだが。。 gist.github.com
そんなオプションは無さそうだったので、無理くりライブラリに手を入れるとすると、以下らへんでレスポンスしているようだったので、★部分あたりに sleep を挟めば一応意図どおりにはふるまってくれる。 ensure if req.request_line if req.keep_alive? && r…
OSでセカンダリIPアドレスを処理できるようにしないと処理はできないが、パケット自体はインスタンスまで届くようだ。 パケットキャプチャでPing確認したらパケットは届いてた。(返信はしなかった) 参考 aws.amazon.com
表記のとおりだが、意外な結果だった。 別サブネットでVPC外宛のルートをルートテーブルで特定ホストに向ける構成(FWみたいな)はよく見かけるが、例えばVPCのCIDR内の別のIPアドレス向けの通信でMACアドレスだけ正しくして特定ホストに届くのか、というと…
物理ネットワークでは当然のことだが、VPCで送信元先チェックを無効にしていればワンチャン届いたりするのか?と思ったが、やはり届かなかった。 検証方法としては↓のソースで宛先MACアドレスをわざと誤ったものに編集して送信し、受けて側で tcpdump してパ…
github.com AF_PACKET / SOCK_RAWの場合、 Ethernetヘッダから指定する プロトコル部は一応 Socket::ETH_P_IP を指定したけど、多分なんでもいいっぽい。(イーサヘッダから自分で指定するのでどちらにしても自分で指定することになるからかな)
RAWソケットのプログラミングをしていた時に表記の仕様に気がついた。 チェックサムのフィールドをとりあえず適当に埋めていたらVPC内(同一サブネット)の宛先ホストに届かなかった。 どうやらVPC内でドロップしているもよう。
www.amazon.co.jp jpn.nec.com 上記の組み合わせをWindows 10で使う場合、以下のドライバのインストールが必要だった。 synapse.kyoto
github.com を使いたいのだが、手元の環境がARMで、Native Extensionで普通に公開されているのがx86_Linux用だった。↓ rb_tuntap | RubyGems.org | your community gem host Native Extension はプラットフォーム別に公開されるようで、x86_Mac用のは別の人…
メモ サーバ Raspberry Pi 実IP: 192.168.150.92 クライアント WSL 実IP: 192.168.201.105 サーバ手順 $ sudo apt-get install iodine $ sudo iodined -f 192.168.1.100/24 example.com Enter password: Opened dns0 Setting IP of dns0 to 192.168.1.100 Se…
第4章のメモ。 第4章はクラス間のメッセージに焦点を当てた設計方法。とてもおもしろく、勉強になったのだが、サンプルコードがほしいところだった。読みながら図4-5 ~ 4-7 をコードにおこしてみたのだが、こんなイメージかしら? # 図 4-5 class Trip @bycy…
コードはここ。 drivers/net/tap.c drivers/net/tun.c 詳細はこれから。 TUNには net_device_ops とかネットワークドライバっぽいリソースが見えるけどTAPにはそれらが見当たらない。 cdev_init とかキャラクタデバイスドライバっぽい?
Raspberry Pi 4の有線LANのインターフェースのドライバに一行加えてパケットを送信するためにログ出力するように改造してみたメモ。 NICはどうやら Broadcom 2711 というSoCに付いているもの?のようで参考リンクに記載がある。 手順 一行追加 以下に一行追…
www.raspberrypi.org 結局のところ、上記公式ドキュメントを見るのが一番正確なわけだけど、何も考えずにコピペするための手順メモ。 ラズパイのモデル $ cat /proc/device-tree/model Raspberry Pi 4 Model B Rev 1.2 手順 git clone --depth=1 https://git…
kure.hatenablog.jp 記事の深堀り。 bizboard.nikkeibp.co.jp が、仮想ネットワークドライバの簡単なサンプルプログラムとVPNの仕組みの解説が書かれており、参考になりそうだった。が、記事のサンプルプログラムはカーネル 2.6 向けのもののようで、今普通…
VPN(トンネル)技術のポイントにTUN/TAPデバイスというのがあるということで、少し触ってみた。イマイチ良くはわかっていない。 TUN # TUN デバイス作成 % sudo ip tuntap add dev kure_tun mode tun % ip link show 9: kure_tun: <POINTOPOINT,MULTICAST,NOARP> mtu 1500 qdisc noop sta</pointopoint,multicast,noarp>…
/proc/net/route を見ると Flags というカラムがある。 % cat /proc/net/route Iface Destination Gateway Flags RefCnt Use Metric Mask MTU Window IRTT eth0 00000000 01001FAC 0003 0 0 0 00000000 0 0 0 eth1 00000000 01001FAC 0003 0 0 10001 0000000…
> pp "\x08\x30".b "\b0" => "\b0" レシーバの方は \x で指定する場合、16進数で指定するので、以下ASCIIコード表の「16進数」が「ASCII」に変換される www.k-cube.co.jp
github.com require 'packetfu' arp_pkt = PacketFu::ARPPacket.new arp_pkt.eth_daddr = "ff:ff:ff:ff:ff:ff" arp_pkt.arp_daddr_mac = "00:00:00:00:00:00" arp_pkt.arp_daddr_ip = "x.x.x.x" arp_pkt.to_w("eth0")
pack("n") で、ネットワークバイトオーダー(ビッグエンディアン)のunsigned short (16bit 符号なし整数)に変換できる。 ビッグエンディアンなので、バイトの上位から並べていく。 例えば、 0xAABBCCDD だったら、0xDDが低い(1桁目側)側なので逆から、AA, B…
Rubyのブロック構文とyieldの使い方 | UX MILK https://uxmilk.jp/24119
2FF とかを 767 に変換する。 16進数は文字列リテラルで表現されているものとする。 普通に "2FF" とかだったら hex したらいいけど、 irb(main):089:0> "0x2FF".hex => 767 一文字ずつの16進数がまとまった文字列の場合を想定する。 例えば2FF だったら "\x…
テーマ 依存関係の少ない(疎結合な、変更に強い)コードを書く クラスは自身よりも変更の可能性の低いクラスのみ依存するべき 抑えておきたいこと 具象クラスは、抽象クラスよりも変わる可能性が高い . この概念については、「依存オブジェクトの注入」で一…
前提 構成は以下のイメージ ホストで80番ポートで受ける、DockerのNginxは80番ポートで受ける、後ろに80番ポートで流す docker はインストール済であること、後ろのサーバは動いていること Amazon Linux2 Linux ip-172-31-4-104.ap-northeast-1.compute.inte…
irb(main):001:0> 1.to_s(2) => "1" irb(main):002:0> 1 << 8 => 256 irb(main):004:0> 256.to_s(2) => "100000000"
> 80.to_s(2) => "1010000" > 80[0, 4] => 0 > 80[4, 4] => 5 参考 プロと読み解くRuby 2.7 NEWS - クックパッド開発者ブログ https://techlife.cookpad.com/entry/2019/12/25/121834
irb(main):027:0> str = "0123456789" => "0123456789" irb(main):028:0> str.slice(0, 5) => "01234" irb(main):029:0> str.slice(5, 5) => "56789"
文字列→数値 基本形 > "10".to_i => 10 整数とみなせない文字があればそこまでを変換対象とします。変換対象が空文字列であれば 0 を返します。 > "a".to_i => 0 基数の指定が可能(レシーバの文字列を基数の数値と解釈して返却する) > "10".to_i(2) => 2 >…
コマンド自体は極めてオーソドックス。 ip link show で表示される番号が該当してるっぽい。 % ip link show 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 </loopback,up,lower_up>…