IPTables - 他のIPへのポートとポート(内部から)

IPTables - 他のIPへのポートとポート(内部から)

現在、ポート80で実行されているNASボックスがあります。外部からNASに接続するために、次のようにポート8080をNASのポート80にマップしました。

iptables -t nat -A PREROUTING -p tcp --dport 8080 -j DNAT --to-destination 10.32.25.2:80

これは魅力のように動作します。ただし、これはネットワーク外(職場、他の家など)からサイトにアクセスする場合にのみ機能します。したがって、と入力するとmywebsite.com:8080IPTablesが正しく機能し、すべてがうまく機能します。

これで問題は、ネットワーク内でこのポートをどのようにリダイレクトできるかということです。私のドメイン名はmywebsite.com内部(10.32.25.1)から私のルーター(Linuxサーバー)を指していますが、ポート8080を内部から10.32.25.2のポート80にリダイレクトしたいと思います。

どんな手がかりがありますか?

編集#1

これを助けるためにこの図を設定しました。あなたが探しているものが間違っているか間違っている場合は、いつでも更新してください。

                                 iptables
                                     |                   .---------------.
    .-,(  ),-.                       v               port 80             |
 .-(          )-.        port 8080________               |               |
(    internet    )------------>[_...__...°]------------->|      NAS      |
 '-(          ).-'     10.32.25.2    ^   10.32.25.1      |               |
     '-.( ).-'                       |                   |               |
                                     |                   '---------------'
                                     |
                                     |
                                   __  _ 
                                  [__]|=|
                                  /::/|_|

答え1

ついに方法が見つかりました。まず、「外部」ルールを追加する必要があります-i eth1(eth1はWAN接続です)。 2つのルールを追加する必要があります。結局私が得たもの:

iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 8080 -j DNAT --to 10.32.25.2:80
iptables -t nat -A PREROUTING -p tcp --dport 8080 -j DNAT --to 10.32.25.2:80
iptables -t nat -A POSTROUTING -p tcp -d 10.32.25.2 --dport 80 -j MASQUERADE

答え2

また、宛先NATを実行するにはパケット転送を有効にする必要があることに言及することを忘れました。デフォルトでは通常はオフになっているため、iptablesルールは適用されません。次のコマンドを実行してアクティブにできます。

echo 1 > /proc/sys/net/ipv4/ip_forward

答え3

まず転送を許可

echo 1 > /proc/sys/net/ipv4/ip_forward

次に、iptableルールを設定します。

IF=eth1
PORT_FROM=8080
PORT_TO=80
DEST=10.32.25.2
iptables -t nat -A PREROUTING -i $IF -p tcp --dport $PORT_FROM -j DNAT --to $DEST:$PORT_TO
iptables -t nat -A POSTROUTING -p tcp -d $DEST --dport $PORT_TO -j MASQUERADE

たとえば、次の行を配置できます/etc/rc.local。注:Debian jessieがこれを実行可能にし、次の方法でrc.localサービスを有効にしたため

systemctl enable rc-local.service

答え4

まず、転送が有効になっていることを確認する必要があります。

cat /proc/sys/net/ipv4/ip_forward

そうでない場合は1実行してくださいecho 1 > /proc/sys/net/ipv4/ip_forward

10.32.25.1のポート80および443に到着するトラフィックを10.32.25.2のポート80に転送するには、次の規則を使用する必要があります。

iptables -t nat -A PREROUTING -d 10.32.25.1 -p tcp -m multiport --dports 80,443 -j DNAT --to-destination 10.32.25.2:80

関連情報