【メモ】VyOSのBeta版(999-xxx) とCiscoのGREについて

CiscoのGRE Tunnel設定にはkeepalive設定がある。ステートレスなGREだけどこれのおかげでCiscoルータではGREの状態を管理できる。

VyOSとよくGRE over IPSecの設定をやるが, このKeepaliveパケットが1.1.7では機能していたのだが, 今出ているBeta版では「martian source ・・・」とメッセージが出て折り返しパケットが破棄される。

なお, VyOSはGREのKeepaliveは対応していないが, CiscoのKeepaliveの仕組みは対向の機器が対応していなくても機能する仕組みとなっている。
参考) CiscoのGRE Keepalive メカニズム
実際, VyOSの1.1.7ではCisco側で設定しても問題ない。

とはいえ, Beta版のVyOSとCiscoルータでGREトンネルをはるときは, Keep Aliveは設定できないので注意が必要です。

パケットフォーマットを見るとたしかに気持ち悪いっちゃー気持ち悪いんだけど, 今の1.1.7で正常に通信できるんだから, 早いとこ対応してほしいのが本音。

【メモ】OSPFにおけるdistribute-listの扱い

今更だけどOSPFでは経路制御は同一エリア内だと受信側で拒否するしかできないのね。
送信でフィルタは掛けられない, 途中のルータで受信拒否してもLSAでアドバタイズされるからその先には伝搬してしまう。このあたり理解できていなかった。

エリアを分けるかプロトコル分けるかなどして再配信じゃないと細かい制御ってできないのね。

簡単な構成で確認した。
R1とR3は普通にOSPFで配信。R2でdistribute-listで192.168系のルートを受信拒否。
R2で拒否すればその先へもルート情報は流れないだろうなーなんて安易に思っていました。OSPFとdistribute-listのこと理解できていませんでした。さーせん。

ルータ3台でOSPFでルーティングさせる

・R1のConfig

interface FastEthernet0/0
ip address 172.16.10.1 255.255.255.0
duplex auto
speed auto
!
interface FastEthernet0/1
ip address 192.168.10.1 255.255.255.0
duplex auto
speed auto
!
interface FastEthernet1/0
ip address 192.168.20.1 255.255.255.0
duplex auto
speed auto
!
router ospf 1
log-adjacency-changes
network 172.16.10.0 0.0.0.255 area 10
network 192.168.10.0 0.0.0.255 area 10
network 192.168.20.0 0.0.0.255 area 10
!

・R2のConfig

interface FastEthernet0/0
ip address 172.16.10.2 255.255.255.0
duplex auto
speed auto
!
interface FastEthernet0/1
ip address 172.16.20.1 255.255.255.0
duplex auto
speed auto
!
router ospf 1
log-adjacency-changes
network 172.16.0.0 0.0.255.255 area 10
distribute-list Deny_OSPF in
!
ip forward-protocol nd
!
!
no ip http server
no ip http secure-server
!
ip access-list standard Deny_OSPF
deny 192.168.0.0 0.0.255.255
permit any

・R3のConfig

interface FastEthernet0/0
ip address 172.16.20.2 255.255.255.0
duplex auto
speed auto
!
interface FastEthernet0/1
ip address 192.168.30.1 255.255.255.0
duplex auto
speed auto
!
interface FastEthernet1/0
ip address 192.168.40.1 255.255.255.0
duplex auto
speed auto
!
router ospf 1
log-adjacency-changes
network 172.16.20.0 0.0.0.255 area 10
network 192.168.30.0 0.0.0.255 area 10
network 192.168.40.0 0.0.0.255 area 10

それぞれのルーティングテーブルを見ると

R1#sh ip route 
Codes: C - connected, S - static, R - RIP, M - mobile, B - BGP
D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
E1 - OSPF external type 1, E2 - OSPF external type 2
i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
ia - IS-IS inter area, * - candidate default, U - per-user static route
o - ODR, P - periodic downloaded static route

Gateway of last resort is not set

O 192.168.30.0/24 [110/30] via 172.16.10.2, 00:10:34, FastEthernet0/0
C 192.168.10.0/24 is directly connected, FastEthernet0/1
O 192.168.40.0/24 [110/21] via 172.16.10.2, 00:10:34, FastEthernet0/0
172.16.0.0/24 is subnetted, 2 subnets
O 172.16.20.0 [110/20] via 172.16.10.2, 00:13:10, FastEthernet0/0
C 172.16.10.0 is directly connected, FastEthernet0/0
C 192.168.20.0/24 is directly connected, FastEthernet1/0
R2#sh ip route 
Codes: C - connected, S - static, R - RIP, M - mobile, B - BGP
D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
E1 - OSPF external type 1, E2 - OSPF external type 2
i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
ia - IS-IS inter area, * - candidate default, U - per-user static route
o - ODR, P - periodic downloaded static route

Gateway of last resort is not set

172.16.0.0/24 is subnetted, 2 subnets
C 172.16.20.0 is directly connected, FastEthernet0/1
C 172.16.10.0 is directly connected, FastEthernet0/0
R3#sh ip route 
Codes: C - connected, S - static, R - RIP, M - mobile, B - BGP
D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
E1 - OSPF external type 1, E2 - OSPF external type 2
i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
ia - IS-IS inter area, * - candidate default, U - per-user static route
o - ODR, P - periodic downloaded static route

