「Sing-box」の版間の差分

提供:防弾掲示板wiki
ナビゲーションに移動 検索に移動
三男wiki>一反もめん
(Androidクライアントについて追記しました。)
三男wiki>一反もめん
(sing-boxのバージョンアップに合わせ設定見直し)
12行目: 12行目:


== 導入 ==
== 導入 ==
shadow-tlsサーバーの構築を前提に以下に導入方法を記載する。
shadow-tlsサーバーの構築を前提に以下に導入方法を記載する。 ※sing-box 1.2.7で動作確認済み




54行目: 54行目:
shadow-tlsのサーバー側設定は以下の通り。
shadow-tlsのサーバー側設定は以下の通り。


"server"はファイヤーウォールにTLSハンドシェイクを行わせる証明書のドメイン名。大企業や機関のドメイン名推奨。
"inbounds(shadow-tls側).users.password"はshadow-tls接続用パスワードを示し、値を必ず一意の値に変更する。以下のサンプルでは"abeshinzo"


"password"は接続用パスワードを示し、値を必ず一意の値に変更する。32ビット長のパスワードが必須で、openssl rand -base64 32で生成すると良い。  
"inbounds(shadow-tls側).handshake.server"はファイヤーウォールにTLSハンドシェイクを行わせる証明書のドメイン名。大企業や機関のドメイン名推奨。
 
"inbounds(shadowsocks側).password"は接続用パスワードを示し、値を必ず一意の値に変更する。32ビット長のパスワードが必須で、openssl rand -base64 32で生成すると良い。  
<syntaxhighlight lang="json">
<syntaxhighlight lang="json">
{
{
  "inbounds": [
    "log": {
    {
        "level": "info",
      "type": "shadowtls",
        "timestamp": true
      "listen_port": 443,
    },
      "handshake": {
    "route": {
         "server": "www.bing.com",
         "rules": [
        "server_port": 443  
            {
      },
                "network": "udp",
      "detour": "shadowsocks-in"
                "port": [
                    443
                ],
                "outbound": "block"
            }
        ]
     },
     },
     {
     "inbounds": [
      "type": "shadowsocks",
        {
      "tag": "shadowsocks-in",
            "type": "shadowtls",
      "listen": "127.0.0.1",
            "tag": "shadowtls-in",
      "method": "2022-blake3-aes-256-gcm",
            "listen": "::",
      "password": "Yz/779GBeiBoh+pg/0GbZG7lAfviOVUWGGzQPl/1u/8="
            "listen_port": 443,
     }
            "sniff": false,
  ]
            "sniff_override_destination": false,
            "detour": "shadowsocks-in",
            "version": 3,
            "users": [
                {
                    "password": "abeshinzo"
                }
            ],
            "handshake": {
                "server": "www.bing.com",
                "server_port": 443
            },
            "strict_mode": true
        },
        {
            "type": "shadowsocks",
            "tag": "shadowsocks-in",
            "listen": "127.0.0.1",
            "method": "2022-blake3-aes-256-gcm",
            "password": "Yz/779GBeiBoh+pg/0GbZG7lAfviOVUWGGzQPl/1u/8="
        }
     ],
    "outbounds": [
        {
            "type": "direct",
            "tag": "direct"
        },
        {
            "type": "block",
            "tag": "block"
        }
    ]
}
}
</syntaxhighlight>
</syntaxhighlight>
89行目: 127行目:




shadow-tlsのクライアント側設定は以下の通り。socks/httpプロキシを使用する例を記載する。
shadow-tlsのクライアント側設定は以下の通り。tunを使用する例を記載する。
 
tunではデバイスの全てのトラフィックをsing-boxを通して処理できる。


"outbounds"の"password"にはサーバーサイドで設定したパスワードを入力。
※旧バージョンで記載していたドメイン迂回・広告ブロックルールは確認中


"server"にはVPSインスタンスのIPアドレスを入力。


"server_name"にはサーバーサイドで入力したTLSハンドシェイクを行わせる証明書のドメイン名を入力。
"outbounds(shadowsocks側).password"にはサーバーサイドで設定したパスワードを入力。


