
- ローカルホストのみをリッスンするサーバーアプリケーションを想像してください。
- 他のインターフェースをリッスンする設定がない
- eth0などの他のインターフェースで強制的にlistenさせたい場合
バインド(libindp.so) はそれが可能です。ただし、Debian リポジトリからは入手できないため、不便です。そこで質問したいのですが、同じ目的を達成するために bindp に代わるものはありますか?
答え1
これについてはすでに何十回も質問されており、受け入れられる答えは iptables を使用することです。
sysctl -w net.ipv4.conf.all.route_localnet=1
iptables -t nat -I PREROUTING -p tcp --dport 80 -j DNAT --to 127.0.0.1:8080
最初のコマンドは、外部ネットワークから内部ネットワークへのリダイレクトを許可するためのもので (セキュリティ上の理由から無効になっています)、2 番目のコマンドはリダイレクトを実行するためのものです (もちろん、まったく説明していない特定のケースに合わせてポートを調整する必要があります)。
別の解決策としては、ローカル ポート リダイレクトを使用することですOpenSSH
。これにより、基本的に同じことを行うことができますが、カーネル保護を無効にする必要はありません (他の解決策が既に機能しているため、これについては詳しく説明しません)。
ローカル バインド サービスが使用しているプロトコルに応じて、nginx
リバース プロキシまたはsshl
マルチプレクサとして使用することもできます。
最後に、、socat
およびstunnel
友人もこれに使用できます。
iptables ソリューションの利点は、カーネル内にあるため高速であることです。
警告
SE は、実際に問題を解決しようとするよりも正確に答える方がよいとみなされるシステムであるため、私は質問に答えようとしました。しかし、詳細が欠けている説明を考えると、実際には次の 2 つのケースのいずれかに該当すると思われます。
- サービスは実際にワード到達可能なインターフェースをリッスンするように構成できるが、その方法がわからない場合は、サービス自体を説明し、外部から利用できるようにする方法を尋ねる必要があります。
- あるいは、技術的またはセキュリティ上の理由により、このサービスは実際には Word 経由でアクセスできないように設計されている場合もあります。
しかし、どのサービスなのかがわからないと、より正確にはわかりません。
答え2
ソカット道具 (Debian パッケージ) 助けられる:
socat -d -d TCP4-LISTEN:80,bind=192.168.1.1,fork TCP4:localhost:80
答え3
IPv6ではiptablesソリューションは機能しない代わりに@Artemの解決策を使うこともできます。
sudo socat TCP6-LISTEN:80,bind=[2001::beef],fork TCP6:[2001::beef]:8080