NetworkTraining Part.3 - careerbeat/dit-ehime GitHub Wiki

iptablesを利用してNATサーバーを構築

クライアントからWebサーバへNATして接続できるか検証

事前準備

仮想マシン インターフェイス
example2.local eth0:192.168.1.2
example.local eth0:192.168.1.1
eth1:192.168.0.30
web.local eth0:192.168.0.45

実習の概要

example2からNATルーターを中継してWebサーバへ接続

クライアント:example2
NATルータ:example
サーバ:web

masquerade_verification_environment2

実行手順(クライアント ⇒ サーバ)

実行手順はNetworkTraining Part.2の知識でカバーできます。
そのため用語の解説等については
NetworkTraining Part.2 まとめを参考にしてください。

①NATルーターでMASQUERADE設定

example# iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -d 192.168.0.0/24 -j MASQUERADE

②iptablesの設定を反映

example# service iptables save

※一時的に設定を変更する場合には必要ではない

③NATの設定を確認

example# iptables -t nat -nL -v

以下のように記載されていれば成功

pkts bytes target     prot opt in     out     source               destination
  1    60 MASQUERADE  all  --  *      *       192.168.1.0/24       192.168.0.0/24

④IP転送の許可

example# vim /etc/sysctl.conf

net.ipv4.ip_forwardのパラメータを1に変更する

net.ipv4.ip_forward = 1
初期の状態ではパラメータが0になっている

sysctl.confの設定を反映する

example# sysctl -p

⑤クライアントのルーティングテーブルに経路を追加

example2# route add default gw 192.168.1.1

routeコマンドを実行して、 ルーティングテーブル内にdefaultがあれば成功
example2# route

⑥サーバのルーティングテーブルに経路を追加

web# route add default gw 192.168.0.30

routeコマンドを実行して、 ルーティングテーブル内にdefaultがあれば成功
web# route

⑦Webサーバの立ち上げ

web# service httpd start

⑧Webサーバーへのアクセス

example2# wget http://192.168.0.45/index.html

※クライアントのブラウザから
"http://192.168.0.45/index.html"
アクセスして確認すると良い

実行手順(サーバ ⇒ クライアント)

①httpの待ち受けポートの変更

example2# vim /etc/httpd/conf/httpd.conf

HTTPの待ち受けポートを80から8080に変更する
Listen 8080

②httpdの再起動

example2# service httpd restart

③NATルータのiptablesを設定

サーバから80ポートで接続した場合に、
8080接続にNATルータが変換できるようにする

example# iptables -t nat -A PREROUTING -s 0.0.0.0/0.0.0.0 -d 192.168.1.0/24 -p tcp --dport 80 -j DNAT --to 192.168.1.2:8080

example# iptables -t nat -A POSTROUTING -s 0.0.0.0/0.0.0.0 -d 192.168.1.0/24 -j MASQUERADE

④iptablesの設定を反映

example# service iptables save

※一時的に設定を変更する場合には必要ではない

⑤クライアントへのアクセス

example2# wget http://192.168.1.2/index.html

※サーバのブラウザから
"http://192.168.1.2/index.html"
アクセスして確認すると良い

⚠️ **GitHub.com Fallback** ⚠️