2009-10-29 00:51:34 +0000 2009-10-29 00:51:34 +0000
120
120

どのようにしてSSHを介してネットワークトラフィックをすべてトンネリングすることができますか?

安全ではない場所(公衆無線LANなど)からインターネットを使用するときはいつも ssh トンネル (ssh -D port host) を使用してトラフィックを盗聴されないようにしたいと思っています。残念ながら、プロキシを指定する方法を提供していないアプリケーションがたくさんあるようです(Flashはその代表的な例です)。

コンピュータからの全てのネットワークトラフィックにトンネルを使用する方法があるように感じますが、その方法については全くの無知です。何か助けがあれば、大いに感謝します。

回答 (7)

65
65
65
2014-05-23 16:08:57 +0000

あなたがしたいことをするには、 sshuttle をお勧めします。

./sshuttle -r username@sshserver 0.0.0.0/0 -vv

このように使います。

ssh -fNTD 127.0.0.1:<local port> username@sshserver

これは、すべての TCP トラフィックを自動的にトンネルしてくれます。--dns 引数を追加して、DNS トラフィックをトンネルすることもできます。リモートサーバは Python がインストールされている必要があります。

特定のプログラムだけをトンネリングしたい場合は、proxychainsをお勧めします。

インストールが完了したら、次のように ssh socks プロキシを起動します。

proxychains <program name>

これは、"SOCKS “プロキシを起動して、"SOCKS "プロキシが<ローカルポート>をリスンするようになります。

それから、/etc/proxychains.confを、<ローカルポート>と同じポートを指すように編集します。

最後に、プロキシしたいプログラムを起動します。

0x1&

これでうまくいくはずです。しかし、いくつかのプログラムはプロキシチェーンでは動作しないことがあります。また、Firefoxでは、プロキシをバイパスするのではなく、プロキシを通してDNS検索を行うようにするために、about:configの下の項目を追加で変更する必要があることにも注意してください。

追加のメモとして、Web ブラウザ上で。SOCKSプロキシサーバには127.0.0.0.1を、プロキシポートには<ローカルポート>を入力するだけです。

EDIT 3/29/16

この投稿がまだアップバウトされているので、更新しようと思いました。Proxychains はまだほとんどの Linux の repos にあり、Linux 上ではまだ動作しています。しかし、このプロジェクトは事実上放棄されており、OSXでは動作しません。LinuxでもOSXでも、まだメンテナンスされているフォーク: proxychains-ngにアップグレードすることを強くお勧めします。 https://github.com/rofl0r/proxychains-ng

LinuxとOSXの両方で動作することに加えて、コンパイルが簡単で、DNSトンネリングのサポートもはるかに優れています。

もう一つのオプション、redsocksについても触れておかなければなりません。これはproxychains(-ng)と似たような動作をし、あなたのdistレポにもあるでしょう。https://github.com/darkk/redsocks ](https://github.com/darkk/redsocks)

EDIT 11/27/19 もし proxychains ルートを使うなら、proxychains-ng を使ってください。レガシーバージョンよりも深刻なバグ修正があります。 https://github.com/rofl0r/proxychains-ng/issues/292

50
50
50
2011-07-18 10:24:01 +0000

man ssh はまさにこの例を示しています。ssh ベースの VPN。

SSH-BASED VIRTUAL PRIVATE NETWORKS
     ssh contains support for Virtual Private Network (VPN) tunnelling using
     the tun(4) network pseudo-device, allowing two networks to be joined
     securely. The sshd_config(5) configuration option PermitTunnel controls
     whether the server supports this, and at what level (layer 2 or 3 traf-
     fic).

     The following example would connect client network 10.0.50.0/24 with
     remote network 10.0.99.0/24, provided that the SSH server running on the
     gateway to the remote network, at 192.168.1.15, allows it:

       # ssh -f -w 0:1 192.168.1.15 true
       # ifconfig tun0 10.0.50.1 10.0.99.1 netmask 255.255.255.252