"route"は無くても良い。以下の設定では、広告をブロックし、cnドメインのサイトではプロキシを通さない設定(金盾に不審な通信を察知されないため)となっている。
"outbounds(shadow-tls側).server"にはVPSインスタンスのIPアドレスを入力。
 
"outbounds(shadow-tls側).password"にはサーバーサイドで設定したパスワードを入力。
 
"outbounds(shadow-tls側).tls.server_name"にはサーバーサイドで入力したTLSハンドシェイクを行わせる証明書のドメイン名を入力。


<syntaxhighlight lang="json">
<syntaxhighlight lang="json">
{
{
  "dns": {
    "rules": [],
    "servers": [
      {
        "address": "tls://1.1.1.1",
        "tag": "dns-remote",
        "detour": "ss",
        "strategy": "ipv4_only"
      }
    ]
  },
   "inbounds": [
   "inbounds": [
     {
     {
       "type": "mixed",
       "type": "tun",
       "listen_port": 1080,
       "interface_name": "ipv4-tun",
       "sniff": true,
      "inet4_address": "172.19.0.1/28",
       "set_system_proxy": true
      "mtu": 1500,
      "stack": "gvisor",
      "endpoint_independent_nat": true,
      "auto_route": true,
       "strict_route": true,
       "sniff": true
     }
     }
   ],
   ],
112行目: 171行目:
     {
     {
       "type": "shadowsocks",
       "type": "shadowsocks",
      "tag": "ss",
       "method": "2022-blake3-aes-256-gcm",
       "method": "2022-blake3-aes-256-gcm",
       "password": "Yz/779GBeiBoh+pg/0GbZG7lAfviOVUWGGzQPl/1u/8=",
       "password": "Yz/779GBeiBoh+pg/0GbZG7lAfviOVUWGGzQPl/1u/8=",
       "detour": "shadowtls-out",
       "detour": "shadowtls-out",
       "multiplex": {
       "udp_over_tcp": {
         "enabled": true,
         "enabled": true,
         "max_connections": 4,
         "version": 2
        "min_streams": 4
       }
       }
     },
     },
126行目: 185行目:
       "server": "インスタンスのIPアドレス",
       "server": "インスタンスのIPアドレス",
       "server_port": 443,
       "server_port": 443,
      "version": 3,
      "password": "abeshinzo",
       "tls": {
       "tls": {
         "enabled": true,
         "enabled": true,
         "server_name": "www.bing.com"
         "server_name": "www.bing.com",
        "utls": {
          "enabled": true,
          "fingerprint": "chrome"
        }
       }
       }
     },
     },
     {
     {
      "type": "direct",
       "tag": "dns-out",
       "tag": "direct"
       "type": "dns"
    },
    {
       "type": "block",
      "tag": "block"
     }
     }
   ],
   ],
   "route": {
   "route": {
    "auto_detect_interface": true,
    "final": "ss",
     "rules": [
     "rules": [
       {
       {
         "geosite": "category-ads-all",
         "protocol": "dns",
         "outbound": "block"
         "outbound": "dns-out"
      },
      {
        "geosite": "cn",
        "geoip": "cn",
        "outbound": "direct"
       }
       }
     ]
     ]
   }
   }
}
}  
</syntaxhighlight>
</syntaxhighlight>


160行目: 218行目:


=== Linux ===
=== Linux ===
※Ubuntu 18.04 LTSで接続確認済み
※Ubuntu 18.04 LTS、sing-box 1.2.7で接続確認済み


・GDebiでインストール
・GDebiでインストール


・クライアント用のconfig.jsonをユーザーディレクトリに配置
・クライアント用のconfig.jsonをユーザーディレクトリに配置
・ブラウザのプロキシ設定でsocks5(host:127.0.0.1, port:1080)を使用するよう設定


