私はこれを「ProxyDroid」や「SSHTunnel」のような多くのAndroidベースのプロジェクトで使用しているのを見てきました。
プロキシまたは SSH トンネルへの接続を確立すると、iptables を使用して、作成したトンネルを介してすべての TCP 要求がリダイレクトされます。
これは「-I OUTPUT -p tcp --destination-not xxx.xxx.xx.xx --redirect-to xx.xxx.xx.xx:port」のようなものになるはずですが、これに関する例が見つからず、nat に挿入する必要があるのか、それとも他の何かに挿入する必要があるのかわかりません。また、たとえば着信接続用にもう 1 つなど、ルールを 1 つ以上用意する必要があるのかどうかもわかりません。
編集:
トンネルを直接使用することはできないようです。または、エージェントを使用せずにそれを実行する方法がわかりません。これを機能させるには、ローカル サーバーとして機能する redsocks というプログラムをインストールする必要がありました。
ここで使用される iptables コマンドは次のとおりです。
# do not redirect connection sent to localhost so redirected connections can reach
# its destination, otherwise we'll stuck in a loop.
iptables -t nat -A OUTPUT -d 127.0.0.0/8 -j ACCEPT
# Redirect all tcp connections except ones that are going to my tunnel server
# to the local redsocks port
iptables -t nat -A OUTPUT -p tcp ! -d tunnel.ip.goes.here -j REDIRECT --to-ports 31338
RedSocks リポジトリ:https://github.com/darkk/redsocks
今はすべてうまく動作していますが、これを redsocks なしで (トンネルに直接接続して) 実現できるかどうかをまだ知る必要があります。
答え1
SSH 経由で貧乏人の VPN を設定するつもりですか? もしそうなら、これに関する Ubuntu ドキュメントがいくつかあります:
https://help.ubuntu.com/community/SSH_VPN
基本的には、「-w」オプションを使用して新しい tun0 インターフェイスを設定し、それを介してルーティングを開始します。 iptables
は関係ありませんが、ルートを設定する必要があります。
TCPをTCP上で実行することは、悪いアイデアより良い選択肢としては、OpenVPN のようなシンプルな VPN が考えられますが、これは手っ取り早い SSH トンネルよりも複雑になります。