Cisco C841M-4X-JSECを買ってみた話とハマった点
Cisco StartシリーズのC841M-4X-JSECが1万円ちょっとで衝動買いしてしまったので自宅のネットワーク機器のリプレースをしました。
Ciscoのネットワーク機器を触るのは初めてで、コンフィグ等いろいろ慣れない点があり思いっきりハマってしまい1日無駄にした点もあったのでメモとして残しておきます。
設定項目
- ギガイーサ5のポートを使用してPPPoEでプロバイダに接続する
プロバイダの都合でipv6 IPoEが使用出来ないので、ipv6 PPPoEでipv6でインターネットに出れるようにします。 - (ひかり電話ルーターとONU部分を分離させているので) ひかり電話が使用できるようNGNから来るipv4のパケットだけひかり電話ルーター側にブリッジする
フレッツ光ネクスト (ひかり電話あり) 回線において、ひかり電話と自前の設備を IPoE IPv6 的な意味で仲良くさせる - diary.sorah
素直にPPPoEブリッジ等設定していればこんな事をする必要はないと思います。(上記ページ参照)ちなみにひかり電話ルーターはギガイーサ4のポートに繋ぎました。 - Zone Based Firewallを使用してファイアウォールを構築する
- WAN側のIPに着信したTCP443ポート宛の通信はすべて192.168.0.110のサーバに転送するようにNATを調整&FWに穴を開ける
- 外からのPING要求を無視するようにする(応答しないようにする)
- 管理画面から統計情報が見れるみたいなので見れるようにする。
要らないなら無効化してもいいでしょう。flow monitor [monitorname]あたりの設定です。 - ギガイーサ0のポートはタグVLAN対応のスイッチに接続する
ハマったポイント
ipv6 cefが有効になっているとipv6の外向きの通信がなぜか50%ぐらいパケットロスする
supportforums.cisco.com
どうやらIOS側のipv6 CEFのバグ疑惑があるので、no ipv6 cef
で回避。ちなみにipv4のCEFに関しては問題ありませんでした。
ipv6環境にてWindows Updateが走らなくなる
Windows Updateのログを確認するとアップデートを配信しているCDNに繋げなくてエラーになっている模様。
(正確には接続は確立できるが、それ以降の通信がまったくできない状態になる)
確認するとPMTUD Black Holeにより通信できなくなっていたようなので、ルーター側でTCP MSS Clampingをすることにより解決しました。
本来ならICMPv6パケット(Packet too bigメッセージ)が送出され、MSS値が調整されるはずですが、このパケットがフィルタされてしまい届かないことによりこのような現象が起こることがあるようです。
TCPの場合、3way handshakeの段階で自分が受け取れる最大のセグメントサイズを通知することが出来るので、Dialerインタフェース側に通知する設定を加えることで解決しました。
interface Dialer2 ipv6 mtu 1454 ipv6 tcp adjust-mss 1394
ルーターがWAN側からのping要求に対して応答しないようにZone Based Firewallを調整したはずなのに応答してしまう
下記のコンフィグのように、外→内のルールでping要求をdropするようにしていますが、何故かルーターがpingの要求に対して応答してしまうようになっていました。
ip access-list extended v4acldeny permit icmp any any echo ! ipv6 access-list v6acldeny permit icmp any any echo-request ! class-map type inspect match-any pub-priv-deny-cmap match access-group name v4acldeny match access-group name v6acldeny ! policy-map type inspect pub-priv-policy class type inspect pub-priv-deny-cmap drop class type inspect pub-priv-cmap inspect class class-default drop ! zone-pair security pub-priv source public destination private service-policy type inspect pub-priv-policy !
ルーター本体はself
に属するので、以下のコンフィグを追加することで解決。
zone-pair security pub-pub source public destination self service-policy type inspect pub-priv-policy
native vlanに指定したVLANがスイッチ側でタグを付けると使えない(疎通しない)
(当たり前なのかもしれませんが) untaggedに指定したVLANはタグ付きで使用することはできないようです。
(いくらスイッチ側でタグを付けようがルーター側で破棄されるようです)
デフォルト設定ではVLAN1がuntaggedに設定されるので、VLAN1を使わないようにして対処しました。
コンフィグ
hostname akane ! ! logging buffered 51200 warnings ! ! ip dhcp excluded-address 192.168.0.1 ip dhcp excluded-address 192.168.3.1 ! ip dhcp pool vlan2-dhcp network 192.168.0.0 255.255.255.0 default-router 192.168.0.1 dns-server 8.8.8.8 8.8.4.4 ! ip dhcp pool vlan3-dhcp network 192.168.3.0 255.255.255.0 default-router 192.168.3.1 dns-server 8.8.8.8 8.8.4.4 ! ! ! no ip domain lookup ip domain name akane.local ip cef ipv6 source-route ipv6 flowset ipv6 unicast-routing no ipv6 cef ipv6 dhcp pool vlan2-dhcpv6 dns-server 2001:4860:4860::8888 dns-server 2001:4860:4860::8844 ! ! ! flow record nbar-appmon match ipv4 source address match ipv4 destination address match application name match interface output match ipv6 source address match ipv6 destination address match interface input collect counter bytes collect counter packets collect timestamp absolute first collect timestamp absolute last collect application http host ! ! flow monitor application-mon cache timeout active 60 record nbar-appmon ! ! ! ! vtp mode transparent username matsuri privilege 15 secret 5 hogepassword ! redundancy ! ! ! ! ! vlan 2-3 no cdp run ! ! class-map type inspect match-any pub-priv-deny-cmap match access-group name v4acldeny match access-group name v6acldeny class-map type inspect match-any priv-pub-cmap match protocol tcp match protocol udp match protocol ident match protocol icmp class-map type inspect match-any pub-priv-cmap match access-group name v4alist match access-group name v6alist ! policy-map type inspect priv-pub-policy class type inspect priv-pub-cmap inspect class class-default drop policy-map type inspect pub-priv-policy class type inspect pub-priv-deny-cmap drop class type inspect pub-priv-cmap inspect class class-default drop ! zone security public zone security private zone-pair security priv-pub source private destination public service-policy type inspect priv-pub-policy zone-pair security pub-priv source public destination private service-policy type inspect pub-priv-policy zone-pair security pub-pub source public destination self service-policy type inspect pub-priv-policy ! ! ! ! ! bridge crb ! ! ! ! interface GigabitEthernet0/0 switchport mode trunk no ip address ! interface GigabitEthernet0/1 switchport trunk native vlan 2 switchport mode trunk no ip address ! interface GigabitEthernet0/2 switchport trunk native vlan 2 switchport mode trunk no ip address ! interface GigabitEthernet0/3 switchport trunk native vlan 2 switchport mode trunk no ip address ! interface GigabitEthernet0/4 no ip address duplex auto speed auto bridge-group 1 bridge-group 1 input-type-list 200 ! interface GigabitEthernet0/5 no ip address duplex auto speed auto ipv6 dhcp client pd ngnprefix pppoe enable group global pppoe-client dial-pool-number 2 pppoe-client dial-pool-number 1 bridge-group 1 ! interface Vlan1 no ip address ! interface Vlan2 ip address 192.168.0.1 255.255.255.0 ip nat inside ip virtual-reassembly in zone-member security private no autostate ipv6 address ocnprefix ::1:1/64 ipv6 enable ipv6 nd other-config-flag ipv6 nd ra interval 10 ipv6 dhcp server vlan2-dhcpv6 ipv6 virtual-reassembly in ! interface Vlan3 ip address 192.168.3.1 255.255.255.0 ip nat inside ip virtual-reassembly in zone-member security private no autostate ! interface Dialer1 mtu 1454 ip address negotiated ip flow monitor application-mon input ip flow monitor application-mon output ip nat outside ip virtual-reassembly in zone-member security public encapsulation ppp ip tcp adjust-mss 1414 dialer pool 1 dialer idle-timeout 0 dialer-group 1 ppp authentication chap callin ppp chap hostname hogehoge@hoge.ne.jp ppp chap password 0 hogehogepassword ppp ipcp dns request accept no cdp enable ! interface Dialer2 mtu 1454 no ip address ip flow monitor application-mon input ip flow monitor application-mon output zone-member security public encapsulation ppp ip tcp adjust-mss 1414 dialer pool 2 dialer idle-timeout 0 dialer-group 2 ipv6 address autoconfig ipv6 enable ipv6 mtu 1454 no ipv6 nd ra suppress ipv6 tcp adjust-mss 1394 ipv6 dhcp client pd hint ::/0 ipv6 dhcp client pd ocnprefix ipv6 virtual-reassembly in ppp authentication chap callin ppp chap hostname hogehoge@ipv6.hoge.ne.jp ppp chap password 0 hogehogepassword ppp ipcp dns request accept no cdp enable ! ip forward-protocol nd ip http server ip http upload enable path flash: ip http upload overwrite ip http access-class 1 ip http authentication local ip http secure-server ip http timeout-policy idle 60 life 86400 requests 10000 ! ! ip nat inside source list 1 interface Dialer1 overload ip nat inside source static tcp 192.168.0.110 443 interface Dialer1 443 ip nat inside source list 2 interface Dialer1 overload ip route 0.0.0.0 0.0.0.0 Dialer1 permanent ip ssh version 2 ! ip access-list extended v4acldeny permit icmp any any echo ip access-list extended v4alist permit tcp any host 192.168.0.110 eq 443 ! dialer-list 1 protocol ip permit dialer-list 2 protocol ipv6 permit ipv6 route ::/0 Dialer2 ! ! access-list 1 permit 192.168.0.0 0.0.0.255 access-list 2 permit 192.168.3.0 0.0.0.255 access-list 23 permit 10.10.10.0 0.0.0.127 access-list 200 deny 0x86DD 0x0000 access-list 200 permit 0x0000 0xFFFF ! ipv6 access-list v6acldeny permit icmp any any echo-request ! ipv6 access-list v6alist permit icmp any any bridge 1 protocol ieee ! vstack ! line con 0 login local no modem enable length 0 line vty 0 4 access-class 1 in privilege level 15 login local length 0 transport input telnet ssh line vty 5 15 access-class 1 in privilege level 15 login local length 0 transport input telnet ssh ! scheduler allocate 20000 1000 ! end