・接続
・接続
173行目: 229行目:
=== Android ===
=== Android ===
==== NekoBox For Android ====
==== NekoBox For Android ====
 2023年3月にリリースされたオープンソースのAndroid用マルチプロキシクライアント。shadow-tlsをサポートしている。日本語対応。
 2023年3月にリリースされたオープンソースのAndroid用マルチプロキシクライアント。shadow-tlsをサポートしている。一部日本語対応。


 GitHubからapkファイルをダウンロードする事で無料で利用できる。PlayStore版はダウンロードが有料で開発者への寄付を意味する。
 GitHubからapkファイルをダウンロードする事で無料で利用できる。PlayStore版はダウンロードが有料で開発者への寄付を意味する。
 クライアントサイドのconfig.jsonをアプリ側でインポートすると、AndroidのVPNとして使用できる。
 (右上部アイコンの右から二番目をタップ→Import from file)
※Android12、NekoBox 1.1.1で動作確認済み





2023年5月28日 (日) 17:05時点における版

 sing-boxはプロキシ各プロトコルの統合プラットフォームである。

概要

 2022年10月に中国北京市で開催された中国共産党第二十次全国代表大会に合わせ、GFW(以下、「金盾」と言う)がアップグレードされ情報統制が強化された。今まで金盾回避に使われてきた、V2RayやXrayでサポートしているVMESSや、TLSを使ったDPI回避プロトコル(Trojan、VLESS+XTLS等)を使用した中国国外のプロキシサーバーに繋がらなくなり、海外ソースの情報を得るのはより困難な状況に置かれることとなった。

 上記の事態を回避するため、2022年8月より、githubにアップロードされたDPI回避プロトコルのshadow-tlsが有力視された。このプロトコルは、他人の信頼できる証明書 (一部の大企業や機関のドメイン名など) を使用する。ファイアウォールは選択した証明書との実際のTLSハンドシェイクの確認を行うため、パケットが偽装されファイヤーウォール回避が可能となっている。

 sing-boxは上記shadow-tlsを含むプロキシの統合プラットフォームであり、Xray等のようにconfig.jsonに通信ルールを記載すればそれらが容易に導入が可能な検閲回避ツールである。

 現在の日本においては必要が無いツールであるが備えあれば憂いなし。こういう情報が遮断されてからでは遅いのであります。

導入

shadow-tlsサーバーの構築を前提に以下に導入方法を記載する。 ※sing-box 1.2.7で動作確認済み


必要なものは以下の2つ。


・VPSインスタンス ※512 MB RAM、1 vCPU、Ubuntu 20.04 LTSで動作確認済み

・静的IP


インスタンスの443ポートを開放しておく。


以下の作業はスーパーユーザーで行う。


sing-boxにはGo言語の1.18.5以降バージョンが必要なのでインストールを行う。


Go言語をリポジトリに追加しインストール。

add-apt-repository ppa:longsleep/golang-backports
apt update
apt install golang


sing-boxをインストール。

git clone https://github.com/SagerNet/sing-box
cd sing-box
./release/local/install.sh


sing-boxのサーバー側設定ファイルを編集。

vi /usr/local/etc/sing-box/config.json


shadow-tlsのサーバー側設定は以下の通り。

"inbounds(shadow-tls側).users.password"はshadow-tls接続用パスワードを示し、値を必ず一意の値に変更する。以下のサンプルでは"abeshinzo"

"inbounds(shadow-tls側).handshake.server"はファイヤーウォールにTLSハンドシェイクを行わせる証明書のドメイン名。大企業や機関のドメイン名推奨。

"inbounds(shadowsocks側).password"は接続用パスワードを示し、値を必ず一意の値に変更する。32ビット長のパスワードが必須で、openssl rand -base64 32で生成すると良い。

{
    "log": {
        "level": "info",
        "timestamp": true
    },
    "route": {
        "rules": [
            {
                "network": "udp",
                "port": [
                    443
                ],
                "outbound": "block"
            }
        ]
    },
    "inbounds": [
        {
            "type": "shadowtls",
            "tag": "shadowtls-in",
            "listen": "::",
            "listen_port": 443,
            "sniff": false,
            "sniff_override_destination": false,
            "detour": "shadowsocks-in",
            "version": 3,
            "users": [
                {
                    "password": "abeshinzo"
                }
            ],
            "handshake": {
                "server": "www.bing.com",
                "server_port": 443
            },
            "strict_mode": true
        },
        {
            "type": "shadowsocks",
            "tag": "shadowsocks-in",
            "listen": "127.0.0.1",
            "method": "2022-blake3-aes-256-gcm",
            "password": "Yz/779GBeiBoh+pg/0GbZG7lAfviOVUWGGzQPl/1u/8="
        }
    ],
    "outbounds": [
        {
            "type": "direct",
            "tag": "direct"
        },
        {
            "type": "block",
            "tag": "block"
        }
    ]
}


