AWS上のVyosと家のC841とでIPSecを試す~VTI編~

VTIでも設定したのでメモ・・・。

ACLいらないし, GRE分のオーバーヘッド(24バイト)も減るしこっちのほうがなんかいいかも。
# IP以外のプロトコルなんてあんま使わないしな。

 ■ MTU
#sh int tu1
Tunnel1 is up, line protocol is up
  Hardware is Tunnel
  Internet address is 192.168.48.234/29
  MTU 17862 bytes, BW 100 Kbit/sec, DLY 50000 usec,
     reliability 255/255, txload 1/255, rxload 1/255
  Encapsulation TUNNEL, loopback not set
  Keepalive set (5 sec), retries 3
  Tunnel linestate evaluation up
  Tunnel source 192.168.1.2 (Vlan100), destination 52.196.175.0
   Tunnel Subblocks:
      src-track:
         Tunnel1 source tracking subblock associated with Vlan100
          Set of tunnels with source Vlan100, 1 member (includes iterators), on interface <OK>
  Tunnel protocol/transport IPSEC/IP
  Tunnel TTL 255
  Tunnel transport MTU 1422 bytes
  Tunnel transmit bandwidth 8000 (kbps)
  Tunnel receive bandwidth 8000 (kbps)
  Tunnel protection via IPSec (profile “VTI”)
  Last input 19:27:49, output 18:54:11, output hang never
  Last clearing of “show interface” counters 3d17h
  Input queue: 0/75/0/0 (size/max/drops/flushes); Total output drops: 330
  Queueing strategy: fifo
  Output queue: 0/0 (size/max)
  5 minute input rate 0 bits/sec, 0 packets/sec
  5 minute output rate 0 bits/sec, 0 packets/sec
     12728 packets input, 1119256 bytes, 0 no buffer
     Received 0 broadcasts (0 IP multicasts)
     0 runts, 0 giants, 0 throttles
     0 input errors, 0 CRC, 0 frame, 0 overrun, 0 ignored, 0 abort
     68893 packets output, 4199880 bytes, 0 underruns
     0 output errors, 0 collisions, 0 interface resets
     0 unknown protocol drops
     0 output buffer failures, 0 output buffers swapped out
 permit ip host 172.16.1.1 host 172.16.1.2

以下, Config抜粋。

■ Cisco 抜粋
!
crypto isakmp policy 5
 encr aes 256
 hash sha256
 authentication pre-share
 group 14
 lifetime 3600
crypto isakmp key aws address A.A.A.A  255.255.255.255
crypto isakmp keepalive 30 30
!
!
crypto ipsec transform-set IPSEC esp-aes 256 esp-sha256-hmac 
 mode tunnel
!
crypto ipsec profile VTI
 set transform-set IPSEC
 set pfs group14

!
!
!
interface Tunnel1
 ip address 192.168.254.1 255.255.255.0
 ip mtu 1422   ! ← いらないかも。 不要でした。 ※
 ip ospf network broadcast
 ip ospf hello-interval 5
 keepalive 5 3
 tunnel source Vlan100
 tunnel mode ipsec ipv4
 tunnel destination A.A.A.A
 tunnel protection ipsec profile VTI

!
interface Vlan100
 ip address 192.168.1.2 255.255.255.0
 ip virtual-reassembly in
!
!
!
router ospf 1
 network 192.168.10.0 0.0.0.255 area 0
 network 192.168.254.0 0.0.0.255 area 0
!
!
ip access-list extended AWS_GRE
!
 permit ip host 172.16.1.1 host 172.16.1.2

