Linux ルーティング テーブル、トンネル、iptables

Linux ルーティング テーブル、トンネル、iptables

これらすべてのコンポーネントがどのように連携して動作するかを理解しようとしています。

私の主な目標は、ローカル ホスト (Windows 7) ネットワークからリモート ネットワーク上のリモート ホストにトラフィック (ポート 80,443) をルーティングすることです。つまり、10.50.1.2:80 にアクセスしてリモート ホスト (ポート 4111) にアクセスしたいのです。

最初のステップとして、次のようにしてローカル Windows ホストへのルートを追加してみました。

route ADD “10.50.1.0” MASK “255.255.255.0” “remote public ip”. 

これは機能しませんでした。理由を説明できる人はいますか?

その後、アドレスをローカルLinuxサーバーにルーティングしようとしました

route ADD “10.50.1.0” MASK “255.255.255.0” “192.168.10.78”

パケットをリモートパブリックIPに転送するために、事前ルーティングでiptablesとDNATを使用しました。

iptables -t nat -A PREROUTING -d 10.50.1.2 -dport 80 -j DNAT --to-destination publicIP:80

トラフィックは 192.168.10.78 に到着しました (tcpdump で確認済み) が、リモート ホストには到着しませんでした。理由を説明できる人はいますか? ポストルーティングでマスカレードを使用しようともしました。

それから検索を始めて、トンネル工事に出会いました。

最初と 2 番目の試行が機能しない理由と、トンネリングがどのように役立つかを説明できる人はいますか?

答え1

最初の試み: route ADD “10.50.1.0” MASK “255.255.255.0” “remote public ip”

これにより、 を介して到達可能なネットワーク 10.50.0/24 のルートが設定されますremote public ip。プライベート IP は通常、インターネット上でルーティングされないため、これが機能しない理由はおそらくおわかりいただけると思います。

2回目の試み: route ADD “10.50.1.0” MASK “255.255.255.0” “192.168.10.78”

ホスト 192.168.10.78 を介して 10.50.1.0/24 ネットワークのルートを設定します。そのホストがそのネットワークのトラフィックをルーティングするように構成されていない場合、トラフィックはどこにも送信されず、リモート マシンに到達できません。マシンでこれを実行できるように NAT/DNAT を構成したとのことですが、正しい構成が何であるかはわかりません。Web トラフィックのみに関心がある場合は、プロキシの使用を検討してみてはいかがでしょうか。

トンネリングは、元のリクエストを別の接続内にカプセル化するプロセスです。ただし、微妙な違いによって大きな違いが生じる可能性があるため、どのようなコンテキストでそれを使用しているかをより具体的にする必要があります。

関連情報