NW機器も公開鍵認証でSSH

NW機器もそろそろSSHでアクセスするときは公開鍵認証でやるべきかと思い, 主に触るであろうNW機器の設定をまとめた。

– 鍵準備

SSHで必要となる公開鍵を準備する。

$ ssh-keygen -t rsa -C user01 -f ./rsa_id
$ ls rsa*
rsa_id.pub #公開鍵
rsa_id #秘密鍵

– Cisco IOS

参考: SSH using public key authentication to IOS and big outputs.

1. SSH設定

# conf t
(config)# ip ssh version 2
(config)# line vty 0 4
(config-line)# login local
(config-line)# transport input ssh
(config-line)# hostname R1
(config)# ip domain name test.local
(config)# crypto key gen rsa

2. ユーザと公開鍵紐付け

(config)# ip ssh pubkey-chain
(conf-ssh-pubkey)# username cisco
(conf-ssh-pubkey-user)# key-string
(conf-ssh-pubkey-data)#
※ 最大で貼り付けられる文字数が256字ということで複数行に分けてペーストする。
(conf-ssh-pubkey-data)# exit
(conf-ssh-pubkey-user)# end
#

テスト

$ ssh -l cisco -i ./rsa.id 172.16.1.1
R1>


– VyOS

参考:Remote access

1. SSH設定

set service ssh port '22'

2. ユーザと公開鍵の紐付け認証設定

set system login user user1 authentication public-keys '鍵の識別子' key 'public key内の文字列のみ入力'  #ssh-rsa と ユーザは抜く

3. パスワード認証無効化

set service ssh disable-password-authentication

4. ホストバリデーション無効化(オプション)

set service ssh disable-host-validation

テスト

$ ssh -l user1 -i ./rsa_id 172.16.1.2
Welcome to VyOS

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login:
user1@vyos:~$

– Cisco ASA(9.x)

参考:Cisco ASA シリーズ 9.8 CLI コンフィギュレーション ガイド(一般的な操作)

1. SSH設定

ひとまずOutsideから全許可。

(config)# ssh 0.0.0.0 0.0.0.0 outside

2. 公開鍵のフォーマット変更

公開鍵をRFC4716形式で出力。

$ ssh-keygen  -e -m rfc4716 -f ./rsa_id.pub  # この出力結果を控えておく

3. ユーザと公開鍵の紐付け

(config)# aaa authentication ssh console LOCAL
(config)# username user1 attributes
(config-username)# service-type admin
(config-username) ssh authentication pkf

Enter an SSH public key formatted file.
End with the word "quit" on a line by itself:
### 2で変換したPublic Keyを貼り付ける ###
---- BEGIN SSH2 PUBLIC KEY ----
Comment: "2048-bit RSA, converted by ubuntu@HOST from OpenSSH"
~~~
---- END SSH2 PUBLIC KEY ----
quit

テスト

$ ssh -l user1 -i ./rsa_id 172.16.1.3
User user1 logged in to ASA
Logins over the last 1 days: 2. Last login: 06:54:33 UTC Dec 8 2018 from 192.168.1.10
Failed logins since the last login: 0.
Type help or '?' for a list of available commands.
ASA>

– Cumulus linux

0. NCLU(Network Command Line Utility)インストール

参考:Network Command Line Utility – NCLU
※ ここは省略

1. LinuxのSSH公開鍵認証設定

ホームの.ssh配下のauthorized_keysに公開鍵を登録。

テスト

$ ssh -l cumulus -i ./rsa_id 172.16.1.4

Welcome to Cumulus VX (TM)

Cumulus VX (TM) is a community supported virtual appliance designed for
experiencing, testing and prototyping Cumulus Networks' latest technology.
For any questions or technical support, visit our community site at:
http://community.cumulusnetworks.com

The registered trademark Linux (R) is used pursuant to a sublicense from LMI,
the exclusive licensee of Linus Torvalds, owner of the mark on a world-wide
basis.
Last login: Sat Dec 8 04:45:53 2018 from 192.168.1.10
cumulus@cumulus:~$

– JUNOS

参考:authentication (Login)

1. SSH設定

 set system services ssh protocol-version v2

2. ユーザと公開鍵紐付け

set system login user admin authentication ssh-rsa "ssh-rsa 省略 user01"

テスト

