Network

RustでL2からTCPプロトコルを自作する

マスタリングTCP/IPは何度か読んではいるけれど、レイヤーとかいわれても面白くないし、ネットワークあんまりわかってない気がしていたので、もうちょっと理解するために、L2レイヤであるEthernetからL4のTCPまでをRustでだいたい自作してみた。だいたいとい…

pingのコードを読みたい。

ネットワークの勉強がてらpingのソースコードをみたくなってしらべてみた。 環境はWSL2のUbuntuとする。 まずはpingのパッケージを調べる。 $ which ping /bin/ping $ dpkg --search /bin/ping iputils-ping: /bin/ping iputils-pingだとわかった。 次にapt…

Raspberry PIの設定備忘録 / Raspbian OS

Rasbperry PI 4B / RasbianOSの場合の備忘録。 普通にWebサーバとして使うくらいであれば、RasbpianOSを使っておけばよい。 (と、あとからUbuntuの設定でちょっと苦労してわかった。) サーバとして使うので、X Windowは使わない。 Raspberry Pi Imager (執…

ESP32(M5)でmDNSからIPを取得する

ESP32のライブラリでは、直接、mDNSのURLを指定してもアクセスできない。 ただ、mDNSを利用するためのライブラリは提供されているので、IPを解決してからアクセスすればよい。 例えばraspberry.localのIPを取得したい場合は以下のような感じでできる。 #incl…

M5StickCからサーバにPostでJsonを送り続ける。

M5Stackでもほとんど同じでいける。 とりあえず、センサーの値をサーバに残したい場合とか。 とりあえずとはいえhttpsにはしないとなー。 #include <M5StickCPlus.h> #include <WiFi.h> #include <HTTPClient.h> #include <ArduinoJson.h> const char* ssid = "xxxx"; const char* pass = "xxxx"; const int capaci</arduinojson.h></httpclient.h></wifi.h></m5stickcplus.h>…

WSLに構築したサーバへ外部の端末からアクセスする。

結論からいえば、ホストのWindowsのアドレスとポートへのアクセスをWSLのアドレスとポートを指定して、ポートフォワーディングすればよい。(する必要がある) ここでは、ホストのWindowsのポート3000をWSL上のポート3000にポートフォワーディングするとする…

AWS EC2のAmazon LinuxにSSMでSSH接続する。

SSMを使うと、プライベートネット内のEC2など、通常踏み台サーバが必要なサーバに直接接続できる。 ググればいっぱいでてくるが、自分が実際にやってみた手順を残しておく。 最新のAmazon Linuxを選択してインスタンスを生成する。 生成したインスタンスを以…

1024未満のportでmoshする(ntpの123とか)

moshで使うUDPのportには通常1024以上を使う。 なぜなら、moshのサーバはユーザ権限で動作するので、root権限が必要な1024未満のportは使えないためである。 1024未満のportしか使えないときはどうするかというと、moshの場合は、権限(Capability)を付与する…

Dockerコンテナからlocalhostへのアクセス

WindowsでDockerコンテナからホストのポートにアクセスしたい場合は、localhostではアクセスできない。 WSL1でもWSL2でも変わらないみたい。 以下に置き換えればよい。 host.docker.internal Macでも同じらしい。

NGINXでロードバランサを試す。

docker-composeでnginxでロードバランサを試した。 nginxの後ろに、3台のexpressのサーバに振り分けるようなものを試してみた。 version: '3' services: lb: image: nginx:latest volumes: - ./nginx/nginx.conf:/etc/nginx/nginx.conf ports: - "80:80" dep…

自己署名証明書の作り方とnginxの設定まで。

いわゆるオレオレ証明書の作り方。 最近、ちょっとしたことを確認しようとしても、https化が必須になっている。 パブリックなネットワークだとLet's Encryptを使うべきなんだけど、 Let's Encryptではドメインが必須なので、ドメインが容易できないと使えな…

grpc-webとnginxをhttpsで利用する(構成2)

諸事情により、単一オリジンでgrpcとhttpsのサーバを運用が必要なことがわかった。 grpcのパスはルートでないと動作しなかったので、httpsサーバのパスを/app/にして妥協した。 またnginxのconfを晒す。 ちなみに、nginxからgrpcサーバ(localhost:9090)への…

grpc-webとenvoyをhttpsで利用する。

grpc-webとenvoyの間の通信のhttps化を試した。 grpc-webの公式には、httpでenovyの設定は載っていて、 envoyの公式には、httpsでの接続のための設定は載っているので、 基本的にはそれらを組み合わせるだけでうまくいった。 envoy.ymlを張っておく。 この例…

HTTPとHTTPSを探る

HTTPSを手を動かして確認する。 opensslを使うと簡易にSSL/TLSのクライアントやサーバを立てられるということなので確認してみる。 ちなみに,HTTPを確認する場合はtelnetを使えば良い。 HTTPS クライアントの動作確認 HTTP/1.0 以下のコマンドを打つと,HTT…

WANからLANへのアクセスをフィルダリングするSource NATの設定

先日読んだと書いた書籍で消化不良だったSource NATの設定を確認したので記事にまとめる。 blog.amedama.jp なにが消化不良だったかというと,LAN側からのみWAN(インターネット)へのアクセスを許可するための仕組みとしてSource NATが紹介されているのだが…