正確な用語はわかりませんが、サーバー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 アドレスを検索することは非常に "安価" なので、省電力間隔は非常に短く、アップデートがネットワークに伝播するのにどれくらい時間がかかっても、できるだけ早く更新することをお勧めします。顧客。