dd-wrt を使っていると、以前は出来たことでした。
ローカルルーターにフラレているグローバルIPを叩いたても見えない。
昔は見えたのでなぜかと悩む。またルーターによっても出来るものと出来ないものがありますね。
ヘアピンNATと言います
ヘアピンNAT - (゚∀゚)o彡 sasata299's blog
自宅でWebサーバを運用するならヘアピンNAT付きルータが便利 - Tari Lari Run
DD-WRT - FoNまとめwiki
LAN内からLAN内のサーバにアクセスしたときにきちんとループバックしてルーティングしてくれる機能はヘアピンNATと呼ばれる機能です。格安ルーターにはあまりついてないそうです。
dd-wrt で実現するには。
ヘアピンNATの実現
- DNSMasq
- iptables
で実現できる。
静的NATとか、ヘアピンNATと言われる機能のこと。 DD-WRTが URIからIPアドレスへの変換を提供するため、管理しやすい。 詳細はDD-WRT ForumのEnabling NAT loopbackを参照。
DNSMasq
DD-WRTは、それを実現するのがDNSMasqらしい。
(つまり、IPではなく名前解決でやっちゃおうってことらしい)
静的NATとか、ヘアピンNATと言われる機能のこと。 DD-WRTが URIからIPアドレスへの変換を提供するため、管理しやすい。
詳細はDD-WRT ForumのEnabling NAT loopbackを参照。
DD-WRTは、それを実現するのがDNSMasqらしい。
(つまり、IPではなく名前解決でやっちゃおうってことらしい)
前は動いたと思ったら壊れてるらしい
WARNING: Loopback is currently broken in build 15760 and higher but is easily fixed with iptables. See [Ticket 1868] for more information.
どうしようもないですね。
iptables でNATループバックを利用する
そこで別のアイディアを試した。iptablesだ。
Port Forwarding Troubleshooting - DD-WRT Wiki
#1868 (r15760 breaks NAT loopback) – DD-WRT
以下のコマンドを、shell command フォームかSSHで試す。
LAN=`nvram get lan_ipaddr`/`nvram get lan_netmask` iptables -t nat -I POSTROUTING -o br0 -s $LAN -d $LAN -j MASQUERADE
これをスタートアップコマンドに書いたことで出来た。
LAN=`nvram get lan_ipaddr`/`nvram get lan_netmask` iptables -t nat -I POSTROUTING -o br0 -s $LAN -d $LAN -j MASQUERADE
完璧!