web-dev-qa-db-ja.com

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

現在、ポート80でNASボックスを実行しています。外部からNASにアクセスするために、次のようにNASのポート8080をポート80にマッピングしました。

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

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

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

どんな手掛かり?

#1を編集

この質問を容易にするために、私はこの図をまとめました。お探しの情報が間違っていたり、誤って表示されている場合は、遠慮なく更新してください。

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

ようやくハウツーを見つけました。まず、-i eth1私の「外部」ルールに(eth1はmy 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
13
David Bélanger

また、宛先NATを実行できるようにするには、パッケージ転送を有効にする必要があることを忘れていました。デフォルトでは、通常はオフになっているため、iptablesルールは機能しません。次のコマンドを発行して有効にできます。

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

最初に次の転送を許可

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
3
rubo77

最初に、転送がアクティブになっていることを確認する必要があります。

cat /proc/sys/net/ipv4/ip_forward

そうでない場合1、実行echo 1 > /proc/sys/net/ipv4/ip_forward

ポート80および443で10.32.25.1にヒットするトラフィックを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
0
balon