Gateway of last resort is not set

C 192.168.30.0/24 is directly connected, FastEthernet0/1
O 192.168.10.0/24 [110/30] via 172.16.20.1, 00:11:22, FastEthernet0/0
C 192.168.40.0/24 is directly connected, FastEthernet1/0
172.16.0.0/24 is subnetted, 2 subnets
C 172.16.20.0 is directly connected, FastEthernet0/0
O 172.16.10.0 [110/20] via 172.16.20.1, 00:11:22, FastEthernet0/0
O 192.168.20.0/24 [110/21] via 172.16.20.1, 00:11:22, FastEthernet0/0

R2だけがルーティングテーブルに192.168系が載っていない。

設計時に経路制御とかしっかり盛り込んでおかないとあとから「やべっ!できねーじゃん」ってなるね。

スパツリとVLANの話

Elasticsearchやるやる詐欺になりつつ今日このごろ。ネットワークの基本中の基本, L2の話でハマったというか今更ながらに理解したことがあったので記録しとく。

スイッチ3台でRSTP+PVSTで三角形の構成を組んだんだけど, うち上位の1台の機器が作業範囲じゃなかったので構成がさっぱりわからなかった。
ベンダーも違うので, 情報が全く出てこないという責任区分できっぱりと情報も切れてしまっている現場でのこと。

STPに関してはこちら側でコントロールするように, 色々値をいじったけど2つあるうち, 1つのVLANが想定外のポートがブロッキングになった。
show spanning-tree ~~~で探ってみると, どーも対向がTransparentになっているっぽい。VLAN分けてないのかよ!とか思ったけど, ログ持ち帰ってSTPやBPDUについて新手眼て調べるとアクセスポートにしているためVLAN認識しないってのがわかった。

そらそうか。って思うんだけどVLANタグはトランクポートでしか付与されないよねとか, ポートVLANは対向のVLAN設定なんて意識しないよねとか, あまり気にせずにいたところで躓いたのでやっぱ基礎はしっかりせないかんよねと思いましたとさ。

ちょっとわかりづらいけど, 図かいて残しとく。

transparentの機器をHUBで代用。
2つのVLANがある構成。

設計上, VLAN10はSW AがRootBridge, VLAN20はSW BがRoot Bridgeになってほしい

BPDUの動きをおっていく①

BPDUの動きをおっていく②

BPDUの動きをおっていく③

STP動かすときは接続機器の設定はしっかり手に入れておくべきよね。
(本来どのケースでもそうなんでしょうけどね・・・)

メモ) AristaのvEOSをESX6で動かすとき

vmdkファイルをthickへ変換しないとESX6では動かない模様。

参考)Tip for Arista vEOS on VMware ESX 6

ESXへログインして以下コマンドでvmdkファイルをthinからthickへ変更する。

#  vmkfstools -i ./vEOS-lab-4.16.6M-s001.vmdk -d eagerzeroedthick
./vEOS-lab-4.16.6M-s001-thick.vmdk

で,あとはこのディスクをアタッチしてisoからbootすれば無事に起動。

完全にCiscoライクね

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’

インフラの勉強にあたり

さて,インフラエンジニアとして今後もやっていくべく改めてスキルアップを図ろうと昨日から準備を始めたわけだが思いの外時間がかかっている。

やったこと

古いPCを持ちだして再セットアップ。
余っているDiskを増設してESXをインストール。
ここでまず躓く。
ESXの条件は
・64ビットCPU
・2G以上のRAM
・NICが1個必要
などなど,ググれば詳細が出てくるんだが,NICが鬼門だった。
引っ張り出してきたマザーボードはASUSのP5KPL-AM EPUなんだが,このオンボードNICがAtheros製らしい。ESXは基本的にIntel以外のNICは標準では認識せず,インストール時に「おまえ,NIC無いからやり直しな」って弾かれる。
Realtekなら有志達がカスタムOSやらドライバを作っていたりしたんだが,Atheros L1Eってのがどうしても見つからなかった。
やむなくアマゾンにてIntel製の安いPCI NICを調達した。

かったのはこれ

で,本日ようやくインストールまで終え,次はVMにCentOSを入れて色々試す土台を作るところに来ている。

簡単に環境を書くとこんな感じ。
うちはL3SWが1台あるのでこれで外-DMZ-LANと分けている。

設計としてはESXのManagementポートはLANのセグメント。VMは外に公開できるようにDMZのセグメントを割り当てるようにしたい。

つーことで,NIC1枚しか持っていない我がマシンはL3との接続をTrunkにしてやる必要がある。

各セグメントでは適宜ACLを設定する

SW側のインタフェースはTrunk。カプセル方式はdot1qじゃないとだめ。
ESX側はManagement用のNWにVLANを指定してやればOK。
特にここは迷わない。

これは至ってシンプル
できればNICは分けたかったけど予算的に無理

さて,あとはCentOS7入れてOwnCloudとか入れて遊んでみるか。

あ,そもそも勉強するぞ!と心に決めたRubyの環境も入れな・・・。