※ VTIはMTUを自動計算するから設定は不要(Ciscoのページ参照

■ Vyos 抜粋
set interfaces loopback lo address ‘172.16.1.2/32’
set interfaces vti vti1 address ‘192.168.48.233/29’
set interfaces vti vti1 ip ospf dead-interval ’20’
set interfaces vti vti1 ip ospf hello-interval ‘5’
set interfaces vti vti1 ip ospf network ‘broadcast’
set interfaces vti vti1 ip ospf priority ‘1’
set interfaces vti vti1 ip ospf retransmit-interval ‘5’
set interfaces vti vti1 ip ospf transmit-delay ‘1’
set interfaces vti vti1 mtu ‘1422’

set protocols ospf area 0 network ‘192.168.254.0/24’
set protocols ospf area 0 network ‘10.10.20.0/24′
set protocols ospf log-adjacency-changes ‘detail’
set protocols static route 0.0.0.0/0 next-hop 10.10.10.1 distance ‘1’
—-
set vpn ipsec esp-group ESP_AWS compression ‘disable’
set vpn ipsec esp-group ESP_AWS lifetime ‘3600’
set vpn ipsec esp-group ESP_AWS mode ‘tunnel’
set vpn ipsec esp-group ESP_AWS pfs ‘enable’
set vpn ipsec esp-group ESP_AWS proposal 1 encryption ‘aes256’
set vpn ipsec esp-group ESP_AWS proposal 1 hash ‘sha256’
set vpn ipsec ike-group IKE_AWS dead-peer-detection action ‘hold’
set vpn ipsec ike-group IKE_AWS dead-peer-detection interval ’30’
set vpn ipsec ike-group IKE_AWS dead-peer-detection timeout ‘120’
set vpn ipsec ike-group IKE_AWS lifetime ‘3600’
set vpn ipsec ike-group IKE_AWS proposal 1 dh-group ’14’
set vpn ipsec ike-group IKE_AWS proposal 1 encryption ‘aes256’
set vpn ipsec ike-group IKE_AWS proposal 1 hash ‘sha256’
set vpn ipsec ipsec-interfaces interface ‘eth0’
set vpn ipsec logging log-modes ‘all’
set vpn ipsec nat-traversal ‘enable’
set vpn ipsec site-to-site peer Global IP authentication mode ‘pre-shared-secret’
set vpn ipsec site-to-site peer Global IP authentication pre-shared-secret ‘aws’
set vpn ipsec site-to-site peer Global IP authentication remote-id ‘192.168.1.2’
set vpn ipsec site-to-site peer Global IP connection-type ‘respond’
set vpn ipsec site-to-site peer Global IP ike-group ‘IKE_BB’
set vpn ipsec site-to-site peer Global IP ikev2-reauth ‘inherit’
set vpn ipsec site-to-site peer Global IP local-address ‘10.200.10.50’
set vpn ipsec site-to-site peer Global IP vti bind ‘vti1’
set vpn ipsec site-to-site peer Global IP vti esp-group ‘ESP_BB’

トンネル張った後に, 「OSPFでネイバーがーーー」ってなったけどMTUサイズがあっていなかったから。合わせればState Fullになる。

AWS上のVyosと家のC841とでGRE over IPSecを試す

ちょっとやりたいことあってAWSとIPSec張りたいなと。

構成はこんな。

OSPFは別にいらないんだけど,折角なんでダイナミックルーティングをまわしてみる。

簡単にいけるかなーとも思ったけどかなりハマった。双方NAT配下で家のほうはさらにグローバルはDHCP割当で変わるわPATだからNAT-Tやらなきゃだとか,まーいろいろ気にするポイントがあった。

けど,無事につながりました。
大きくハマった点は以下2つ。

・CiscoのIPSec用ACLでgre指定だとNG。ip 指定で解消。
・Vyosのremote-idでCiscoの実IPを入れてあげる。

Vyosはわかるんだが,CiscoのACLはなんでだ。わからん・・・。

VTIとかでやればACL不要だからいいのかと思ったが,これはこれでハマったので又今度。

Try&Errorをひたすら試すはめになりました。
いい勉強させていただきました。

■ Cisco 抜粋
!
crypto isakmp policy 5
 encr aes 256
 hash sha256
 authentication pre-share
 group 14
 lifetime 3600
crypto isakmp key aws address A.A.A.A  255.255.255.255
crypto isakmp keepalive 30 30
!
!
crypto ipsec transform-set IPSEC esp-aes 256 esp-sha256-hmac 
 mode tunnel

!
!
crypto map GRE_IPSEC 10 ipsec-isakmp 
 set peer A.A.A.A
 set transform-set IPSEC 
 set pfs group14
 match address AWS_GRE
!
!
!
!
interface Loopback1
 ip address 172.16.1.1 255.255.255.255
!
interface Tunnel1
 ip address 192.168.254.1 255.255.255.0
 ip mtu 1400
 ip tcp adjust-mss 1360
 ip ospf network broadcast
 ip ospf hello-interval 5
 keepalive 5 3
 tunnel source Loopback1
 tunnel destination 172.16.1.2
!
interface Vlan100
 ip address 192.168.1.2 255.255.255.0
 ip virtual-reassembly in
 crypto map GRE_IPSEC
!
!
!
router ospf 1
 network 192.168.10.0 0.0.0.255 area 0
 network 192.168.254.0 0.0.0.255 area 0
!
!
ip access-list extended AWS_GRE
!
 permit ip host 172.16.1.1 host 172.16.1.2
■ Vyos 抜粋
set interfaces loopback lo address ‘172.16.1.2/32’
set interfaces tunnel tun1 address ‘192.168.254.2/24’
set interfaces tunnel tun1 encapsulation ‘gre’
set interfaces tunnel tun1 ip ospf dead-interval ’20’
set interfaces tunnel tun1 ip ospf hello-interval ‘5’
set interfaces tunnel tun1 ip ospf priority ‘1’
set interfaces tunnel tun1 ip ospf retransmit-interval ‘5’
set interfaces tunnel tun1 ip ospf transmit-delay ‘1’
set interfaces tunnel tun1 local-ip ‘172.16.1.2’
set interfaces tunnel tun1 mtu ‘1400’
set interfaces tunnel tun1 multicast ‘enable’
set interfaces tunnel tun1 remote-ip ‘172.16.1.1’
set protocols ospf area 0 network ‘192.168.254.0/24’
set protocols ospf area 0 network ‘10.10.20.0/24′
set protocols ospf log-adjacency-changes ‘detail’
set protocols static route 0.0.0.0/0 next-hop 10.10.10.1 distance ‘1’
—-
set vpn ipsec esp-group ESP_AWS compression ‘disable’
set vpn ipsec esp-group ESP_AWS lifetime ‘3600’
set vpn ipsec esp-group ESP_AWS mode ‘tunnel’
set vpn ipsec esp-group ESP_AWS pfs ‘enable’
set vpn ipsec esp-group ESP_AWS proposal 1 encryption ‘aes256’
set vpn ipsec esp-group ESP_AWS proposal 1 hash ‘sha256’
set vpn ipsec ike-group IKE_AWS dead-peer-detection action ‘hold’
set vpn ipsec ike-group IKE_AWS dead-peer-detection interval ’30’
set vpn ipsec ike-group IKE_AWS dead-peer-detection timeout ‘120’
set vpn ipsec ike-group IKE_AWS lifetime ‘3600’
set vpn ipsec ike-group IKE_AWS proposal 1 dh-group ’14’
set vpn ipsec ike-group IKE_AWS proposal 1 encryption ‘aes256’
set vpn ipsec ike-group IKE_AWS proposal 1 hash ‘sha256’
set vpn ipsec ipsec-interfaces interface ‘eth0’
set vpn ipsec logging log-modes ‘all’
set vpn ipsec nat-traversal ‘enable’
set vpn ipsec site-to-site peer 0.0.0.0 authentication mode ‘pre-shared-secret’
set vpn ipsec site-to-site peer 0.0.0.0 authentication pre-shared-secret ‘aws’
set vpn ipsec site-to-site peer 0.0.0.0 authentication remote-id ‘192.168.1.2’
set vpn ipsec site-to-site peer 0.0.0.0 connection-type ‘respond’
set vpn ipsec site-to-site peer 0.0.0.0 ike-group ‘IKE_AWS’
set vpn ipsec site-to-site peer 0.0.0.0 local-address ‘10.10.10.50’
set vpn ipsec site-to-site peer 0.0.0.0 tunnel 1 esp-group ‘ESP_AWS’
set vpn ipsec site-to-site peer 0.0.0.0 tunnel 1 local prefix ‘172.16.1.2/32’
set vpn ipsec site-to-site peer 0.0.0.0 tunnel 1 remote prefix ‘172.16.1.1/32’

GRE

interface tunnel **

ではデフォルトでtunnel mode gre ip ですってよ。
えぇ,今日知りましたよ。えぇ・・・今までぜんっぜん意識していませんでしたよ。
どーせ最近はVTIでしょ。
※ VTIも同じ

Cisco IOS バナー小技

最近知ったんだけど,バナーにホスト名を入れたい時に変数使えるのね。
常識なのかしら・・・。
設定で入れるのはHostnameを入れたいところに$(hostname)を入れるだけ。

///////////////////////////////////////////////
     Model         C841M-4X-JSEC/K9
     Hostname   $(hostname)
///////////////////////////////////////////////

H/WのシリアルNoも出せるとキッティングの時すげー楽になるね。
このやり方は知らない。出来ないかなぁ。

Ciscoのページを見る限り出来ないのね。残念。

C841のスループット測定

C841のスループットは公称値では片方向で985Mbpsだそうな。
上り下りの双方向で1.9Gbppsということらしい。(パケットサイズは1400byte)
参考) Ciscoサポートコミュニティより

