宿題...
ローカルネットワークには、(192.168.0.185
「クライアント」)、192.168.0.129
(「ゲートウェイ」)、192.168.0.81
(「サーバー」)の3台のコンピュータがあります。 「サーバー」はHTTPサーバーを実行しているため、192.168.0.81
他の2台のコンピューターのいずれかでブラウザのアドレスバーに入力するとWebページが表示されます。
タスクは、いわゆる「ゲートウェイ」にNATを設定し、「クライアント」192.168.0.129
ブラウザ()に対応するIPアドレスを入力すると、「サーバー」が提供するWebページが表示されるようにすることです。これは私の解決策です。
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A PREROUTING -p tcp -d 192.168.0.129 --dport 80 -j DNAT --to 192.168.0.81:80
iptables -t nat -A POSTROUTING -p tcp -d 192.168.0.81 --dport 80 -j SNAT --to 192.168.0.129:80
これは、(私が望む)「サーバー」(DNAT)への「ゲートウェイ」リダイレクト要求を作成し、同時に「サーバー」が「ゲートウェイ」を介して応答を適切に送信できるように、要求の送信元アドレスを独自のアドレスに置き換えます。 「クライアント」(SNAT)に直接送信します。
「クライアントブラウザのアドレスバー」に「ゲートウェイのIP」と入力しました。長く生きる!ページを見ました!終わったと思いました!
しかし、私はそうではありません。次に、「クライアント」からページを再読み込みします。タイムアウトエラーが発生します。ページを再読み込みします。またタイムアウトしました。しばらく待ってから再読み込みしました。このページは正しく提供されました。だから最後にリロードしましたが…タイムアウトしました。
これは私を混乱させる。ページが提供されると、しばらく作業が中断されるようです。なぜこれが起こるのですか?私の間違いはどこにありますか?
「クライアント」ブラウザに(「ゲートウェイアドレス」を入力する代わりに)「サーバーアドレス」を入力してもこの問題は発生しないことに注意してください。
答え1
いよいよ理解できたと思います。犯人は次の行です。
iptables -t nat -A POSTROUTING -p tcp -d 192.168.0.81 --dport 80 -j SNAT --to 192.168.0.129:80
次のように変更すると、作業が開始されました。
iptables -t nat -A POSTROUTING -p tcp -d 192.168.0.81 --dport 80 -j SNAT --to 192.168.0.129
理由はわかりませんが、NATが接続を識別するためにポートを使用しているという漠然とした考えがあります。したがって、ポートを1つだけ指定すると、要求が2つ以上の場合に競合が発生します。
答え2
私はルーターとして使用するDebianがインストールされているPCを持っており、いくつかの経験をあなたと共有することができます。
ルーティング
意図的にホストをルーターとして使用している場合は、これを行わないでください。
echo 1 > /proc/sys/net/ipv4/ip_forward
代わりに、次のいずれかを実行してください。
sysctl -w net.ipv4.ip_forward=1
nano /etc/sysctl.conf:
- そして編集する
net.ipv4.ip_forward = 1
- そして編集する
今後
ああ、ちょうどあなたが提供できることがわかりました。次の内容すべてに魔法はほとんどありません。これは本番の回答です。これで、内部構成を詳しく見ることはあなたの役割です(Google天江園iptables
- その後、パーサー/ジェネレータがどのように機能するかがわかります)
次に、いくつか提案してみましょう。インターネット感度再生できるWebインターフェース - 直接訪問192.168.0.81:10000今コマンドラインを学ぶ理由はありません。すべてのiptablesタスクは、Webインターフェイスを介して行われます! ;) また、シェルスクリプトを読み、本番環境がどのように機能するかを知ることができます。
記録
webminはすべてのことを行いますが、Debianを使用してコンソールログが必要な場合はapt install iftop
(google iftop
source、read、education)だけを入力してください。
私の時間とこの情報が役に立った場合は、この投稿を気に入って受け入れてください!