ポートを介してサーバーAからサーバーBに要求を転送する

ポートを介してサーバーAからサーバーBに要求を転送する

正確な用語はわかりませんが、サーバーAからサーバーBにトラフィックをリダイレクトしようとしています。次のリソースがあります。

  • タイプAのDNSレコードは、以下を指します。サーバーAIPアドレス(例:abc.com
  • サーバーAUbuntu変化のない例:IP 00.00.00.01、リッスンしているポートがありません。
  • サーバーBDebian,動的次のように仮定しましょう。のIP 00.00.00.02、リッスンポート123
  • インターネットからの着信要求abc.com:123

サーバーA処理能力はあまりありませんが、固定IPを使用するサーバーです。サーバーB強力なサーバーですが、動的IPを使用します。どちらも異なるネットワークで動作します。

私の計画はサーバーBよく言うサーバーA現在のIPアドレスで、次の場所に保存されます。サーバーAファイルに移動します。

リクエストした場合サーバーAPortでは、123以前に保存したIPアドレスを使用し、トラフィックをそのアドレスにリダイレクトする必要があります。

以前に試したことは、IPテーブルを使用してトラフィックをリダイレクトすることです。私はiptablesについてよく知りませんが、インターネット上で次のコマンドを見つけました。

sudo sed -i 's/#net.ipv4.ip_forward=1/net.ipv4.ip_forward=1/g' /etc/sysctl.conf # enable forwarding
sudo sysctl net.ipv4.ip_forward # apply changes
sudo iptables -t nat -A PREROUTING -p tcp --dport 123 -j DNAT --to-destination 00.00.00.02:123
sudo iptables -t nat -A POSTROUTING -p tcp -d 00.00.00.02 --dport 123 -j SNAT --to-source 00.00.00.01

その後、iptablesサービスを再起動しました。エラーが発生しなかったため、ドメインへの要求がサーバーBに行くことを確認するためにTracerouteを試しましたが、そうではありませんでした。

traceroute abc.com 123

私はサーバーAのポート123で何も受信していないことを知っていますが、とにかくiptablesはトラフィックをサーバーBにリダイレクトするので大丈夫だとします。

誰かがアイデアを持っているかもしれません。

答え1

@roaimaが指摘したように:

DDNS(ダイナミックDNS)に触れたことがありますか?これは状況を処理する一般的な方法です。

あなたのDNSプロバイダにREST APIが完璧だと言われました。

Bの認定IPが10秒ごとに変更されたかどうかを簡単に確認し、必要な場合にのみ更新してください。

これにより、何も起こらないと更新が発生せず、パブリックIPアドレスを更新するときの待ち時間が短縮されます。

次のスクリプトが機能します。

#!/bin/bash

lastip=""

while true
do
  currip=$(dig +short myip.opendns.com resolver1.opendns.com)
  if [ "${lastip}" = "${currip}" ]
  then
    sleep 10
  else
    curl WHATEVERNEEDSTOBEDONE_TO_UPDATE_DNS
    lastip="${currip}"
    sleep 300
  fi
done

もちろん、roaimaが指摘したように、DNSプロバイダはDNS TTLが十分に低くなければなりません(つまり、提供する応答がすぐに期限切れになるようにマークする必要があります)。しかし、私の経験では、プロバイダが5〜20分などの最小TTLを提供することはまれではなく、設定可能です。だから試してみることをお勧めします。

openDNS の myip サービスを使用して自分の IP アドレスを検索することは非常に "安価" なので、省電力間隔は非常に短く、アップデートがネットワークに伝播するのにどれくらい時間がかかっても、できるだけ早く更新することをお勧めします。顧客。

関連情報