回答:
システム設定->ネットワーク->(ウィンドウの左側でネットワークを選択し、右下の[詳細設定]を選択)->プロキシ(上部のタブ)が機能しないのはなぜですか?
システム全体のプロキシ設定を設定することは良いスタートですが、すべてのトラフィックが確実にプロキシを通過するようにiptablesを使用することを検討することもできます。一部のアプリケーションはシステム全体の構成設定(そのうちのFirefox)を使用しないため、直接接続を許可せず、プロキシを介してトラフィックをルーティングするだけのためにルールを調整する必要があります。
編集:iptables
私は自分のVPNからの「リーク」の可能性を管理するために個人的にルールを使用していますが、iptablesがsocksプロキシで直接動作する可能性があると私は実際に誤解していました。仮想トンネルインターフェイス(vpnの使用など)を作成するには、tun2socksのようなものが必要です。
その後、次のようなiptablesスクリプトを設定できます。
#!/bin/bash
if [[ $EUID -ne 0 ]]; then
echo "This script must be run as root" 1>&2
exit 1
fi
# name of primary network interface (before tunnel)
PRIMARY=eth0
# gateway ip address (before tunnel - adsl router ip address)
# automatically determine the ip from the default route
GATEWAY=`route -n | grep $PRIMARY | egrep "^0\.0\.0\.0" | tr -s " " | cut -d" " -f2`
# provided by tun2socks: interface name
TUNNEL=tun0
# If you'd like, putting the tun2socks command here is a good idea. It may or may not be necessary to do so, but either way is more convenient than running the two commands separately.
# iptables rules - important!
LOCAL_NET=192.168.0.0/16
#LOCAL_NET=$GATEWAY
# Flush all previous filter rules, you might not want to include this line if you already have other rules setup
iptables -t filter --flush
iptables -t filter -X MYVPN
iptables -t filter -N MYVPN
# Add local routes to routing table
route add -net 192.168.1.0 netmask 255.255.255.0 dev eth0
route add -host 23.21.163.237 dev eth0 gw 192.168.1.1
# Add ssh routes to routing table
ip route add table 128 to 192.168.1.0/24 dev eth0
ip route add table 128 default via 192.168.1.1
# Exceptions for local traffic & vpn server
iptables -t filter -A MYVPN -o lo -j RETURN
iptables -t filter -A MYVPN -o ${TUNNEL} -j RETURN
iptables -t filter -A MYVPN --dst 127.0.0.1 -j RETURN
iptables -t filter -A MYVPN --dst $LOCAL_NET -j RETURN
iptables -t filter -A MYVPN --dst ${SERVER} -j RETURN
iptables -t filter -A MYVPN --dst ${VPN_SERVER} -j RETURN
# Add extra local nets here as necessary
iptables -t filter -A MYVPN -j DROP
# MYVPN traffic leaving this host:
iptables -t filter -A OUTPUT -p tcp --syn -j MYVPN
iptables -t filter -A OUTPUT -p icmp -j MYVPN
iptables -t filter -A OUTPUT -p udp -j MYVPN
当然、このスクリプトに特定のネットワークを反映させる必要があります(つまり、192.168.0.0 / 24サブネットなどを使用している場合は、それに応じて調整してください)。また、VPNで使用するスクリプトに非常に厳密に基づいているため、MYVPNまたはVPNについてすべて言及されています-VPNを使用していないtun2socks
場合でも、実質的には同じように動作するため、すべてが同じように動作します。
そして、Unix.SEでこの回答に感謝し、この回答に正しい方向に私を導いてくれた。
再度編集:つまり、OS Xは実際にipfw
iptablesではなくこれを実行しているようです(申し訳ありませんが、私はほとんどLinuxを使用しており、OS Xにはiptablesが用意されていると思いました)。スクリプトを適合させることができる同等性があります。その一部をここで指摘します。 man ipfw
構文を正しく設定する必要があります。元のiptables
スクリプトはテンプレートとして残しておき、概念的に何が行われているのかを確認できるようにします。 WaterRoofはipfw
、もう少しユーザーフレンドリーな使い方をするのに役立つように見えます。他のフロントエンドも利用できる場合があります。
tun2socks
SSHとサーバーは必要ありません。彼らのサイトの例は、最初にSSHを使用してSOCKSプロキシを作成するためのものです。SOCKSプロキシがすでにある場合は、まったく不要です。そして、はい、iptables
私の側では間違った方法でした。BSDベースのOS X は、Linuxカーネル用のではipfw
なくを使用しiptables
ます。複雑な点については、使いやすい方法で設定するフロントエンドを見つけることができるかもしれませんが、私はこの問題についての経験がありません。とにかくそれが低レベルで複雑であることは、なぜそれが仕事にそんなに能力があるのかと多くの関係があります。
ipfw
容易にするのに役立つ場合は、回答に使用するフロントエンドを追加しました。
自分でSSHサーバーを設定できる場合は、無料のシャトルですべてのTCPトラフィックを接続にトンネリングし、すべてのファイアウォールを機能させることができます。
すべてのTCPトラフィックとDNS要求をリモートSSHサーバーに転送するためのコマンドは、非常に簡単です。
sshuttle --dns -vr ssh_server 0/0
TCPおよびDNS以外に、sshuttleはUDP、ICMP、pingなどの他のリクエストを転送しません。
詳細と例については、「毎日の仕事でのシャトルの使用」を参照してください。
利用可能なソリューションはいくつかあります。それらのいずれも、いくつかの設定を変更するほど単純ではありません。理由は、これがプロキシの目的全体を損なうためです。これは、特定のアプリケーションを別のルート(ステルス、セキュリティ、ID保護などの目的で)ルーティングすることです。 (おそらくより速い)ローカルルートにアクセスします。
一部は要件のために破棄されますが、完全を期すために、VPN、SSHトンネル、pfctlの使用(パケットフィルターおよびNAT制御インターフェース)についてのみ触れさせてください。また、Torは確かにあなたが想定している用途向けに設計されていませんが、プロキシを介してすべてのトラフィックをルーティングすることができます。
これらのアプリケーションはすべて無料であり、実行するには多くの工夫が必要です。一方、有償のアプリケーションもあります。このアプリケーションでは、ほとんどの作業が有料ですが、他の誰かが行っています。
プロキシサーバー経由でコンピューターのネットワーク接続をリダイレクトできます。どのアプリケーションがプロキシ経由でどのような状況でインターネットに接続するかをProxyCapに指示できます。これは、インターネットクライアントを再構成する必要なしに、ユーザーフレンドリーなインターフェースを介して行われます。
または、Mac用のProxifierがあります(注意:10.8までしかサポートされていません)。どれ
プロキシサーバーを介した作業をサポートしていないネットワークアプリケーションが、SOCKSまたはHTTPSプロキシおよびチェーンを介して動作することを許可します。