memo.log

技術情報の雑なメモ

2021-01-01から1年間の記事一覧

RailsでTimeTreeにOAuthする最低限の手順メモ

TimeTreeはAPIの利用にOAuthかパーソナルアクセストークンの利用が可能となっているが、今回はOAuthをRailsから利用する形で確かめてみたので、手順をメモしておく。 こんな感じで、Railsアプリ上のリンクを踏むと、TimeTreeのOAuth認証に飛び、ログインする…

【Ruby】ルーティングテーブル `ip route` を確認してネクストホップのアドレスを確認するスクリプト

OSのコマンドかなにかであってもよさそうだが。。 gist.github.com

Webrick でレスポンスでわざとWait(遅延)を入れる

そんなオプションは無さそうだったので、無理くりライブラリに手を入れるとすると、以下らへんでレスポンスしているようだったので、★部分あたりに sleep を挟めば一応意図どおりにはふるまってくれる。 ensure if req.request_line if req.keep_alive? && r…

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

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

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

表記のとおりだが、意外な結果だった。 別サブネットでVPC外宛のルートをルートテーブルで特定ホストに向ける構成(FWみたいな)はよく見かけるが、例えばVPCのCIDR内の別のIPアドレス向けの通信でMACアドレスだけ正しくして特定ホストに届くのか、というと…

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

物理ネットワークでは当然のことだが、VPCで送信元先チェックを無効にしていればワンチャン届いたりするのか?と思ったが、やはり届かなかった。 検証方法としては↓のソースで宛先MACアドレスをわざと誤ったものに編集して送信し、受けて側で tcpdump してパ…

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

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

Amazon 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用のは別の人…

IP over DNS を実現する iodine を試してみたメモ

メモ サーバ 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章はクラス間のメッセージに焦点を当てた設計方法。とてもおもしろく、勉強になったのだが、サンプルコードがほしいところだった。読みながら図4-5 ~ 4-7 をコードにおこしてみたのだが、こんなイメージかしら? # 図 4-5 class Trip @bycy…

TUN/TAPについて調べるメモ

コードはここ。 drivers/net/tap.c drivers/net/tun.c 詳細はこれから。 TUNには net_device_ops とかネットワークドライバっぽいリソースが見えるけどTAPにはそれらが見当たらない。 cdev_init とかキャラクタデバイスドライバっぽい?

Raspberry Pi 4でネットワークドライバにデバッグ用の一行だけ追加するメモ

Raspberry Pi 4の有線LANのインターフェースのドライバに一行加えてパケットを送信するためにログ出力するように改造してみたメモ。 NICはどうやら Broadcom 2711 というSoCに付いているもの?のようで参考リンクに記載がある。 手順 一行追加 以下に一行追…

Raspberry Pi 4 のカーネルビルドの最低限の手順メモ

www.raspberrypi.org 結局のところ、上記公式ドキュメントを見るのが一番正確なわけだけど、何も考えずにコピペするための手順メモ。 ラズパイのモデル $ cat /proc/device-tree/model Raspberry Pi 4 Model B Rev 1.2 手順 git clone --depth=1 https://git…

日経Linux 2009/09号「仮想ネットワーク・ドライバとVPN」のメモ

kure.hatenablog.jp 記事の深堀り。 bizboard.nikkeibp.co.jp が、仮想ネットワークドライバの簡単なサンプルプログラムとVPNの仕組みの解説が書かれており、参考になりそうだった。が、記事のサンプルプログラムはカーネル 2.6 向けのもののようで、今普通…

コマンドで TUN/TAP デバイスを試すメモ

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>…

ip route や /proc/net/route のFlagsについて

/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…

【Ruby】String#bのメモ

> pp "\x08\x30".b "\b0" => "\b0" レシーバの方は \x で指定する場合、16進数で指定するので、以下ASCIIコード表の「16進数」が「ASCII」に変換される www.k-cube.co.jp

PacketFuでARPリクエストを送信するサンプルメモ

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")

【Ruby】ビッグエンディアン・ネットワークバイトオーダー、サンプルメモ

pack("n") で、ネットワークバイトオーダー(ビッグエンディアン)のunsigned short (16bit 符号なし整数)に変換できる。 ビッグエンディアンなので、バイトの上位から並べていく。 例えば、 0xAABBCCDD だったら、0xDDが低い(1桁目側)側なので逆から、AA, B…

【Ruby】ブロックを引数に取るメソッドを作る参考リンク

Rubyのブロック構文とyieldの使い方 | UX MILK https://uxmilk.jp/24119

【Ruby】複数桁の16進数を10進数に変換する

2FF とかを 767 に変換する。 16進数は文字列リテラルで表現されているものとする。 普通に "2FF" とかだったら hex したらいいけど、 irb(main):089:0> "0x2FF".hex => 767 一文字ずつの16進数がまとまった文字列の場合を想定する。 例えば2FF だったら "\x…

『オブジェクト指向設計実践ガイド』3章メモ

テーマ 依存関係の少ない(疎結合な、変更に強い)コードを書く クラスは自身よりも変更の可能性の低いクラスのみ依存するべき 抑えておきたいこと 具象クラスは、抽象クラスよりも変わる可能性が高い . この概念については、「依存オブジェクトの注入」で一…

Docker と Nginx でリバースプロキシを構成する最低限のメモ

前提 構成は以下のイメージ ホストで80番ポートで受ける、DockerのNginxは80番ポートで受ける、後ろに80番ポートで流す docker はインストール済であること、後ろのサーバは動いていること Amazon Linux2 Linux ip-172-31-4-104.ap-northeast-1.compute.inte…

【Ruby】シフト演算メモ

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"

【Ruby】1文字(1Byte)の4bit分の数値を取得する

> 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

【Ruby】文字列の範囲指定メモ

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"

【Ruby】数値と文字列の変換メモ

文字列→数値 基本形 > "10".to_i => 10 整数とみなせない文字があればそこまでを変換対象とします。変換対象が空文字列であれば 0 を返します。 > "a".to_i => 0 基数の指定が可能(レシーバの文字列を基数の数値と解釈して返却する) > "10".to_i(2) => 2 >…

【Linux】ネットワークインターフェースの番号(インデックス)を確認するコマンド

コマンド自体は極めてオーソドックス。 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>…