コンテンツにスキップ

Blog

SOCKSプロトコルを完全に理解する(SOCKS 5編)

以前の記事では、SOCKS 4について紹介しました。SOCKS 4は、TCP接続を代理転送するためのシンプルなプロトコルですが、現代的な用途で見るといくつかの制約があります。代表的なのは、次の2点です。

  • 宛先をIPv4アドレスで指定する必要があり、ドメイン名をそのまま扱えない
  • 認証やUDP転送を標準機能として持たない

この不足を補うために登場したのが、SOCKS 4aとSOCKS 5です。

SOCKS 4aは、SOCKS 4の設計をほぼ維持したまま、サーバー側の名前解決を可能にした拡張です。一方のSOCKS 5は、認証方式のネゴシエーション、IPv6、ドメイン名指定、UDP転送などを含む、より汎用的な設計になっています。

この記事では、まずSOCKS 4aが何を解決したのかを確認し、そのうえでSOCKS 5のTCP転送とUDP転送の仕組みを、パケットの中身を追いながら整理します。

SOCKSプロトコルを完全に理解する(SOCKS 4編)

SOCKSプロトコルは、ややニッチな存在です。HTTP/HTTPSプロキシに似ていますが、HTTP/HTTPSに限らず、TCP/UDP全般を中継できる点が特徴です。

しかし、ネットワークエンジニアであっても、「SOCKSはどのような仕組みで動くのか」「SOCKS 4 / SOCKS 4a / SOCKS 5にはどのような違いがあるのか」まで理解している人は、意外と多くありません。

本記事では、まずSOCKS 4に焦点を当てます。他のバージョンとの違い、通信フロー、パケット構造、制限事項を整理し、プロトコルレベルでSOCKS 4を理解することを目指します。

sing-boxを使用した通信中継:サーバー編

sing-box は、複数のプロキシプロトコルやルーティング設定をひとつの設定ファイルで扱える汎用プロキシプラットフォームです。この記事ではサーバー側の構成に焦点を当て、sing-box の基本的な考え方、インストール方法、最小構成の設定を紹介します。

Linux + KVM で仮想化ホストを構築してみた(bridge / cloud-init編)

KVM/libvirt の基本的な仮想化ホストを構築した後、Kubernetes ノードとして利用するための仮想マシン環境を整備します。本記事では、Debian のネットワーク管理を ifupdown から systemd-networkd に移行し、Linux ブリッジによる VM ネットワークを構成します。さらに cloud-init とクラウドイメージを利用して、仮想マシンを高速にデプロイする方法を紹介します。

SMCを使用したベアメタルからAlibaba Cloudへの移行

Alibaba Cloud の Server Migration Center(SMC)を使うと、オンプレミスやベアメタルサーバーをクラウドへ効率よく移行できます。本記事では、AlmaLinux と PostgreSQL を動かすサーバーを例に、SMC クライアントの導入手順、移行ジョブの実行方法、移行後の整合性確認までを実際の検証ベースで解説します。

Bucket Keyを使ってKMSコスト削減に貢献する仕組み

Amazon S3 の SSE-KMS 暗号化では、S3 Bucket Key を有効にすることで AWS KMS の API 呼び出し回数を削減できます。本記事では、Bucket Key と Data Key の違いを解説し、実際の検証を通して S3 Bucket Key がどの程度 KMS リクエストを削減できるのかを確認します。

2024年に終了したAWSサービスと代替策

AWS は毎年多くの新サービスをリリースする一方で、利用が減少したサービスを整理し EOL(サービス終了)とすることもあります。本記事では、2024 年に終了した、または終了が発表された主な AWS サービス(OpsWorks、CodeCommit、Cloud9 など)と、その代替サービスをまとめました。

Cisco ASA 5506-XをFTDからASA OSに変更してみた

Cisco ASA 5500-X シリーズでは FTD(FirePOWER Threat Defense)と ASA OS の 2 種類の OS を利用できますが、VPN 用途では ASA OS を使いたいケースもあります。本記事では、FTD から ASA OS へ切り替える手順を解説します。rommon でのストレージ初期化、TFTP ブート、ASA イメージのインストール、ライセンス設定までを紹介します。