ルーターに接続されたRaspberryPiホームサーバーをセットアップしました。私は動的IPを持っています。内部IP(192.168.0.8)を使用して、ネットワーク内のサーバーにアクセスできます。ネットワークのパブリックIPと作成したnoip.comドメインを使用して、ネットワーク外のサーバーにアクセスすることもできます。
問題は、パブリックIPアドレスまたはnoip.comドメインのいずれかを使用してネットワーク内のサーバーにSSH接続できないことです。しかし、奇妙なことに、(ネットワーク上で)Webブラウザのnoip.comドメインに移動すると、「動作する」デフォルトのApacheページが表示されます(これはキャッシュによるものではありません。いくつか確認しました。デバイス)。
少しグーグルした後、ルーターにNATループバックを設定する必要があることがわかりました。私のルーター(ISPが提供するルーター)は、Webインターフェイスを介したNATループバックをサポートしていないようです。 192.168.0.1経由。
ただし、ルーターへのTelnetアクセスは有効になっています。それはbusyboxを実行し、 `iptables 'コマンドが利用可能です。
ISP Webサイトのフォーラムで顧客が作成したコマンドを見つけました: http://www.skyuser.co.uk/forum/sky-router/47273-nat-loopback-dlink-2640s.html
私はtelnetにPuTTYを使用していますが、どれでも使用できます。
私のサーバーは192.168.0.x(私のWebサーバー)wan ipは2.x.x.x(自分のものに置き換えます)サーバーポート443(httpsは私にとってはhttpsですが、別のiptablesにしたい場合は、2つのコマンドが必要です:
iptables -t nat -A POSTROUTING -d 192.168.0.150 -s 192.168.0.0/24 -j SNAT --to-source 192.168.0.1
iptables -t nat -A PREROUTING -d 2.x.x.x -m tcp -p tcp --dport 443 -j DNAT --to-destination 192.168.0.x
--dport 443を省略して、すべてのポートをサーバーに送信するだけです。
ここで問題となるのは、WAN IPが変更されるたびに、2番目のコマンドをやり直す必要があることです(これがどのくらいの頻度で発生するかは誰にもわかりません)。また、ルーターを再起動するとこれが失われます。
2番目のコマンドのそのセクション(「iptables-t nat -A PREROUTING -d 2.x.x.x」)には、パブリックIPアドレスが含まれています。「現在のパブリックIPアドレス」を意味するようにするにはどうすればよいですか?
これが可能な場合、関連する解決のためにルーターへのすべての要求が遅くなりますか?
iptables
はDNS名に解決されるため、ルールでは2.x.x.xの代わりにnoip.comDNS名を使用できます。これは自分のiptables
構成で機能します。
iptables -t nat -A PREROUTING -d whatever.noip.com -m tcp -p tcp --dport 443 -j DNAT --to-destination 192.168.0.x