web-dev-qa-db-ja.com

ブラウザは問題ありませんが、shadowsocksサーバーを介してインターネットに接続することはできません

簡単そうに見えますが、何度も検索してもうまくいきませんでした。私はUbuntu14.04を持っています。

これは、shadowsocksを実行している友人のサーバーの構成を含むconfig.jsonファイルです。

{
    "server":"ip address",
    "server_port":23,
    "local_port":1234,
    "password":"password",
    "timeout":600,
    "method":"aes-256-cfb"
}

sslocal -c config.jsonを実行し、サーバーに正常に接続します。

たとえば、次のコマンドを使用して、google-chromeで動作させることができます。google-chrome --proxy-server="socks5://127.0.0.1:1234" --Host-resolver-rules="MAP * 0.0.0.0 , EXCLUDE localhost"

問題は、インターネット接続全体を最初にそのサーバーを経由させるにはどうすればよいかということです。すべてのアプリケーションがデフォルトでそれを使用できるようにします。簡単にアクティブ化および非アクティブ化できるもの。

私が試したものと失敗したもの:

tsocks-> https://askubuntu.com/questions/532375/launch-program-through-shadowsocks を使用する

iptablesSudo iptables -t nat -A OUTPUT -p tcp --dport 80 -j DNAT --to-destination 127.0.0.1:1234-> http://adminsgoodies.com/configuring-ubuntu-for-global-socks5-proxy/ として使用

[システム設定]-> [ネットワーク]-> [ネットワークプロキシ]とdconf-toolsを使用して、ホストを除外します-> https://askubuntu.com/questions/70245/how-do-i-make-the-system- wide-proxy-settings-bypass-the-proxy-for-local-addresse

4
sinaza

SOCKSプロキシを介してすべてのインターネットトラフィックをトンネリングする一般的な方法はありません。ただし、かなりの数のプロトコルには特定の方法がありますが、すべてではありません。 SOCKS5はTCPおよびUDPトラフィックをサポートしますが、私が知る限りICMPはサポートしません。したがって、たとえば、このようなプロキシを介して従来のpingを使用することはできません。

プロキシクライアントのリストは次のとおりです(それらのほとんどはSOCKS5をサポートしています): リンク

私はLinuxでDanteのクライアント部分とプロキシチェーン(-ngの後継ではなくオリジナル)を個人的に試しましたが、どちらも私のために機能しました(プロキシチェーンはもう少し安定していることがわかりました)。どちらも、アプリケーションからのソケットAPIリクエストをリダイレクトすることで機能します(したがって、アプリケーションのLD_PRELOAD環境変数を設定する必要があります)。これは、アプリケーションがsetuidバイナリをLD_PRELOADとして使用し、setuid機能にセキュリティ上の互換性がない場合に問題を引き起こす可能性があります。また、すべてのネットワーク関連API関数がリダイレクトされるわけではないため、一部の奇妙なアプリケーションで問題が発生する可能性があります(たとえば、アプリケーションがネットワークインターフェイスとIPアドレスのリストを取得する場合)。

これらのLD_PRELOADタイプのプロキシクライアントは、通常、システムレベルで動作するようには設計されていません。代わりに、アプリケーションの起動方法を変更する必要があります(アプリケーションの前にプロキシクライアントを付けることにより)。理論的には、システム全体またはログインセッションにLD_PRELOAD環境変数を設定でき、場合によっては機能することもありますが、微妙な問題が発生する可能性があります。また、アプリケーションを再起動せずにリダイレクトのオンとオフを簡単に切り替えることはできません。

4
Laszlo Valko

openvpnはすべてをルーティングするのが最も簡単で、socksプロキシ経由でopenvpnサーバーに接続できます

次の2行を追加して、openvpnスクリプトを変更してsocksポート1234経由で接続します。

 socks-proxy localhost 1234
 socks-proxy-retry

これは、いくつかのより抑圧的な国のように、openvpnプロトコルがブロックされている場合に役立ちます。通常、socksプロキシはアプリケーションごとに設定されます。上記のソリューションには、openvpnサーバーとshadowsocksサーバーの両方が必要です。

2
Ardeeturfman