宛先IPアドレスとポート番号から宛先IPアドレスのNAT

動作確認バージョン:Brocade 5600vRouter Version4.2R1S1
特定の宛先IPアドレスとポート番号に該当する通信を指定のインタフェースで異なるIPアドレスに変換する設定を行います。

サンプル設定のシナリオ

  • 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をしたい
構成図
fw_nat_fig4

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

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に設定

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'
正しく設定が完了したときのコンフィグレーションは次のとおりです。
 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
                                }
                        }
                }
        }
}

動作確認結果

クライアント端末からそれぞれ、192.168.2.50:80と192.168.2.50:1080を宛先にする通信が成功しました。
192.168.3.3と192.168.3.6のWebサーバのアクセスログでアクセスが確認できましたので、宛先IPアドレスとポート番号の組み合わせからのNATも正しく設定できていることが確認できました。
#クライアント端末から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.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)"