NetMiつかって簡単に調べてみた。

測定条件は次の通り。
プロトコル:UDP
通信方向:PC→(C841を超えて)ブロードバンドルータ
送信時間:30秒
パケットサイズ:64byte/500byte/1000byte/1400byteの4パターン
その他:NAT無し/有りの2パターン
計8パターン試した。

結果は次の通り。

バイト・ビット換算間違えていました orz

ギガビットのインタフェースなのに1G以上出ているのはスルーするとして, パケットサイズによってではあるが, 1Gはちゃんと出るようだ。さすがに最小パケットだと60Mbpsくらいまで落ち込むようね。まぁ, 十分だけど。

ちなみにPPSで見ると,
NAT無しで3.5Mpps程度
NAT有りで2Mpps程度
となるようだ。

NAT無しで28Mpps -> 23kpps (今更ですが2019年11月訂正)
NAT有りで21Mpps -> 11kpps

NATの有無で通信効率が3.5割程度落ち込む感じ。

まぁ, 性能的には十分だね。

ちなみに, NAT有り無しの状態のC841のCPU状態をみると, NAT有りだと100%張り付いていた。

                                                               
      666999999999999999999999999933333                        
      666777775555577777555557777777777777775555555555555555555566
  100    *************************                              
   90    *************************                              
   80    *************************                              
   70 ****************************                              
   60 ****************************                              
   50 ****************************                              
   40 *********************************                        
   30 *********************************                        
   20 *********************************                        
   10 ************************************************************
     0….5….1….1….2….2….3….3….4….4….5….5….6
               0    5    0    5    0    5    0    5    0    5    0
               CPU% per second (last 60 seconds)

