コンテンツにスキップ

2026

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 とクラウドイメージを利用して、仮想マシンを高速にデプロイする方法を紹介します。