$ ssh -l admin -i ./user2_rsa 172.16.1.5
Last login: Thu Dec 6 18:07:53 2018 from 192.168.1.10
--- JUNOS 15.1X49-D140.2 built 2018-05-25 18:23:50 UTC
admin>

NAT on a stick

例えばNATに対応していない機器(L3SW等)があったとして, それでもNATしなくてはならない場合。
図のようにワンアームでルータをつないでNATボックスとする構成が取れる。

図ではルータのアイコンになっているけれど, R1がNATに対応していないとき

ヘアピンNATやNAT on a Stick と呼ぶらしい。
Ciscoサイトを参照して検証する。
参照URL:スティック上のネットワーク アドレス変換

構成概要

    • 172.16.10.0/24 を172.20.10.0/24 へネットワークNATする。
    • NATポイントはR2。
    • VPC2は172.20.10.0/24のアドレスでアクセスする。

      そのため, R1では必然的にPBRを利用してVPC1の通信をR2へ転送する。

      Config

      ※ 抜粋
      R1 Config

      !
      interface Ethernet0/0
      description to R3
      ip address 192.168.2.1 255.255.255.0
      !
      interface Ethernet0/1
      description to R2
      ip address 10.10.10.1 255.255.255.0
      !
      interface Ethernet0/2
      description to R4
      ip address 192.168.1.1 255.255.255.0
      ip policy route-map PBR
      !
      ip route 172.16.10.0 255.255.255.0 192.168.1.2
      ip route 172.16.20.0 255.255.255.0 192.168.2.2
      ip route 172.20.10.0 255.255.255.0 10.10.10.2
      !
      ip access-list extended PBR
      permit ip 172.16.10.0 0.0.0.255 any
      !
      !
      route-map PBR permit 10
      match ip address PBR
      set ip next-hop 10.10.10.2
      !
      !

      R2 Config

      !
      interface Loopback0
      ip address 1.1.1.1 255.255.255.255
      ip nat outside
      ip virtual-reassembly in
      !
      interface Ethernet0/0
      description to R1
      ip address 10.10.10.2 255.255.255.0
      ip nat inside
      ip virtual-reassembly in
      ip policy route-map NAT
      !
      !
      ip nat inside source static network 172.16.10.0 172.20.10.0 /24 no-alias
      ip route 0.0.0.0 0.0.0.0 10.10.10.1
      ip route 172.20.10.0 255.255.255.0 Ethernet0/0
      !
      ip access-list extended PBR
      permit ip 172.16.10.0 0.0.0.255 any
      permit ip any 172.20.10.0 0.0.0.255
      !
      !
      route-map NAT permit 10
      match ip address PBR
      set interface Loopback0
      !

      パケットフロー
      CiscoルータにおけるNATの処理は公式ページにあるとおり。
      参考:NATの処理順序
      今回関係する箇所を太文字で。

      1. IPSec ACL チェック
      2. 復号化
      3. 入力ACLチェック
      4. 入力レート制限をチェック
      5. 入力アカウンティング
      6. Web キャッシュにリダイレクト
      7. ポリシー ルーティング
      8. ルーティング
      9. Inside から Outside への NAT
      10. クリプト(暗号化用のマップのチェックとマーク)
      11. 出力アクセス リストをチェック
      12. CBAC検査
      13. TCP インターセプト
      14. 暗号化
      15. キューイング
      1. IPSec ACL チェック
      2. 復号化
      3. 入力ACLチェック
      4. 入力レート制限をチェック
      5. 入力アカウンティング
      6. Web キャッシュにリダイレクト
      7. OutsideからInsideへの NAT
      8. ポリシー ルーティング
      9. ルーティング
      10. クリプト(暗号化用のマップのチェックとマーク)
      11. 出力アクセス リストをチェック
      12. CBAC 検査
      13. TCP インターセプト
      14. 暗号化
      15. キューイング

      プチ解説

      @R1
      NAT変換後のアドレスをR2へ向けます。

      ip route 172.16.20.0 255.255.255.0 192.168.2.2

      VPC1からのトラフィックをR2(NATボックス)へ捻じ曲げます。

      interface Ethernet0/2
      description to R4
      ip address 192.168.1.1 255.255.255.0
      ip policy route-map PBR
      !
      !
      ip access-list extended PBR
      permit ip 172.16.10.0 0.0.0.255 any
      !
      !
      route-map PBR permit 10
      match ip address PBR
      set ip next-hop 10.10.10.2

      @R2
      物理IFをinsideに指定します。

      interface Ethernet0/0
      description to R1
      ip address 10.10.10.2 255.255.255.0
      ip nat inside
      ip virtual-reassembly in

      Loopbackをoutsideに指定します。

      interface Loopback0
      ip address 1.1.1.1 255.255.255.255
      ip nat outside
      ip virtual-reassembly in

      NAT設定。IOS15以降はno-aliasが必要です。

      ip nat inside source static network 172.16.10.0 172.20.10.0 /24 no-alias

      global insideのアドレスを自身に持たせるためStatic Routeを物理IFへ指定します。
      が, この構成ではなくてもいけました。(NATの処理フロー見ると不要な気がするんですが未だ理解できず。)

      ip route 172.20.10.0 255.255.255.0 Ethernet0/0

      NAT対象となる通信をPBRでLoopbackインタフェース(outside IF)へ送り込みます。これでinside-outsideに偽装します。

      interface Ethernet0/0
      description to R1
      ip address 10.10.10.2 255.255.255.0
      ip nat inside
      no ip virtual-reassembly in
      ip policy route-map NAT
      !
      !
      ip access-list extended PBR
      permit ip 172.16.10.0 0.0.0.255 any
      permit ip any 172.20.10.0 0.0.0.255
      !
      !
      route-map NAT permit 10
      match ip address PBR
      set interface Loopback0
      !

      通信確認。

      VPCS> ping 172.16.20.1

      84 bytes from 172.16.20.1 icmp_seq=1 ttl=251 time=1.802 ms
      84 bytes from 172.16.20.1 icmp_seq=2 ttl=251 time=3.606 ms
      84 bytes from 172.16.20.1 icmp_seq=3 ttl=251 time=4.168 ms
      84 bytes from 172.16.20.1 icmp_seq=4 ttl=251 time=3.517 ms
      84 bytes from 172.16.20.1 icmp_seq=5 ttl=251 time=3.150 ms


      R2#sh ip nat translations
      Pro Inside global Inside local Outside local Outside global
      icmp 172.20.10.10:28052 172.16.10.10:28052 172.16.20.1:28052 172.16.20.1:28052
      icmp 172.20.10.10:28308 172.16.10.10:28308 172.16.20.1:28308 172.16.20.1:28308
      icmp 172.20.10.10:28564 172.16.10.10:28564 172.16.20.1:28564 172.16.20.1:28564
      icmp 172.20.10.10:28820 172.16.10.10:28820 172.16.20.1:28820 172.16.20.1:28820
      icmp 172.20.10.10:29076 172.16.10.10:29076 172.16.20.1:29076 172.16.20.1:29076
      --- 172.20.10.10 172.16.10.10 --- ---
      --- 172.20.10.0 172.16.10.0 --- ---
      R2#

      VPCS> ping 172.20.10.10

      84 bytes from 172.20.10.10 icmp_seq=1 ttl=59 time=2.539 ms
      84 bytes from 172.20.10.10 icmp_seq=2 ttl=59 time=4.796 ms
      84 bytes from 172.20.10.10 icmp_seq=3 ttl=59 time=5.276 ms
      84 bytes from 172.20.10.10 icmp_seq=4 ttl=59 time=4.397 ms
      84 bytes from 172.20.10.10 icmp_seq=5 ttl=59 time=6.855 ms

      VPCS>

      注意点

      Loopback IFへトラフィックを投げるのでCPU処理に落ちます。
      スループットが気になる場合は物理的に(もしくはトランク等して)2本インタフェースを用意したほうがベター。
      IOS12台と15台でコマンドが若干違うので古いバージョンを使うときは確認しましょう。

      CiscoルータでのVTI+IKEv2設定(NAT越し)~対VyOS編~

      ということで,Cisco~VyOS間でも試した。

      検証した結果わかったことは以下の通り。

      ・VyOS1.1.x台ではVTI+IKEv2ではVPNは張れない。
         いや, 張れるんだけど(Phase2まで上がるんだけど) 疎通が取れない。
      ・EC2のElastic IPで,末尾が0だと(サブネットゼロだと)Cisco側でネットワークアドレスとしてみなされるらくしPhase2で失敗する。(たとえ ip subnet-zero が入っていたとしても)
      <追記>
      ・改めてCisco~VyOS間のトラフィックを確認したら, 正常にトラフィックが流れていないことに気がついた。VyOSからソースIFをVTI指定してのPingでないとトラフィックがトンネルを通らない。Beta版のバグなのかな。
      なので, 現時点ではVPNは張れるがまともに使えないという状況。要調査。

      VyOSのBeta版はこちらからダウンロードする。
      https://downloads.vyos.io/?dir=rolling/current/amd64
      今回のバージョンはvyos-999.201802070337-amd64.iso
      参考までにアップグレード方法を。
      本家にやり方ありますが一応。

      $ conf
      # set system name-server 8.8.8.8 (Google先生スミマセン)
      # commit
      # exit
      $ sudo su
      # wget beta版URL
      # exit
      $ add system image file
      $ show system image
      The system currently has the following image(s) installed:

      1: 999.201802070337- (default boot)
      2: 1.1.8 (running image)
      $ reboot

      これでオッケー。
      なお,設定はVTIのときとほぼ同じで至ってシンプル。

      set interfaces vti vti1 address '10.10.10.1/30'
      ~途中省略~
      set vpn ipsec esp-group ESP compression 'disable'
      set vpn ipsec esp-group ESP lifetime '3600'
      set vpn ipsec esp-group ESP mode 'tunnel'
      set vpn ipsec esp-group ESP pfs 'dh-group14'
      set vpn ipsec esp-group ESP proposal 1 encryption 'aes256'
      set vpn ipsec esp-group ESP proposal 1 hash 'sha256'
      set vpn ipsec ike-group IKE ikev2-reauth 'no'
      set vpn ipsec ike-group IKE key-exchange 'ikev2'
      set vpn ipsec ike-group IKE lifetime '3600'
      set vpn ipsec ike-group IKE proposal 1 dh-group '14'
      set vpn ipsec ike-group IKE proposal 1 encryption 'aes256'
      set vpn ipsec ike-group IKE proposal 1 hash 'sha256'
      set vpn ipsec ipsec-interfaces interface 'eth0'
      set vpn ipsec site-to-site peer B.B.B.B authentication id '10.200.10.20'
      set vpn ipsec site-to-site peer B.B.B.B authentication mode 'pre-shared-secret'
      set vpn ipsec site-to-site peer B.B.B.B authentication pre-shared-secret 'password'
      set vpn ipsec site-to-site peer B.B.B.B authentication remote-id '192.168.1.2'
      set vpn ipsec site-to-site peer B.B.B.B connection-type 'initiate'
      set vpn ipsec site-to-site peer B.B.B.B default-esp-group 'ESP'
      set vpn ipsec site-to-site peer B.B.B.B ike-group 'IKE'
      set vpn ipsec site-to-site peer B.B.B.B ikev2-reauth 'inherit'
      set vpn ipsec site-to-site peer B.B.B.B local-address '10.200.10.20'
      set vpn ipsec site-to-site peer B.B.B.B vti bind 'vti1'
      set vpn ipsec site-to-site peer B.B.B.B vti esp-group 'ESP'

      これでトンネル間の疎通が取れた。

      vyos@VPN1:~$ ping 10.10.10.2 interface vti1 PING 10.10.10.2 (10.10.10.2) from 10.10.10.1 vti1: 56(84) bytes of data. 64 bytes from 10.10.10.2: icmp_seq=1 ttl=255 time=6.92 ms 64 bytes from 10.10.10.2: icmp_seq=2 ttl=255 time=6.86 ms

      ちなみにVyOS1.1.8(以前)の場合,show crypto session や show vpn ipsec sa でステータスがアップになるが,疎通が取れない。VyOS側で確認するとトンネルインタフェースがAdmin Down状態となってしまう。(原因不明)

      vyos@VPN2:~$ sh int vti vti1
      vti1@NONE: mtu 1500 qdisc noqueue state DOWN group default
      link/ipip 10.200.10.20 peer B.B.B.B
      inet 10.10.20.1/30 scope global vti1
      valid_lft forever preferred_lft forever

      RX: bytes packets errors dropped overrun mcast
      0 0 0 0 0 0
      TX: bytes packets errors dropped carrier collisions
      0 0 0 0 0 0

      VyOS1.1.x系はIKEv2に対してはlimited supportということで,今回は現時点で最新のベータバージョンを利用した。

      CiscoルータでのVTI+IKEv2設定(NAT越し)

      EC2にCisco1000vを立て, 自宅とVPNを張る。
      以前, VyOSとでGRE over IPSecVTIと2パターンやったが, 今回はVTI+IKEv2でやる。
      まずはCisco同士でトライ。

      はじめに

      「何故IKEv2でやろうとしたか」
      単純にv2だからより安全なんだろうと思ったから。
      IKEv1と何が違うのかは様々なサイトに詳しく書いてある。
      ・UNIVERGE IXシリーズ FAQ「IKEv2に関するFAQ
      ・Cisco IOS セキュリティ コンフィギュレーション ガ イド「Cisco IOS セキュリティ コンフィギュレーション ガ イドインターネット キー エクスチェンジ バージョ ン 2(IKEv2)の設定
      個人的には設定の可視化レベルがcrypto mapよりは高いと感じた。P1のポリシーもピア毎に指定できるのでこのあたりは便利だと思う。(Site-to-Siteだとあまり恩恵は感じられないかもしれない)

      構成概要

      2台のルータでIPSecをVTI+IKEv2で張る。
      それぞれのルータはNAT越しに通信する。
      鍵交換はPSK。
      暗号化周りはAES256, SHA2-256, DH 14。

      構成概略図

      前提条件

      ・EC2上にインスタンス作成済
      ・そのインスタンスにElastic IP割当済
      ・適切にセキュリティグループは設定済(UDP500・4500は許可等)
      ・自宅のGlobal IPは固定前提
      ・ブロードバンドルータでポートフォワーディング設定済

      設定手順

      Config上から流し込んでいくイメージでOK。
      ・IKEv2のプロポーザル設定
      ・IKEv2のポリシー設定
      ・IKEv2のKey設定
      ・IKEv2のプロファイル設定
      ・トランスフォームセット設定
      ・IPSECプロファイル設定
      ・トンネルインタフェース作成
      ・VTI適用

      いざ設定

      Configを抜粋。
      基本的にこのまま流し込めばOK。

      C841M
      C1000v
      !プロポーザル設定
      crypto ikev2 proposal IKEv2_Proposal
      encryption aes-cbc-256
      integrity sha256
      group 14

      ! ポリシー設定
      crypto ikev2 policy IKEv2_Policy
      proposal IKEv2_Proposal

      !キー設定
      crypto ikev2 keyring IKEv2_Key_Cisco
      peer C1000V
      address A.A.A.A
      pre-shared-key password

      ! プロファイル設定
      crypto ikev2 profile IKEv2_Profile_Cisco
      match identity remote address 10.200.10.12 255.255.255.255
      identity local address 192.168.1.2
      authentication remote pre-share
      authentication local pre-share
      keyring local IKEv2_Key_Cisco
      lifetime 3600

      ! トランスフォームセット設定
      crypto ipsec transform-set IPSEC esp-aes 256 esp-sha256-hmac
      mode tunnel

      ! IPSECプロファイル設定
      crypto ipsec profile VTI_Cisco
      set transform-set IPSEC
      set ikev2-profile IKEv2_Profile_Cisco

      ! Tunnelインタフェース設定
      interface Tunnel1
      ip address 172.16.10.1 255.255.255.0
      tunnel source G0/0
      tunnel mode ipsec ipv4
      tunnel destination A.A.A.A
      tunnel protection ipsec profile VTI_Cisco
      ! プロポーザル設定
      crypto ikev2 proposal IKEv2_Proposal
      encryption aes-cbc-256
      integrity sha256
      group 14

      ! ポリシー設定
      crypto ikev2 policy IKEv2_Policy
      proposal IKEv2_Proposal

      !キー設定
      crypto ikev2 keyring IKEv2_Key_Cisco
      peer C841M
      address B.B.B.B
      pre-shared-key password

      ! プロファイル設定
      crypto ikev2 profile IKEv2_Profile_Cisco
      match identity remote address 192.168.1.2 255.255.255.255
      identity local address 10.1.1.10
      authentication remote pre-share
      authentication local pre-share
      keyring local IKEv2_Key_Cisco
      lifetime 3600

      ! トランスフォームセット設定
      crypto ipsec transform-set IPSEC esp-aes 256 esp-sha256-hmac
      mode tunnel

      ! IPSECプロファイル設定
      crypto ipsec profile VTI_Cisco
      set transform-set IPSEC
      set ikev2-profile IKEv2_Profile_Cisco

      ! Tunnelインタフェース設定
      interface Tunnel1
      ip address 172.16.10.2 255.255.255.0
      tunnel source G0/0
      tunnel mode ipsec ipv4
      tunnel destination B.B.B.B
      tunnel protection ipsec profile VTI_Cisco

      確認

      c1000v#sh crypto ikev2 sa
      IPv4 Crypto IKEv2 SA

      Tunnel-id Local Remote fvrf/ivrf Status
      1 10.1.1.10/4500 B.B.B.B/4500 none/none READY
      Encr: AES-CBC, keysize: 256, PRF: SHA256, Hash: SHA256, DH Grp:14, Auth sign: PSK, Auth verify: PSK
      Life/Active Time: 3600/2111 sec

      IPv6 Crypto IKEv2 SA

      c1000v#sh crypto ipsec sa

      interface: Tunnel1
      Crypto map tag: Tunnel1-head-0, local addr 10.1.1.10

      protected vrf: (none)
      local ident (addr/mask/prot/port): (0.0.0.0/0.0.0.0/0/0)
      remote ident (addr/mask/prot/port): (0.0.0.0/0.0.0.0/0/0)
      current_peer B.B.B.B port 4500
      PERMIT, flags={origin_is_acl,}
      #pkts encaps: 10, #pkts encrypt: 10, #pkts digest: 10
      #pkts decaps: 10, #pkts decrypt: 10, #pkts verify: 10
      #pkts compressed: 0, #pkts decompressed: 0
      #pkts not compressed: 0, #pkts compr. failed: 0
      #pkts not decompressed: 0, #pkts decompress failed: 0
      #send errors 0, #recv errors 0

      local crypto endpt.: 10.1.1.10, remote crypto endpt.: B.B.B.B
      plaintext mtu 1422, path mtu 1500, ip mtu 1500, ip mtu idb GigabitEthernet1
      current outbound spi: 0x3478CA01(880331265)
      PFS (Y/N): N, DH group: none

      inbound esp sas:
      spi: 0x9AF7C1FF(2599928319)
      transform: esp-256-aes esp-sha256-hmac ,
      in use settings ={Tunnel UDP-Encaps, }
      conn id: 2068, flow_id: CSR:68, sibling_flags FFFFFFFF80000048, crypto map: Tunnel1-head-0
      sa timing: remaining key lifetime (k/sec): (4607998/1485)
      IV size: 16 bytes
      replay detection support: Y
      Status: ACTIVE(ACTIVE)

      inbound ah sas:

      inbound pcp sas:

      outbound esp sas:
      spi: 0x3478CA01(880331265)
      transform: esp-256-aes esp-sha256-hmac ,
      in use settings ={Tunnel UDP-Encaps, }
      conn id: 2067, flow_id: CSR:67, sibling_flags FFFFFFFF80000048, crypto map: Tunnel1-head-0
      sa timing: remaining key lifetime (k/sec): (4607999/1485)
      IV size: 16 bytes
      replay detection support: Y
      Status: ACTIVE(ACTIVE)

      outbound ah sas:

      outbound pcp sas:

      c1000v#sh crypto session
      Crypto session current status

      Interface: Tunnel1
      Profile: IKEv2_Profile
      Session status: UP-ACTIVE
      Peer: B.B.B.B port 4500
      Session ID: 6
      IKEv2 SA: local 10.1.1.10/4500 remote B.B.B.B/4500 Active
      IPSEC FLOW: permit ip 0.0.0.0/0.0.0.0 0.0.0.0/0.0.0.0
      Active SAs: 2, origin: crypto map

      以上, お疲れ様でした。

      NAT除外設定

      Cisco IOSでNAT設定を入れている時に,特定のセグメントへの通信のみNATさせずに実アドレスで通信させる設定のメモ。

      単純にaccess-listのPermitの前段に除外したいACLを入れてあげればよいかと思いきや,うまくいかない。
      どうしたらいいかというと,Route-Mapを使う。

      ! ACL設定

      ip access-list extended No_NAT
      deny ip 192.168.1.0 0.0.0.255 192.168.2.0 0.0.0.255
      permit ip 192.168.1.0 0.0.0.255 any

      ! Route-Map設定
      route-map RM_NAT permit 10

      match ip address No_NAT

      ! NAT設定
      ip nat inside source route-map RM_NAT pool VLAN1