ポートXでWebサービスを実行しています。ローカルネットワークの外で実行することは意図されていませんでしたが、インターネット経由でアクセスしたいと考えています。したがって、すべての着信パケットのソースIPアドレスをローカルのアドレス(たとえば、192.168.2.100)に変更する必要があります。それ以外の場合、Webサービスはエラーで応答します。
だからここに私が必要なものがあります:
パブリックIP Xを使用して自宅のコンピューターからサーバーのパブリックIPアドレスYにパケットを送信する場合、送信元IPアドレス(この場合はX)をローカルアドレス(192.168.2.1など)に変更する必要があります。 。その後、パケットは同じサーバーのポート80で実行されているWebアプリケーションに渡されます。
OK、今私はあなたが何を望んでいるか理解していると思う。これは非常に特殊なケースであり、以前に投稿した通常のport-forwardingアプローチとは異なります(以下を参照)。次のルールはそれを行うべきです。
私は以下を想定しています:
<x>
:サーバーのパブリックIP<y>
:クライアントのパブリックIP<a>
:サーバーの内部IP(192.168.2.1
)<b>
:クライアントの「偽装」IP(192.168.2.100
)<if>
:外部インターフェース(つまり、eth0
)SNATのみ
このルールは、パケットの送信元アドレスを変更します。
iptables -t nat -A INPUT -p tcp -d <x> --dport 80 -s <y> -j SNAT --to-source <b>
DNATとSNATの組み合わせ:
これらのルールは、パケットの送信元アドレスと宛先アドレスを変更します。
iptables -t nat -A PREROUTING -i <if> -p tcp -d <x> --dport 80 -s <y> \
-j DNAT --to-destination <a>:80
iptables -t nat -A INPUT -p tcp -d <a> -s <y> --dport 80 \
-j SNAT --to-source <b>
[〜#〜] accept [〜#〜]フィルタテーブルのパケットを忘れないでください。
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 8080 \
-j DNAT --to-destination 192.168.2.1:80
これにより、外部インターフェースの着信パケット(この例では8080
)のポートeth0
が内部ホスト192.168.2.1
にポート80
に転送されます。 interface、protocol、dportおよびto-destinationを設定に置き換えます。
このルールは、変更されたパケットを受け入れます。
iptables -A FORWARD -i eth0 -p tcp -d 192.168.2.1 --dport 80 -j ACCEPT
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport *$srcPortNumber* -j REDIRECT --to-port *$dstPortNumber*
Yours NICがeth0にない場合、-i属性を変更します
編集#1
--dportおよび--to-portの場合、exmのip adress whitポートを設定できます:192.168.0.1:80