Skip to content

SOCKS5 / SOCKS5 over TLS

Potatso が対応する SOCKS5 および SOCKS5 over TLS のオプション、リンク、機能。

Updated Markdown で表示

SOCKS5 サーバは、代わりに接続を開き、UDP を中継します。ユーザ名とパスワードの有無は問いません(RFC 1928)。SOCKS5 over TLS は、同じサーバに TLS 経由で接続するもので、サーバまでの接続も暗号化されます。

Potatso は、アクセス先のアドレスではなく、サイト名をサーバに送り、名前の解決はサーバが行います。ほかのアプリでは socks5h やリモート DNS と呼ばれる方式です。

SOCKS5 サーバは、手動、socks5:// リンク、または次のものからの読み込みで追加できます。

  • Clash または Mihomo のサブスクリプション(type: socks5)、
  • Surge の構成(socks5 と socks5-tls)、
  • Xray または V2Ray の構成(socks アウトバウンド。TLS の有無は問いません)。

SOCKS5 over TLS サーバを手動で追加するには、SOCKS5 を選び、TLS をオンにします。

設定

設定 説明
サーバ、ポート サーバのアドレスとポート。IPv6 アドレスも使えます。
認証 なし、またはユーザ名とパスワード。
ユーザ名、パスワード それぞれ最大 255 バイト。
UDP リレー デフォルトはオン。UDP を参照してください。
TLS SOCKS5 over TLS ではオン。
証明書の検証をスキップ SOCKS5 over TLS のみ。あらゆる証明書を受け入れます。テストにのみ使用してください。
証明書のピン SOCKS5 over TLS のみ、任意。サーバの証明書の SHA-256 フィンガープリント(16 進数 64 桁)。ピンを設定すると、Potatso は自己署名証明書を含め、ピンに一致する証明書だけを受け入れます。

サーバがユーザ名とパスワードを要求しているのに、設定していない場合、Potatso は接続しません。Potatso は GSSAPI(Kerberos)認証には対応していません。

username が空の Clash または Mihomo のサーバは、Clash と同様に、認証なしで読み込まれます。

証明書

SOCKS5 over TLS では、TLS ハンドシェイクのサーバ名は常にサーバのアドレスで、サーバの証明書はそれに対して有効でなければなりません。有効でない場合は、証明書のピンを設定するか、証明書の検証をスキップをオンにしてください。別のサーバ名は設定できません。別の名前を持つリンク、Surge のサーバ、Xray のサーバは、Potatso では読み込まれません。Clash と Mihomo には SOCKS5 用のサーバ名がないため、Potatso は、それらと同様に、そこにある sni を無視します。

Potatso は次のものに対応していません。

  • カスタム CA 証明書:代わりにサーバの証明書をピン留めしてください、
  • TLS クライアント証明書(Clash の certificate と private-key)や、証明書の照合に使う別の名前(name-cert-verify):これが必要なサーバは、Potatso は読み込みません、
  • ALPN のリスト:Potatso は、それなしでサーバを読み込みます。

UDP

UDP は、QUIC、音声・ビデオ通話、多くのゲームで使われます。UDP リレーがオンのとき、Potatso は UDP を、IPv4 と IPv6 のアドレスに対して、サーバ経由(UDP ASSOCIATE)で送ります。自分のアドレスを 0.0.0.0 と報告する NAT の内側のサーバでも動作します。Potatso は、設定されたアドレスに UDP を送ります。

サーバが UDP を中継しない場合は、UDP リレーをオフにしてください。その場合は次のようになります。

  • ルールを使う場合、Potatso は UDP をこのサーバに送るルールをスキップし、次に一致するルールが転送先を決めます。ほかのどのルールにも一致しない UDP は、直接送られます。
  • グローバルモードでは、すべての通信がサーバを経由しなければならないため、UDP は動作しません。

UDP について知っておくべきこと:

  • UDP は、サーバの別の UDP ポートで中継されるため、サーバのファイアウォールで UDP を通す必要があります。
  • SOCKS5 over TLS で暗号化されるのは、サーバへの接続だけです。SOCKS5 は UDP をその外側で送るため、UDP 通信は暗号化されずにサーバに届きます。
  • UDP では、Potatso がサイトのアドレスを自分で調べ、そのアドレスをサーバに送ります。
  • Clash、Mihomo、Surge から読み込む場合、サーバが udp: false(Surge では udp-relay=false)を指定していない限り、UDP リレーはオンです。udp がない場合、Clash は UDP をオフのままにするため、サーバが UDP を中継するか確認してください。