プロセスは「COLLECT STAT COU」というのがガッツリ上がっていた。
なんだろ。

NAT無しだと問題ない。

      555555555555555556666666666555556666655555555556666655555555
  100                                                          
   90                                                          
   80                                                          
   70                                                          
   60                                                          
   50                                                          
   40                                                          
   30                                                          
   20                                                          
   10 ************************************************************
     0….5….1….1….2….2….3….3….4….4….5….5….6
               0    5    0    5    0    5    0    5    0    5    0
               CPU% per second (last 60 seconds)

家庭内NW再構築

C841Mが来たところで, 家のネットワークも再構築しますか・・・と。

C841を頭にして, その下にL2SWを配置。もともとこれL3だからもったいない気もするけど, C841が来た時点で用途としてはAPへの給電のみとなってしまった。

ゲートウェイは全てC841に持たせるため, できればC841~C3560C間はチャネルで組みたかったがルータ側が対応していないので断念。(コマンドは入るんだけど, きっとこの機種もモジュール刺さないとダメなんだろう)

ってか, ルータってことでNATでLAN内に用途ごとに複数セグメント持たせたのはいいけど, WANへのスループットが明らかに落ちている・・・。
えーーーブロードバンド測定サイトでC841経由と無しとで300Mbpsくらい差が出るんですけど。(800~900Mbps出ていたのが, 350~400Mbpsまで落ちた)
測定中, C841のCPU利用率が跳ね上がり, ほぼ100%に・・・。
NATごときでこんなに影響でるもんなのか・・・。
試しにC841でNAT無しの状態で測定すると, 結構改善された。
これはこれで嫌だなぁ。C3560と立ち位置逆転させてスループット確保する構成へ変えるか?

