送信元IPアドレスのNAPTと宛先IPアドレス と ポート番号からの宛先IPアドレスのNAT の組み合わせ設定

動作確認バージョン:Brocade 5600vRouter Version4.2R1S1

サンプル設定のシナリオ

  • 192.168.2.6から宛先192.168.2.50のTCPポート80番あての通信は192.168.3.3を宛先にしたい
  • 192.168.2.6から宛先192.168.2.50のTCPポート1080番あての通信は192.168.3.6を宛先にしたい
  • インタフェース(dp0s5)に入力するトラフィックに対して宛先NATをしたい
  • 送信元IPアドレス192.168.2.0/24を送信元にするパケットをNAPTしたい
  • インタフェース(dp0s6)から出力されるパケットはNAPT変換にしたい
構成図
Fig5-1

シナリオにおける設定のながれ

  • 宛先IPアドレスとポート番号の組み合わせのNAT設定
1.アドレス変換対象であるIPアドレス(192.168.2.50)とポート80番あてのNATルールを10で設定
2.インタフェース(dp0s5)に入力するトラフィックに対して適用
3.TCPに通信を変換対象に指定
4.変換後の宛先IPアドレスは、192.168.3.3に設定
5.アドレス変換対象であるIPアドレス(192.168.2.50)とポート1080番あてのNATルールを11で設定
6.インタフェース(dp0s5)に入力するトラフィックに対して適用
7.TCPに通信を変換対象に指定
8.変換後の宛先IPアドレスは、192.168.3.6に設定
  • 送信元IPアドレスに対するNAPT設定
1.送信元IPを変換するためのNATルール名を10に設定する
2.NAPT対象のIPアドレス(192.168.2.0/24)を設定する
3.NAPTを実行する際の出力インタフェースを指定する
4.変換後がNAPTである設定(masquerade)を実施する

CLIにて入力するコマンド

set service nat destination rule 10 destination address '192.168.2.50'
set service nat destination rule 10 destination port '80'
set service nat destination rule 10 inbound-interface 'dp0s5'
set service nat destination rule 10 protocol 'tcp'
set service nat destination rule 10 translation address '192.168.3.3'
set service nat destination rule 11 destination address '192.168.2.50'
set service nat destination rule 11 destination port '1080'
set service nat destination rule 11 inbound-interface 'dp0s5'
set service nat destination rule 11 protocol 'tcp'
set service nat destination rule 11 translation address '192.168.3.6'
set service nat source rule 10 source address '192.168.2.0/24'
set service nat source rule 10 outbound-interface 'dp0s6'
set service nat source rule 10 translation address 'masquerade'
正しく設定が完了したときのコンフィグレーションは次のとおりです。
service {
        nat {
                destination {
                        rule 10 {
                                destination {
                                        address 192.168.2.50
                                        port 80
                                }
                                inbound-interface dp0s5
                                protocol tcp
                                translation {
                                        address 192.168.3.3
                                }
                        }
                        rule 11 {
                                destination {
                                        address 192.168.2.50
                                        port 1080
                                }
                                inbound-interface dp0s5
                                protocol tcp
                                translation {
                                        address 192.168.3.6
                                }
                        }
                }
                source {
                        rule 10 {
                                outbound-interface dp0s6
                                source {
                                        address 192.168.2.0/24
                                }
                                translation {
                                        address masquerade
                                }
                        }
                }
        }
}

動作確認結果

クライアント端末からそれぞれ、192.168.2.50:80と192.168.2.50:1080を宛先にする通信が成功しました。
192.168.3.3と192.168.3.6のWebサーバのアクセスログでアクセスが確認できましたので、宛先IPアドレスとポート番号の組み合わせからのNATも正しく設定できていることが確認できました。
またサーバのアクセスログを確認すると、いずれも192.168.3.5からのアクセスが確認できるため、インタフェース(dp0s6)にて送信元IPアドレスをNAPT変換も正しく実行できていることが確認できました。
##クライアント端末から192.168.2.50:80 宛ての通信 → OK

test@ubu01:~$ wget -O - http://192.168.2.50/ > /dev/null
--2016-07-29 13:57:07--  http://192.168.2.50/
192.168.2.50:80 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 200 OK
長さ: 616 [text/html]
`STDOUT' に保存中

100%[========================================================================================================================================================================================================>] 616         --.-K/s   時間 0s

2016-07-29 13:57:07 (166 MB/s) - stdout へ出力完了 [616/616]

test@ubu01:~$

 #クライアント端末から192.168.2.50:1080宛ての通信 → OK

test@ubu01:~$ wget -O - http://192.168.2.50:1080/ > /dev/null
--2016-07-29 13:57:16--  http://192.168.2.50:1080/
192.168.2.50:1080 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 200 OK
長さ: 616 [text/html]
`STDOUT' に保存中

100%[========================================================================================================================================================================================================>] 616         --.-K/s   時間 0.02s

2016-07-29 13:57:16 (33.8 KB/s) - stdout へ出力完了 [616/616]

#192.168.3.3のWebサーバのアクセスログを確認

test@web1:~$ tail /usr/local/nginx/logs/access.log

192.168.2.6 - - [26/Jul/2016:11:29:10 +0900] "GET / HTTP/1.1" 200 616 "-" "Wget/1.15 (linux-gnu)" "-"
192.168.2.6 - - [29/Jul/2016:10:50:25 +0900] "GET / HTTP/1.1" 200 616 "-" "Wget/1.15 (linux-gnu)" "-"
192.168.3.5 - - [29/Jul/2016:10:53:59 +0900] "GET / HTTP/1.1" 200 616 "-" "Wget/1.15 (linux-gnu)" "-"
192.168.3.5 - - [29/Jul/2016:11:40:57 +0900] "GET / HTTP/1.1" 200 616 "-" "Wget/1.15 (linux-gnu)" "-"
192.168.3.5 - - [29/Jul/2016:13:46:16 +0900] "GET / HTTP/1.1" 200 616 "-" "Wget/1.15 (linux-gnu)" "-"
192.168.3.5 - - [29/Jul/2016:13:57:06 +0900] "GET / HTTP/1.1" 200 616 "-" "Wget/1.15 (linux-gnu)" "-"


#192.168.3.6のWebサーバのアクセスログを確認

test@web2:~$ tail /usr/local/nginx/logs/access.log

192.168.3.5 - - [29/Jul/2016:13:57:27 +0900] "GET / HTTP/1.1" 200 616 "-" "Wget/1.15 (linux-gnu)"