• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:iptablesでアドレス変換したい)

iptablesでアドレス変換したい

このQ&Aのポイント
  • iptablesの勉強中でアドレス変換ができず行き詰っています。
  • 実験環境で192.168.10.10と192.168.10.20のアドレス変換を実現したい。
  • 設定スクリプトを実行してもアクセスできない問題が発生しています。

質問者が選んだベストアンサー

  • ベストアンサー
  • anmochi
  • ベストアンサー率65% (1332/2045)
回答No.1

一度IPアドレスを整理して貰えませんか。 Mannakaの、Server1側のアドレスが192.168.10.10なのか192.168.10.100なのか。 Mannakaの、Server2側のアドレスが192.168.10.20なのか192.168.10.200なのか。 仮にアドレスが以下だった(つまり100と200が正しい)として (192.168.20.100) Server1――          |          |―(eth1)Mannaka(eth0)―――PCs(192.168.10.X)          | (eth0=192.168.10.10)Mannaka IP Server2――  (eth1=192.168.20.10)Mannaka IP (192.168.20.200)          ---            (eth0:1=192.168.10.100)Server1 IP            (eth0:2=192.168.10.200)Server2 IP スクリプトを以下のように直した時、 #!/bin/sh service iptables restart echo 1 > /proc/sys/net/ipv4/ip_forward iptables -F iptables -P INPUT ACCEPT iptables -P FORWARD ACCEPT iptables -P OUTPUT ACCEPT iptables -t nat -A PREROUTING -d 192.168.10.100 -j DNAT --to 192.168.20.100 iptables -t nat -A PREROUTING -d 192.168.10.200 -j DNAT --to 192.168.20.200 iptables -t nat -A POSTROUTING -s 192.168.20.100 -j SNAT --to 192.168.10.100 iptables -t nat -A POSTROUTING -s 192.168.20.200 -j SNAT --to 192.168.10.200 PCsからつながらなければその理由はおそらくServer1とServer2のルーティングテーブルだ。 なぜかと言うと、PCsは192.168.10.100や192.168.10.200と通信していると思っているが、 Server1とServer2はPCsと直接通信していると思っているからだ。 PCsで192.168.10.50っていうIPアドレスのパソコンQが192.168.10.100の80番にアクセスすると、 MannakaでDNATされてServer1に行くよね。 その時、Qは192.168.10.100-192.168.10.50間でやり取りしているように見えるけど、 Server1は192.168.20.100-192.168.10.50間でやり取りしているように見えている。 なので、192.168.10.0/24へのルートが分からないと通信ができない。 後、最終的にはFORWARDのポリシーをDROPにするつもりなのだろうけど、その場合は iptables -A FORWARD -d 192.168.20.100 -j ACCEPT iptables -A FORWARD -s 192.168.20.100 -j ACCEPT iptables -A FORWARD -d 192.168.20.200 -j ACCEPT iptables -A FORWARD -s 192.168.20.200 -j ACCEPT とする。 PCsから行く方はFORWARDチェーンに入る段階では 先に通ったPREROUTINGチェーンでデスティネーションが192.168.10.100から192.168.20.100に書き換わっているからだ。 Server1から帰る方もFORWARDでフィルタされた後でPOSTROUTINGでソースが192.168.20.100から192.168.10.100に書き換わるので192.168.20.100の方を使う。 ただし、この場合PCsに192.168.20.100へのルーティングテーブルを追加されてping 192.168.20.100されると通っちゃうので注意。

pouta
質問者

お礼

ご回答ありがとうございます。とてもわかりやすくて、自分が見落としていたところがすぐにわかりました。記していただいた例とご指摘の点を修正したところ、無事意図したとおりの動きになりました。まだまだ先は長いので今後もここで質問させてもらうことになると思いますが、もし見かけたらぜひまたご指南ください。

関連するQ&A