今日のところはとりあえずC841の設定はこんな感じにした。
Gig0/0~0/3はイーサモジュール扱いで裏でのバス接続が弱いと踏んで, 使うのはWANインタフェースに限定した。
ってか, 業務じゃないんだからそこまで気にする必要があるかと言われるとノーですけどね。

   100 : interface GigabitEthernet0/4
   101 :  ip address 192.168.1.2 255.255.255.0
   102 :  ip nat outside
   103 :  ip virtual-reassembly in
   104 :  duplex auto
   105 :  speed auto
   106 : !
   107 : interface GigabitEthernet0/5
   108 :  description to local-poe-sw G0/10
   109 :  no ip address
   110 :  duplex auto
   111 :  speed auto
   112 : !
   113 : interface GigabitEthernet0/5.10
   114 :  description VLAN10(192.168.10.0/24)
   115 :  encapsulation dot1Q 10
   116 :  ip address 192.168.10.1 255.255.255.0
   117 :  ip nat inside
   118 :  ip virtual-reassembly in
   119 : !
   120 : interface GigabitEthernet0/5.20
   121 :  description VLAN20(192.168.20.0/24)
   122 :  encapsulation dot1Q 20
   123 :  ip address 192.168.20.1 255.255.255.0
   124 :  ip nat inside
   125 :  ip virtual-reassembly in
   126 : !
   127 : interface GigabitEthernet0/5.30
   128 :  description VLAN30(192.168.30.0/24)
   129 :  encapsulation dot1Q 30 native
   130 :  ip address 192.168.30.1 255.255.255.0
   131 : !
   132 : interface Vlan1
   133 :  no ip address
   134 :  shutdown
   135 : !
   136 : interface Vlan2
   137 :  no ip address
   138 : !
   139 : interface Vlan3
   140 :  no ip address
   141 : !
   142 : ip forward-protocol nd
   143 : no ip http server
   144 : no ip http secure-server
   145 : !
   146 : !
   147 : ip nat translation timeout 1800
   148 : ip nat translation tcp-timeout 1800
   149 : no ip nat service skinny tcp port 2000
   150 : ip nat pool VLAN10 192.168.1.10 192.168.1.49 prefix-length 24
   151 : ip nat pool VLAN20 192.168.1.50 192.168.1.99 prefix-length 24
   152 : ip nat inside source list NAT_V10 pool VLAN10
   153 : ip nat inside source list NAT_V20 pool VLAN20
   154 : ip route 0.0.0.0 0.0.0.0 192.168.1.1
   155 : !
   156 : ip access-list extended NAT_V10
   157 :  permit ip 192.168.10.0 0.0.0.255 any
   158 : ip access-list extended NAT_V20
   159 :  permit ip 192.168.20.0 0.0.0.255 any
   160 : !

C841M到着

届きました。
注文から2日で。

かなりコンパクトですね。

いざ開梱!

卓上カレンダーを比較対象にするとわかるコンパクトさ加減
891FJの半分ですね。奥行き分が無い感じ

同梱物は電源アダプタのみ
コンソールケーブルやケーブルは無し

いやー大分小さいね。890シリーズと同じかと思っていたわ。寸法表見てなかったわw
4.4 X 34.3 X 17.5 cmって書いてありますね。

あとコレ,ルータだけど電源スイッチないのね。Catalystと同じで電源さすと自動でON。
まぁいいけど。

