別のホストを介してホストのネットワークトラフィックをルーティングする方法


9

私は私たちの企業ネットワークのシステム管理者ではありませんが、2つのLinuxワークステーション(ホストAとB)があり、両方にrootアクセスできます。

両方のホストはお互いをうまく見ることができます(ssh、pingなどが一方から他方へと動作します)。ただし、ホストAのみが企業のファイアウォールの外に到達してインターネットなどにアクセスできます。ホストBはできません。

質問:システム管理者を介さずに、ホストBのすべての(HTTPだけでなく)送受信ネットワークトラフィックをホストA経由でルーティングするにはどうすればよいですか?現在、ホストBにNATを使用する必要があるのか​​、ホストAをプロキシサーバーにするのか、ホストAをルーターにする必要があるのか​​、私にはわかりません。

ホストBでroute add -host <HostA> gw <HostA's Gateway>コマンドを発行しようとしましたが、機能しませんでしたping。ホストB からwww.google.comにアクセスできませんでした。このルーティング/ネットワーキングの問題についての無知をご容赦ください。

回答:


16

これを行うには複数のソリューションがあります。

より簡単な方法:NAT

転送を許可してAをルーターにします。/etc/sysctl.confにsysctl net.ipv4.ip_forward=1 入れ net.ipv4.ip_forward=1て永続化します。

次に、Aでnat traficと入力して、 iptables -t nat -A POSTROUTING -o ethx -j MASQUERADE

最後にB:すべてのトラフィックをA経由でルーティングします。

ip route del default  
ip route add default via IP_of_A

その他のソリューション:Proxify

ただし、プロキシを使用するには、すべてのコンポーネントをセットアップする必要があります。

Bで、次のコマンドを使用してAへのSSH接続を開きます。

ssh -D8000 -N -f user@IP_of_A 

これにより、Bでプロキシsockが開き、A経由ですべてのトラフィックがリレーされます。たとえば、Webブラウザーを使用する場合は、ポート8000​​でリッスンする127.0.0.1でプロキシsock v5をセットアップする必要があります。ipをセットアップする必要はありません。ルートへの転送またはタッチ。


発行にはip route add:コマンドを、私はこのエラーましたError: either "to" is duplicate, or "gw" is a garbage.
ハリー

ところで、DrGkill、他の方法についても言及していただければ幸いです。また、これらの概念が実用的な方法でカバーされているいくつかの本/リソース。私はTannenbaumのような理論は必要ありません。むしろ、私が試して学べる概念と実際のLinuxコマンドが役立つでしょう。見た目が古い[ faqs.org/docs/linux_network/index.html](Linuxネットワーク管理者ガイド)がまだ最新であり、上記のレシピをカバーしているかどうかはわかりません。感謝し、神のご加護を。
ハリー

正しい構文はip route add default viaまたはroute add default gwです。
量子

間違いを編集し、プロキシの方法を追加しました。楽しい。
DrGkill 2011

1
量子ありがとう!コマンドは正常に受け入れられました。しかし、今ping www.google.comFrom hostA (<ipaddrOfHostA>) icmp_seq=1 Destination Host Prohibitedエラーが発生し、100%パケット損失が発生します。
ハリー、

1

ファイアウォールを無効にする必要があると思います。

service iptables stop

ホストAとホストBの両方でそれが必要かどうかはわかりませんが、「宛先ホスト禁止」メッセージが渡されました

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.