ネットワークにアドレス変換は欠かせない機能になっています。
IPCOMにもアドレス変換を行う設定がいくつかありますが、それぞれ役割が違うので理解した上で設定する必要があります。
この記事では、
- IPCOMでアドレス変換をしたい
- IPCOMでアドレス変換設定のコマンドを知りたい
- IPCOMのアドレス変換が正しくできているか調べたい
そんな方に読んでもらいたいです。
すぐNATコマンドを作成したい方はこちらのNATコマンド作成ツールを試してください。
NATの役割
最初にNAT(アドレス変換)の役割について説明します。
知っているという方は読み飛ばしてください。
NATの一般的な使い方としては、インターネット接続時の送信元IP変換で利用しています。
もしインターネットの接続にNATが無い場合・・
最新のニュースを見せて!
ニュースを見たいんだね。サーバに依頼を送るね。
いいよ!でも、あなたはどこにいるの?
応答がない・・タイムアウトだ。
WEBページを指定してアクセスを試みるとパケットは宛先サーバに届きますが、戻りの結果が返ってきません。
なので失敗してしまいます。
なぜかというと、パソコンにはプライベートアドレスが設定されています。
プライベートアドレスはどこで誰が使ってもいいアドレスなので、インターネットからは誰のプライベートアドレスか分からないので戻ってこれません。
そこで送信元IPアドレスをグローバルIPに変換する事で、戻りの結果を受け取り通信が成立します。
最新のニュースを見せて!
あなたはプライベートアドレスだから、送信元をグローバルアドレスに変えてサーバに依頼を送るね
いいよ!グローバルアドレスだからニュースを送るね。
ニュースが届いたよ。グローバルアドレスからプライベートアドレスに戻してお届けします。
ニュースが見れました。
通信の間にIPCOMが入る事でNATを行い目的の通信ができました。
また、サーバ側では宛先NATを使っています。
サーバも実際にはプライベートアドレスが割り当てられています。
グローバルアドレスに届いたパケットの宛先をプライベートアドレスに変換して、実際のサーバに届くようにしています。
もちろんサーバ自体にグローバルアドレスを設定してもいいですが、管理上都合がよくないのでこのような使われ方をしています。
このように普段の通信からNATが利用されています。
NATの設定コマンド
IPCOMでNATを設定するコマンドは全部で6つあります。
- src-nat ・・送信元IPアドレス変換
- static-src-nat ・・送信元IPアドレス変換(組み合わせ固定)
- src-napt ・・送信元IPアドレス&ポート変換
- dst-nat ・・送信先IPアドレス変換
- static-dst-nat ・・送信先IPアドレス変換(組み合わせ固定)
- dst-napt ・・送信先IPアドレス&ポート変換
このコマンドはIPCOMログイン後に、管理モード、設定モード、設定の読み込み、インタフェースの指定を行った後に入力できます。
IPCOM>admin Password:xxxx←表示はされませんがここでadminのパスワードを入力 IPCOM#configure ←設定モードに変更 IPCOM(config)#load running-config ←実行中の設定を読み込み IPCOM(edit)#interface channel0 ←NATを設定したいインタフェースを指定 IPCOM(edit-if)#←この状態で入力していきます。
送信元IPアドレスを変更するsrc系のコマンドはパケットが出ていくインタフェースを指定して、送信先IPアドレスを変更するdst系のコマンドはパケットが入ってくるインタフェースを指定します。
送信元IPアドレス変換のコマンド
①インタフェースを指定する
IPCOM(edit)#interface channel0
②NATコマンドを使い変換前のIPアドレスと変換後のIPアドレスを設定する
IPCOM(edit-if)#rule src-nat 100 1.1.1.1 to 2.2.2.2 set-org-ip
この設定によって送信元1.1.1.1から送られたパケットは送信元2.2.2.2になって宛先へ届きます。
送信元IPアドレス変換を行う場合、出ていくインタフェースを指定します。
ちなみにこの設定だと1.1.1.1の一人しかアドレス変換されません。
たとえ送信元IPアドレスをネットワークに変えたとしても、先着1名しかアドレス変換されません。
rule src-nat 100 1.1.1.0/24 to 2.2.2.2 set-org-ip
複数のIPを1つのIPに変換したい場合はこの後に紹介する「送信元IPアドレス&ポート変換」を使用します。
送信元IPアドレス変換(組み合わせ固定)のコマンド
①インタフェースを指定する
IPCOM(edit)#interface channel0
②NATコマンドを使い変換前のクラスマップと変換後のIPアドレスを設定する
IPCOM(edit-if)#rule static-src-nat 100 1.1.1.1-1.1.1.2 to-range-start 2.2.2.2 set-org-ip
変換前、変換後のIPアドレスをクラスマップは使わず直接NATコマンドの後ろに書くことができます。
変換前IPアドレスを1.1.1.1から1.1.1.2の2つを指定しているので、変換後IPアドレスは2.2.2.2から2.2.2.3になります。
また、組み合わせが変わることはありません。
- 1.1.1.1 →2.2.2.2
- 1.1.1.2 →2.2.2.3
送信元IPアドレス変換を行う場合、出ていくインタフェースを指定します。
送信元IPアドレス&ポート変換のコマンド
①クラスマップで変換前の送信元IPアドレスを設定する
IPCOM(edit)#class-map match-any natlist1
IPCOM(edit-cmap)#match source-address ip 1.1.1.0/24
IPCOM(edit-cmap)#exit
②インタフェースを指定する
IPCOM(edit)#interface channel0
③NATコマンドを使い変換前のクラスマップと変換後のIPアドレスを設定する
IPCOM(edit-if)#rule src-napt 100 natlist1 to 100.1.1.1 1024-65535
送信元IPアドレス&ポートを変換する場合は、変換前のIPアドレスはクラスマップというアドレスをまとめて名前を付ける機能を使います。
変換後のIPアドレスはクラスマップは使わず直接NATコマンドの後ろに書くことができます。
この設定によって送信元1.1.1.1から送られたパケットは送信元100.1.1.1でポートは1024から65535のどれかになって宛先へ届きます。
宛先がインターネットの場合は変換後のIPはグローバルIPにしてください。
インターネットに繋がるインタフェースの場合、100.1.1.1をautoとすると、インタフェースのIPアドレスに自動で設定されます。
rule src-napt 100 natlist1 to auto 1024-65535
ここでいうインタフェースのIPアドレスとはchannel0のIPアドレスなので下記設定の100.1.1.1になります。
IPCOM(edit)#interface channel0 IPCOM(edit-if)#ip address 100.1.1.1 255.255.255.240
送信元IPアドレス変換を行う場合、出ていくインタフェースを指定します。
送信先IPアドレス変換のコマンド
①インタフェースを指定する
IPCOM(edit)#interface channel1
②NATコマンドを使い変換前のクラスマップと変換後のIPアドレスを設定す
IPCOM(edit-if)#rule dst-nat 100 3.3.3.3 to 4.4.4.4
この設定によって送信先3.3.3.3から送られたパケットは送信先4.4.4.4になって宛先へ届きます。
変換前・変換後のIPアドレスはクラスマップは使わず直接NATコマンドの後ろに書くことができます。
送信先IPアドレス変換を行う場合、入ってくるインタフェースを指定します。
送信先IPアドレス変換のコマンド(組み合わせ固定)
①インタフェースを指定する
IPCOM(edit)#interface channel1
②NATコマンドを使い変換前のクラスマップと変換後のIPアドレスを設定す
IPCOM(edit-if)#rule dst-nat 100 3.3.3.3-3.3.3.4 to 4.4.4.4
この設定によって送信先3.3.3.3から送られたパケットは送信先4.4.4.4になって宛先へ届きます。
変換前・変換後のIPアドレスはクラスマップは使わず直接NATコマンドの後ろに書くことができます。
送信先IPアドレス変換を行う場合、入ってくるインタフェースを指定します。
変換前IPアドレスを3.3.3.3から3.3.3.4の2つを指定しているので、変換後IPアドレスは4.4.4.4から4.4.4.5になります。
また、組み合わせが変わることはありません。
- 3.3.3.3 →4.4.4.4
- 3.3.3.4 →4.4.4.5
送信先IPアドレス&ポート変換のコマンド
①インタフェースを指定する
IPCOM(edit)#interface channel1
②NATコマンドを使い変換前IPアドレス&ポートと変換後IPアドレス&ポートを設定する
IPCOM(edit-if)#rule dst-napt 100 100.1.1.1 80 tcp to 1.1.1.1 8080
変換前・変換後のIPアドレスはクラスマップは使わず直接NATコマンドの後ろに書くことができます。
この設定によって送信先100.1.1.1のポート80に送られたパケットは送信先1.1.1.1のポート8080になって宛先へ届きます。
送信元がインターネットの場合は変換前のIPはグローバルIPにしてください。
インターネットに繋がるインタフェースの場合、100.1.1.1をautoとすると、インタフェースのIPアドレスに自動で設定されます。
rule dst-napt 100 auto 80 tcp to 1.1.1.1 8080
ここでいうインタフェースのIPアドレスとはchannel0のIPアドレスなので下記設定の100.1.1.1になります。
IPCOM(edit)#interface channel1 IPCOM(edit-if)#ip address 100.1.1.1 255.255.255.240
送信先IPアドレス変換を行う場合、入ってくるインタフェースを指定します。
NATコマンド毎に指定できる条件
設定した経験があっても指定条件が独特なので、NATタイプ毎に一覧化しました。
IPアドレスの指定方法とポートの指定方法について2つに分けました。
まずはIPアドレスの指定方法の一覧です。
変換前IPの指定 | 変換後IPの指定 | ||||||
クラスマップ | IP単体 | IP範囲 | auto | IP単体 | IP範囲 | auto | |
src-nat | ○ | ○※3 | ○※1※3 | – | ○ | ○※1 | – |
static-src-nat | ○ | ○※3 | ○※3 | – | ○※2 | – | – |
src-napt | ○ | – | – | – | ○ | ○※1 | ○ |
dst-nat | – | ○ | – | – | ○ | – | – |
static-dst-nat | – | ○ | ○ | – | ○※2 | – | – |
dst-napt | – | ○ | – | ○ | ○ | – | – |
変換後の指定にクラスマップを使うことはできません。
※1 10.0.0.0/24形式で指定可能です。
※2 指定自体はアドレス単体ですが、実際には変換前のアドレス範囲と同じ個数連番で使用します。
※3 NATコマンド行の最後に「set-org-ip」を指定する必要があります。
次にポートの指定方法の一覧です。
変換前ポートの指定 | 変換後ポートの指定 | |||
単体 | 範囲 | 単体 | 範囲 | |
src-napt | △※1 | △※1 | ○ | ○ |
dst-napt | ○ | – | ○ | – |
※1 NAT定義としては設定できませんが、クラスマップで指定する事ができます。
ここまでNATの設定コマンド説明しました次の項目でNATの確認コマンドを紹介します。
通信パターン毎にNATを使い分ける
ここまで説明しましたが、やはりNATは分かりにくいです。
どのNATを使うべきか迷う方には、通信パターンと用途で推奨するNATモードを表にしたので参考にしてください。
通信方向(セキュリティレベル) | 変換数上限無し | 戻り通信のポートが変わる※1 |
クライアント(高)→サーバ(低) | src-napt | src-nat |
サーバ(高)→サーバ(低) | – | static-src-nat |
クライアント(低)→サーバ(高) | dst-napt | dst-nat |
サーバ(低)→サーバ(高) | static-dst-nat |
※1 FTPのActiveモードは戻り通信の宛先ポートがランダムになるのでここに該当します。
この表では表現していませんが、アドレスが重複してしまうローカルネットワーク間を接続する場合は、NATを組み合わせる事で送信元IPと送信先IPそれぞれをNAT変換する事もできます。
設定を保存する
設定が終わったら保存しましょう。
保存するコマンド
IPCOM(edit)#save Do you overwrite "running-config" by the current configuration? (y|[n]):y ←yを入力 Do you update "startup-config" for the restarting system? (y|[n]):y ←yを入力
この表示が出ればOK
The configuration was committed and saved to startup-config.
編集モードを終了しておきます。
IPCOM(edit)#end
クラスター(装置冗長化)の場合は同期コマンドも実行します。
IPCOM#sync cluster Thes System:primary primary ("設定日の日付") -> secondary("前回設定日の日付") Are you sure? (y|[n]):y ←yを入力
同期処理のログが沢山出力されますが、
最後にこの表示が出ればOKです。
[INFO]The synchronization was completed.
NATの確認コマンド
NATの状態を確認するコマンドは2つあります。
コマンド実際に変換されているIPアドレスを見る
show nat address
表示される内容
interface channel0 rule 100 type src-nat protocol tcp orginal 1.1.1.1 translated 100.1.1.1 peer 200.9.9.9
これは1つの変換情報の例ですが、実際に変換されている数だけ表示されます。
コマンド変換の統計情報を見る
show nat statistics
表示される内容
interface now maximum max-time rule:type no-res channel0 1 100 2022/5/20(Fri)00:00:00 - -
これは現在1件変換中で過去最大100件変換があった事を表しています。
no-resは変換するアドレスが足りずにNATが失敗した事を表します。
アドレス変換不足はsrc-natで発生するのでこのカウントがある場合は、変換後IPアドレスが十分に確保されているか設定を見直しましょう。
IPCOMのshowコマンドについてはこちらの記事でまとめています。
関連情報
アクセス制御ルールとの併用について
もちろん併用はできます。
注意したいのはアクセス制御ルールで許可するアドレスです。
IPCOMはパケットを受け取ると、
- アクセス制御ルールで破棄対象かチェック
- NAT変換
この順番で処理します。
なのでアクセス制御ルールには変換前のアドレスで設定しましょう。
戻り通信、反対からの通信について
行きの通信が始まった時点でNAT変換情報が作成され、通信が完了するまで情報は残ります。
なので戻り用にNATの設定を2重に行う必要はありません。
反対からの通信は、基本的にはできません。
ですが、行きの通信が完了するまではNAT変換情報があるので反対から新たに通信を開始しても通る可能性があります。
これはアクセス制御ルールと似ていますが、戻り通信を自動で識別する機能が反対から新たに発生した通信も戻りの通信と誤認して通してしまう事と同じです。
不確定な要素が多いので、反対からも通信を開始する可能性がある場合は、2重になりますがNATの設定を入れるべきです。
ネットワークはどうやって覚える?
ネットワークといっても基本用語が分からないと都度ネットで調べたりして時間がかかってしまいます。基礎から学ぶと実際のネットワークを見た時に、その構成の理由を理解できるようになります。
無料でやるならネット上の学習サイトを参考にするといいです。
こちらはネットワークの基礎から説明している無料のWEBサイトになります。
>>基礎から学べるWEBサイトを見てみる
実際に使われるコマンドなど実戦形式で覚えたい方はCCNAの学習をおススメします。
私もこのWEBサイトで勉強して資格を取りました。
>>CCNA学習用WEBサイトを見てみる
過去にネットでの学習でつまずいた方には専門書をオススメします。
本なら基礎から学べる事はもちろん、読者視点で分かりやすい解説になっています。
一人で集中してコツコツ進めたい方は書籍を試してください。
本ではわからない所が多すぎたり、誰かに質問したい場合はオンラインスクールを見てみましょう。
カウンセリングから目的に応じた学習プランと教材を提供してくれるので、ネットワークを覚える敷居がとても低くなります。
誰かに相談できるのは心強いです。
>>ネットワークの基本資格CCNAのオンラインスクールを見てみる
まとめ
NATを設定するコマンド6種類の説明と、NATの確認方法を紹介しました。
NATを使うとどうしてもネットワークが複雑になってしまいます。
問題があった時に対処できるように動きを十分理解しておきましょう。
NATコマンドを簡単に作成するツールを作ったので試してみてください。
IPCOMの設定を行っている方にはこちらの記事もおすすめです。