Carpe Diem

備忘録

ネットワーク

macOSでiptablesのように特定の通信をブロックする

概要 iptablesで特定のポートへのパケットをドロップしたい場合は次のようなコマンドを実行します。 $ sudo iptables -A INPUT -p tcp -d 127.0.0.1 --dport 8080 -j DROP しかしmacOSではiptablesは無いためこれができません。 なのでiptablesではなくpfを…

iptablesの仕組みを図解

概要 ネットワーク周りでたまに触るiptablesですが、たまになせいで度々忘れてググり直すことが多いので理解しやすいよう図を作ってみました。 iptablesの仕組みを図解 iptablesの構成図 iptablesは以下のように iptables -> Tables -> Chains -> Rules とい…

Network Namespaceから外部ネットワークへアクセスする

概要 前回の christina04.hatenablog.com の続きで、今回はネットワーク名前空間から外部ネットワークへアクセスできるようにします。 環境 Ubuntu 18.04 以下の状態からスタートします。

Network NamespaceにBridge経由でアクセスする

概要 前回 christina04.hatenablog.com でネットワーク名前空間の機能に触れてみました。 今回はブリッジを挟んでアクセスするネットワーク環境を構築してみます。 環境 Ubuntu 18.04

ip netnsコマンドで学ぶNetwork Namespace

概要 Linuxには名前空間(Namespace)というカーネルの機能が提供されています。 これは1つのプロセスが1つのリソースセットを参照し、別のプロセスが異なるリソースセットを参照するようにカーネルリソースを分割する機能です。 その中の1つであるネット…

pipeエラーのハンドリング

概要 write: broken pipeといったクライアント側の強制的なコネクション切断でのエラーハンドリングをする際の知見まとめ。 環境 golang/go 1.13.3 事前知識 知っておくと良い知識を先に説明します。 そもそもpipeとは pipeはプロセス間通信をするための単方…

Goのnet/httpのkeep-aliveで気をつけること

概要 Idle connectionをプールするkeep-aliveの仕組みですが、Goで適切に使用するためにはいくつか注意があります。 環境 golang/go 1.13.1 TCP Keep-Aliveの挙動をパケットキャプチャで確認する 例えば以下のようにDefaultTransportの一部の設定(①、②)を…

bindアドレスとadvertiseアドレス

概要 ConsulやVaultのクラスタ構成をしていると bind address advertise address という2つのアドレスを設定する必要が出てきます。 この2つをしっかり理解しておかないとクラスタ構成で思わぬ落とし穴にハマったりするので今回はこれを紹介します。 bind…

ネットワークの疎通を確認する方法

概要 インスタンスのヘルスチェックに失敗したり、リクエストが届かなかったりするケースの調査のためにネットワークの疎通を確認する機会は多々あります。 今回はその中でよく使うコマンドをまとめてみました。 環境 Ubutnu 16.04 コマンド ping pingはICMP…

.ioドメインに障害が起きたのでDNSの仕組みを勉強

概要 先日.ioドメインで障害が起きました。.ioのトップレベルDNSサーバがサブドメインの権威サーバ一覧を返さなくなったので名前解決ができなくなったためです。 今回はDNSの流れと確認方法をまとめました。 DNSの流れ www.example.comにアクセスしたい クラ…

Dockerのネットワークを理解するために覚えたことまとめ

概要 Dockerのネットワーク周りを勉強していると、 docker0 仮想ブリッジ VXLAN link機能 など色んな要素が出てくるのですが、ちゃんと理解していないとすぐ忘れるため一度しっかり学んでみました。 今回はその時に疑問に思ったことをまとめてみました。 環…