snip

Since a SSH-based setup entails a fair amount of overhead, it may be more
     suited to temporary setups, such as for wireless VPNs. More permanent
     VPNs are better provided by tools such as ipsecctl(8) and isakmpd(8).

いったん新しいインターフェイスを立ち上げたら、それをデフォルトのルートにしなければなりませんが、それは別の問題です。

6
6
6
2009-11-01 17:40:29 +0000

ssh で「Tunnel」オプションを探します。これにより、IP アドレスを割り当てることができるトンネルデバイスが作成され、そのトンネルを使用するための既定のルートが変更されます。

4
4
4
2011-07-18 08:55:38 +0000

SOCKS5プロキシを使って、すべてのTCPとオプションでUDPをシステム全体で転送できるようにするソフトウェアを開発しました。 http://code.google.com/p/badvpn/wiki/tun2socks

LAN上のコンピュータからのすべての接続を転送するためにルータにインストールすることもできます。

0
0
0
2013-03-12 22:57:21 +0000

SSH ベースのバーチャルプライベートネットワーク ssh は tun(4) ネットワーク擬似デバイスを使ったバーチャルプライベートネットワーク (VPN) トンネリングをサポートしており、2 つのネットワークを安全に接続することができます。sshd_config(5) 設定オプション PermitTunnel は、サーバがこれをサポートしているかどうかと、どのレベル (レイヤー 2 または 3 トラフィック) でサポートしているかを制御します。

The following example would connect client network 10.0.50.0/24 with
 remote network 10.0.99.0/24 using a point-to-point connection from
 10.1.1.1 to 10.1.1.2, provided that the SSH server running on the gateway
 to the remote network, at 192.168.1.15, allows it.

 On the client:

       # ssh -f -w 0:1 192.168.1.15 true
       # ifconfig tun0 10.1.1.1 10.1.1.2 netmask 255.255.255.252
       # route add 10.0.99.0/24 10.1.1.2

 On the server:

       # ifconfig tun1 10.1.1.2 10.1.1.1 netmask 255.255.255.252
       # route add 10.0.50.0/24 10.1.1.1

 Client access may be more finely tuned via the /root/.ssh/authorized_keys
 file (see below) and the PermitRootLogin server option. The following
 entry would permit connections on tun(4) device 1 from user “jane” and on
 tun device 2 from user “john”, if PermitRootLogin is set to
 “forced-commands-only”:

   tunnel="1",command="sh /etc/netstart tun1" ssh-rsa ... jane
   tunnel="2",command="sh /etc/netstart tun2" ssh-rsa ... john

 Since an SSH-based setup entails a fair amount of overhead, it may be
 more suited to temporary setups, such as for wireless VPNs. More perma‐
 nent VPNs are better provided by tools such as ipsecctl(8) and
 isakmpd(8).
-2
-2
-2
2009-10-29 01:43:30 +0000

(ssh -D ポートホスト) はトラフィックを盗聴されないようにするための 100% 安全な方法ではないということをはっきりさせておきたいだけです。(ssh -D -c blowfish port host) を追加することで、少なくともセッションに暗号化を追加することができるので、より良い選択となるでしょう。追加できるオプションは他にもありますが、ターミナルで “man ssh” と入力するか、Google で検索すれば簡単に見つかります。

あなたが探しているオプションは、VPN (Virtual Private Network) の設定だと思います

2つの違いを理解するためにこの記事を見てください SSH vs. VPN ) または良い 要約版 を見てください。もしあなたがVPNルートに行くことを決めた場合、私は OpenVPN をお勧めします。

-3
-3
-3
2009-11-01 17:47:59 +0000

以下の例を使用してください。

  • ポート 80 をリモートホストからローカルホストの 8888 に転送します

  • ポート 80 をローカルホストからリモートホストの 8888 に転送します

乾杯! :)