次のように入力してポート転送を有効にする方法は2つあります。
sudo sysctl -w net.ipv4.conf.eth1.route_localnet=1
または、次の行のコメントを解除してください
net.ipv4.ip_forward=1
の/etc/sysctl.conf
最初のコマンドは、イーサネットネットワークの名前を指定します。
プライバシーにはどちらが良いですか?
答え1
net.ipv4.ip_forward=1
より良い。単純なポート転送の場合、最初のアプローチは不要で、間違っていることがよくあります。公式カーネル文書を引用します。route_localnet
Route_localnet - BOOLEAN ルーティング時にループバックアドレスを火星のソースまたは宛先として処理しません。これにより、127/8 をローカルルーティング目的で使用できます。デフォルトはFALSE
https://www.kernel.org/doc/Documentation/networking/ip-sysctl.txt
答え2
これは2つの異なるオプションです。
ループバックアドレスを含むコンピュータに複数のローカルアドレスがある可能性があります。たとえば、ポート 8080 を 127.0.0.1 からアドレス 192.168.0.1 の外部インターフェイス ens0 に転送するには、次の手順を実行します。
sysctl -w net.ipv4.conf.ens0.route_localnet=1
iptables -t nat -A PREROUTING -i ens0 -p tcp --dport 8080 -j DNAT --to 127.0.0.1
ソケット127.0.0.1:8080のサービスは192.168.0.1:8080から利用可能です。
これは、次の抽象化で明確に見ることができます。 「mangle PREROUTING」の後ろにある「localhost source[YN]」の切り替え