機能の対応状況

機能 対応
IPv4、IPv6、ドメインの宛先への CONNECT(RFC 1928) ✅
リモート DNS:サーバによるドメイン名の解決(socks5h) ✅ TCP の場合
認証なし ✅
ユーザ名とパスワード(RFC 1929) ✅
GSSAPI(RFC 1961) ❌
IPv4 と IPv6 の宛先への UDP ASSOCIATE ✅
NAT の内側のサーバでの UDP(0.0.0.0 のリレーアドレス) ✅
UDP のフラグメント化 ❌ フラグメント化されたデータグラムは破棄されます(RFC 1928 で許容されています)
BIND(アクティブモードの FTP などの着信接続) ❌
SOCKS5 over TLS ✅ 証明書のピンと、証明書の検証のスキップに対応
サーバのアドレス以外の TLS サーバ名、ALPN、カスタム CA、クライアント証明書 ❌
TLS で暗号化された UDP ❌ SOCKS5 は UDP を TLS の外側で送ります
IPv6 のサーバアドレス ✅
SOCKS4 と SOCKS4a ❌

対応しているすべての機能は、実際の SOCKS5 サーバ(Xray、sing-box、Mihomo、3proxy、microsocks)に対してテスト済みです。sing-box は、socks インバウンドではなく mixed インバウンドで SOCKS5 over TLS を提供します。

SOCKS5 リンクは、1 行にサーバ全体の情報をまとめたものです。

socks5://user:password@host:port#name
socks5+tls://user:password@host:port?insecure=1#name
部分 説明
スキーム SOCKS5 では socks5://、socks://、socks5h://。SOCKS5 over TLS では socks5+tls:// または socks+tls://。Potatso は常にドメイン名をサーバに送るので、socks5h:// は socks5:// と同じように動作します。
user:password 任意。パスワード内の :、@、その他の特殊文字はパーセントエンコードします。たとえば p:ss は p%3Ass と書きます。ユーザ名に : は使えません。
host サーバのアドレス。IPv6 アドレスは [2001:db8::1] のように角括弧で囲みます。
port サーバのポート。
insecure SOCKS5 over TLS のみ、任意。1 で「証明書の検証をスキップ」がオンになります。Potatso は allowInsecure と skip-cert-verify も読み取ります。
name 任意。Potatso でのサーバ名。

リンクには証明書のピンを含められません。サーバのアドレス以外の sni を持つリンクは読み込まれません。

Potatso は、ほかに次の 2 つの形式も読み込みます。

socks://base64(user:password)@host:port#name
socks5://base64(user:password@host:port)#name

1 つ目は、v2rayN が SOCKS サーバを共有するときの形式です。2 つ目は、:// と # の間のすべてが Base64 でエンコードされた、古い形式です。Potatso がパスワード付きの SOCKS5 サーバを共有するときは、標準のリンクと v2rayN 形式を提供します。

パスワードなしのサーバ:

socks5://proxy.example.com:1080#Open

ユーザ名 alice、パスワード s3cret のサーバ:

socks5://alice:s3cret@proxy.example.com:1080#Auth

パスワード p:ss wörd をパーセントエンコードしたもの:

socks5://alice:p%3Ass%20w%C3%B6rd@proxy.example.com:1080#Encoded

同じサーバを socks5h:// リンクにしたもの:

socks5h://alice:s3cret@proxy.example.com:1080#Remote-DNS

alice:s3cret を Base64 でエンコードした v2rayN 形式:

socks://YWxpY2U6czNjcmV0@proxy.example.com:1080#v2rayN

古い形式:

socks5://YWxpY2U6czNjcmV0QHByb3h5LmV4YW1wbGUuY29tOjEwODA#Legacy

IPv6 アドレスのサーバ:

socks5://[2001:db8::1]:1080#IPv6

SOCKS5 over TLS サーバ:

socks5+tls://alice:s3cret@proxy.example.com:443#TLS

自己署名証明書の SOCKS5 over TLS サーバ:

socks+tls://proxy.example.com:443?insecure=1#Self-signed
ナビゲーション

Type to search…

↑↓ navigate↵ selectEsc close