安全でない場所(公共のwifiなど)からインターネットを使用しているときは常に、sshトンネル(ssh -D port host
)を使用して、トラフィックが傍受されないようにします。残念ながら、プロキシを指定する方法を提供しないアプリケーションが多数あるようです(Flashは主要な例の1つです)。
私のコンピューターからのすべてのネットワークトラフィックにトンネルを使用する何らかの方法があるべきだと感じていますが、これを行う方法については完全に無知です。どんな助けも大歓迎です。
安全でない場所(公共のwifiなど)からインターネットを使用しているときは常に、sshトンネル(ssh -D port host
)を使用して、トラフィックが傍受されないようにします。残念ながら、プロキシを指定する方法を提供しないアプリケーションが多数あるようです(Flashは主要な例の1つです)。
私のコンピューターからのすべてのネットワークトラフィックにトンネルを使用する何らかの方法があるべきだと感じていますが、これを行う方法については完全に無知です。どんな助けも大歓迎です。
回答:
あなたがしたいことをするために、私はsshuttleをお勧めします。
次のように使用します。
./sshuttle -r username@sshserver 0.0.0.0/0 -vv
すべてのTCPトラフィックを自動的にトンネリングします。--dns
引数を追加して、DNSトラフィックもトンネルさせることができます。リモートサーバーにインストールする必要があるのはPythonのみです。
特定のプログラムのみをトンネリングする場合は、proxychainsをお勧めします。
インストールしたら、次のようにssh socksプロキシを起動します。
ssh -fND 127.0.0.1:<local port> username@sshserver
これにより、<ローカルポート>でリッスンする「SOCKS」プロキシが開始されます。
次に、/ etc / proxychains.confを編集して、<ローカルポート>と同じポートをポイントします。
最後に、次のようにプロキシ化するプログラムを起動します。
proxychains <program name>
うまくいくはずです。ただし、いくつかのプログラムではプロキシチェーンの操作に問題があります。また、Firefoxでは、about:configの下の追加項目を変更して、プロキシをバイパスする代わりにプロキシを介してDNSルックアップを強制する必要があることにも留意してください。
追加のメモとして、Webブラウザーについて。ソックスプロキシをサポートしている場合、上記のsshトンネルを使用するために追加の作業を行う必要はありません。SOCKSプロキシサーバーには127.0.0.1を、プロキシポートには<local port>を入力します。
編集3/29/16
この投稿にはまだいくつかの賛成票があるので、私はそれを更新すると思いました。Proxychainsは、まだほとんどのLinuxリポジトリにあり、Linuxでも動作します。ただし、プロジェクトは事実上放棄されており、OSXでは機能しません。LinuxまたはOSXのいずれについても、引き続きメンテナンスされているフォークにアップグレードすることを強くお勧めします:proxychains-ng:https : //github.com/rofl0r/proxychains-ng
LinuxとOSXの両方で動作することに加えて、コンパイルが簡単で、DNSトンネリングのサポートがはるかに優れています。
また、レッドソックという別のオプションについても言及する必要があります。proxychains(-ng)と同様に機能し、distリポジトリでも使用される可能性が高い:https : //github.com/darkk/redsocks
sshuttle -r root@host -x host 0/0
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
~~ 切り取り ~~
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).
新しいインターフェイスを作成したら、それをデフォルトルートにするだけで済みますが、これは別の質問です。
sshで「トンネル」オプションを探します。これにより、IPアドレスを割り当てることができるトンネルデバイスが作成され、そのトンネルを使用するようにデフォルトルートを変更します。
SOCKS5プロキシを介して、システム全体ですべてのTCPおよびオプションでUDPを転送できるソフトウェアを開発しました。
http://code.google.com/p/badvpn/wiki/tun2socks
ルーターにインストールして、LAN上のコンピューターからのすべての接続を転送することもできます。
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).
(ssh -D port host)は、トラフィックを傍受しない100%安全な方法ではないことを明確にしたかっただけです。(ssh -D -c blowfish port host)を追加することは、少なくともセッションに暗号化を追加するため、より良い選択です。追加できるオプションは他にもありますが、端末またはGoogleで「man ssh」と入力するだけで完全なリストが表示されます。
私があなたが探していると思うオプションは、VPN(仮想プライベートネットワーク)を設定することです
独自のVPNのセットアップに取り組む前に、この記事を参照して、2つの違い(SSHとVPN)または適切な要約バージョンの違いを理解してください。VPNルートに行くことにした場合は、OpenVPNをお勧めします。OpenVPNは、無料で多くのドキュメントとサポートを提供しています。
ssh -2 -C -D [...]
(SSH2を強制し、圧縮を使用して)をドロップし-c
ます。私のシステムによると、man ssh
SSH2の暗号リストはデフォルトでになっていaes128-cbc,3des-cbc,blowfish-cbc,[etc]
ます。私のポイントは、あなたがリクエストした-c blowfish
場合、SSH2よりも安全性がはるかに低いSSH1になる可能性があるということです。
これらの例を使用してください:
リモートホストからローカルホストの8888にポート80を転送する
ssh -fnN -L8888:localhost:80 user @ server
これを使用して、リモートホスト上のサービスのみにアクセスします。
ローカルホストからリモートホストの8888にポート80を転送する
ssh -fnN -R8888:localhost:80 user @ server
これを使用して、ユーザーがWebサーバーなどのサービスにアクセスできるようにします。
乾杯!:)