- localhostでのみリッスンするサーバーアプリケーションを想像してください。
- 他のインターフェースでは聞くことができる設定はありません。
- eth0のような他のインターフェイスを強制的に受信したいと思います。
接合材(libindp.so)がこれを行うことができます。ただし、Debian リポジトリでは使用できないため、使用が不便です。だから私は同じ目標を達成するためにバインディングに代わるものがあるかどうか尋ねたいと思います。
答え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つの状況のいずれかに該当すると考えられます。
- 実際には、単語を介してアクセス可能なインターフェイスを受信するようにサービスを構成できますが、方法がわからない場合は、サービス自体を説明し、それを外部で使用可能にする方法を尋ねる必要があります。
- あるいは、技術的またはセキュリティ上の理由で、実際にはサービスにテキスト経由でアクセスできないようになっている場合もあります。
しかし、どのようなサービスなのか分からないと、これより正確にはできません。
答え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