インストールされてきたIOSは
C800M Software (C800M-UNIVERSALK9-M), Version 15.5(1)T1, RELEASE SOFTWARE (fc2)
イメージファイルは c800m-universalk9-mz.SPA.155-1.T1.bin
でした。

IOSが15.5ということでNATに関するコレにヒットするからNATするときは念のためskinnyのデフォルト設定にも注意しておく必要があるのか。まぁ,基本関係ないけど。

さて,今日はこの程度にして明日以降設定するか・・・。

Cisco Start

キャンペーンつーことで・・・買ってしまった・・・。

Cisco841M/JF ISR
http://nttxstore.jp/cisco_start.asp?LID=cisco_start_150916top

アンケートに答えると12000円引きで3万弱で手に入るギガビットルータ。
確かに安いわ。これでIOSいじれるのであれば買いだろう。

期間限定らしいので早めの方がいいかもね
ってか, もっと他に買うものあるだろう・・・

ちなみにCisco Startの公式ページはここ

とりあえず一番安いCisco 841M Advanced Security モデル C841M-4X-JSEC/K9にしたけど, まぁ十分でしょう。Cat3560CだとNATが使えないから困っていたんだよね。

splunkでCiscoのACLのログをウォッチする

せっかくSplunk入れていて, あんまし有用なログが取れない自宅の環境で, なんかみたいな~とおもい, CiscoのL3にACLきってSyslogに吐き出させて, アクセス先を見てみることにした。

やることは簡単。
1. ACLを書く@IOS
2. Data Inputにて
読み込むログファイルを指定する@Splunk
以上。
ほんとこれだけでいけるのだから簡単。

こんな感じで見れておもろい

ただ, ちょっと躓いたところがあったのでメモ。

1.プロトコルレベルで見たいなら, ACLはちゃんとIOSがポート番号までチェックするように記述すべし。

ただ単に,

ip access-list extended ToInternet
 permit ip any any log
!

なんて書くと, Syslog上にTCPのポート番号が載らなくて, Splunkではサービスまで掘り下げられない。
たぶん, ルールにTCPのポート番号まで記載がないとチェックしないんだと思う。このままだとSyslog上はポート番号「0」(送信元/宛先共に)でのってしまってIPだけしか解析できない。

なので
ip access-list extended ToInternet
 permit tcp any eq 0 any
 permit ip any any log
!

とするなどしてACL上TCPのポート番号も見るようにしないと意図した結果を得られない。

EtherChannelをShutdownするとき

今更EhterChannelのインタフェースをShutかけたりするときの動きがあいまいになったから今一度整理した。 G0/1とG0/2でChannelGroup1で束ねるとする。 設定をひと通り終るとこうなる。

■1. 正常状態

G0/1 G0/2 Po1
up up up

ここで論理IFであるPo1をShutかけると, Po1に引きずられて束ねられている物理IFもShut状態になる。Config上もShutdownが入る。

■2. Po1をShutすると

G0/1 G0/2 Po1
shut shut up → shut

さらに, この状態から物理IFのどちらか一方に「no shut」すると, Po1もUPになる。

■3-1. G0/1にno shut

G0/1 G0/2 Po1
shut → up shut up

■3-2. G0/2にno shut

G0/1 G0/2 Po1
shhut shut → up up
Po1をShutした状態(2)からno shutかけると, 物理IFも(全て)no shutになる(upになる)。

■4. Po1をno shut

G0/1 G0/2 Po1
up up shut →up
唯一論理IFに物理IFが引きずられないケースがこれ。
論理IFを触らず, 物理IFだけをshutした場合。

■5. 物理IFがShut状態

G0/1 G0/2 Po1
shut shut down
このときはPo1はshutではなく, downの状態。
なので, この時にPo1にno shutとかしてもダメ。
ただし, この状態でPo1にshut→no shutとすると, ■4の状態に該当するため物理IFもupとなる。

まぁ, あまり気にしなくてもいいのかもしれないけどね。とりあえずこんな動きしまっせと。