sing-boxを再起動。

systemctl restart sing-box

クライアント設定

各OS共通

クライアントサイドのconfig.jsonを作成する。


shadow-tlsのクライアント側設定は以下の通り。tunを使用する例を記載する。

tunではデバイスの全てのトラフィックをsing-boxを通して処理できる。

※旧バージョンで記載していたドメイン迂回・広告ブロックルールは確認中


"outbounds(shadowsocks側).password"にはサーバーサイドで設定したパスワードを入力。

"outbounds(shadow-tls側).server"にはVPSインスタンスのIPアドレスを入力。

"outbounds(shadow-tls側).password"にはサーバーサイドで設定したパスワードを入力。

"outbounds(shadow-tls側).tls.server_name"にはサーバーサイドで入力したTLSハンドシェイクを行わせる証明書のドメイン名を入力。

{
  "dns": {
    "rules": [],
    "servers": [
      {
        "address": "tls://1.1.1.1",
        "tag": "dns-remote",
        "detour": "ss",
        "strategy": "ipv4_only"
      }
    ]
  },
  "inbounds": [
    {
      "type": "tun",
      "interface_name": "ipv4-tun",
      "inet4_address": "172.19.0.1/28",
      "mtu": 1500,
      "stack": "gvisor",
      "endpoint_independent_nat": true,
      "auto_route": true,
      "strict_route": true,
      "sniff": true
    }
  ],
  "outbounds": [
    {
      "type": "shadowsocks",
      "tag": "ss",
      "method": "2022-blake3-aes-256-gcm",
      "password": "Yz/779GBeiBoh+pg/0GbZG7lAfviOVUWGGzQPl/1u/8=",
      "detour": "shadowtls-out",
      "udp_over_tcp": {
        "enabled": true,
        "version": 2
      }
    },
    {
      "type": "shadowtls",
      "tag": "shadowtls-out",
      "server": "インスタンスのIPアドレス",
      "server_port": 443,
      "version": 3,
      "password": "abeshinzo",
      "tls": {
        "enabled": true,
        "server_name": "www.bing.com",
        "utls": {
          "enabled": true,
          "fingerprint": "chrome"
        }
      }
    },
    {
      "tag": "dns-out",
      "type": "dns"
    }
  ],
  "route": {
    "auto_detect_interface": true,
    "final": "ss",
    "rules": [
      {
        "protocol": "dns",
        "outbound": "dns-out"
      }
    ]
  }
}


 sing-boxのgithubにて自分の環境に合ったパッケージを入手。

Linux

※Ubuntu 18.04 LTS、sing-box 1.2.7で接続確認済み

・GDebiでインストール

・クライアント用のconfig.jsonをユーザーディレクトリに配置

・接続

sing-box run -c config.json

Android

NekoBox For Android

 2023年3月にリリースされたオープンソースのAndroid用マルチプロキシクライアント。shadow-tlsをサポートしている。一部日本語対応。

 GitHubからapkファイルをダウンロードする事で無料で利用できる。PlayStore版はダウンロードが有料で開発者への寄付を意味する。

 クライアントサイドのconfig.jsonをアプリ側でインポートすると、AndroidのVPNとして使用できる。

 (右上部アイコンの右から二番目をタップ→Import from file)


※Android12、NekoBox 1.1.1で動作確認済み


 PlayStore https://play.google.com/store/apps/details?id=moe.nb4a

 GitHub https://github.com/MatsuriDayo/NekoBoxForAndroid


参考

sing-box 网络代理平台的“瑞士军刀”,搭建shadowtls节点. 不良林. (2022年9月24日)2022年10月29日閲覧。