背景
Ciscoのルーターを使ってSite-to-Site VPNを構築する方法はたくさん出てくるのですが、個人レベルでも購入できるCisco 800Mシリーズのルーターを使ってVPNを構築したいと思いました。
ここでは一般家庭によくあるフレッツPPPoE接続でVPNを構築すべく、いろいろと苦労した上に接続できた記録を残しておきます。
※ネットワークエンジニアじゃありませんので素人がやってると思ってください。
※おかしな点、セキュリティ上マズいことあったら教えてもらえると助かります
【追記】
フレッツならIPv6オプションを使ってインターネットを経由せずにVPN構築したほうが高速です。
前提条件
・少なくとも片側のグローバルIPアドレスが固定アドレスであること
そうでない場合は、DDNSを使う方法があるそうですが、今回は固定IPを持っていたため試していません。
ネットワーク構成
拠点Aと拠点BをインターネットVPNで接続します。
片側が固定IPである必要がありますが、もう片側は動的IPとなる、ごく一般的な家庭の構成を想定しています。
ここでは、拠点BのPCから拠点Aのファイルサーバーへアクセスすることを目的とします。
セグメント違いのL3VPNとなるため、VPN越しにゲームのローカル対戦などはできないと思われます。
拠点A側の設定
※主要部分のみ抜粋
!
crypto isakmp policy 10
encr aes 256
authentication pre-share
group 2
crypto isakmp key XXXXXXXXXXXXXXXXXXXXXXXXXX address 0.0.0.0
crypto isakmp keepalive 30 periodic
!
!
crypto ipsec transform-set ESP-AES256-SHA1 esp-aes 256 esp-sha-hmac
mode tunnel
!
!
!
crypto dynamic-map AT-VPN 10
set security-association lifetime seconds 86400
set transform-set ESP-AES256-SHA1
match address VPN_TRAFFIC
!
!
crypto map VPN 1 ipsec-isakmp dynamic AT-VPN
!
!
!
!
!
interface GigabitEthernet0/0
no ip address
!
interface GigabitEthernet0/1
no ip address
!
interface GigabitEthernet0/2
no ip address
!
interface GigabitEthernet0/3
no ip address
!
interface GigabitEthernet0/4
no ip address
duplex auto
speed auto
pppoe enable group global
pppoe-client dial-pool-number 1
!
interface GigabitEthernet0/5
no ip address
shutdown
duplex auto
speed auto
!
interface Vlan1
ip address 192.168.1.1 255.255.255.0
ip nat inside
ip virtual-reassembly in
ip tcp adjust-mss 1414
!
interface Dialer1
mtu 1454
ip address negotiated
ip access-group INTERNET in
ip nat outside
ip inspect CBAC out
ip virtual-reassembly in
encapsulation ppp
ip tcp adjust-mss 1414
dialer pool 1
dialer idle-timeout 0
dialer-group 1
ppp authentication chap callin
ppp chap hostname xxxxx@xxxxx
ppp chap password 0 xxxxxxx
ppp ipcp dns request accept
crypto map VPN
!
ip forward-protocol nd
no ip http server
no ip http secure-server
!
!
ip dns server
ip nat inside source list 100 interface Dialer1 overload
ip route 0.0.0.0 0.0.0.0 Dialer1 permanent
!
ip access-list extended INTERNET
permit icmp any host 1.1.1.1
permit udp any host 1.1.1.1 eq isakmp
permit esp any host 1.1.1.1
permit ahp any host 1.1.1.1
deny ip any any
ip access-list extended VPN_TRAFFIC
permit ip 192.168.1.0 0 0.255.255.255 192.168.2.0 0.255.255.255
ip access-list extended nat-list
permit ip object-group local_lan_subnets any
!
dialer-list 1 protocol ip permit
!
!
access-list 100 deny ip 192.168.1.0 0 0.255.255.255 192.168.2.0 0.255.255.255
access-list 100 permit ip 192.168.1.0 0 0.255.255.255 any
!
!
!
拠点B側の設定
※主要部分のみ抜粋
crypto isakmp policy 10
encr aes 256
authentication pre-share
group 2
crypto isakmp key XXXXXXXXXXXXXXXXXXXXXXXXXXXXX address 1.1.1.1
crypto isakmp keepalive 30 periodic
!
!
crypto ipsec transform-set ESP-AES256-SHA1 esp-aes 256 esp-sha-hmac
mode tunnel
!
!
!
crypto map VPN 10 ipsec-isakmp
set peer 1.1.1.1
set transform-set ESP-AES256-SHA1
match address VPN_TRAFFIC
!
!
!
!
!
interface GigabitEthernet0/0
no ip address
!
interface GigabitEthernet0/1
no ip address
!
interface GigabitEthernet0/2
no ip address
!
interface GigabitEthernet0/3
no ip address
!
interface GigabitEthernet0/4
no ip address
duplex auto
speed auto
pppoe enable group global
pppoe-client dial-pool-number 1
!
interface GigabitEthernet0/5
no ip address
shutdown
duplex auto
speed auto
!
interface Vlan1
ip address 192.168.2.1 255.255.0.0
ip nat inside
ip virtual-reassembly in
ip tcp adjust-mss 1414
!
interface Dialer1
mtu 1454
ip address negotiated
ip access-group INTERNET in
ip nat outside
ip inspect CBAC out
ip virtual-reassembly in
encapsulation ppp
ip tcp adjust-mss 1414
dialer pool 1
dialer idle-timeout 0
dialer-group 1
ppp authentication chap callin
ppp chap hostname xxxx@xxxxx
ppp chap password 0 xxxxxxxxxx
ppp ipcp dns request accept
crypto map VPN
!
ip forward-protocol nd
no ip http server
no ip http secure-server
!
!
ip dns server
ip nat inside source list 100 interface Dialer1 overload
ip route 0.0.0.0 0.0.0.0 Dialer1 permanent
!
ip access-list extended INTERNET
permit ip host 1.1.1.1 any
deny ip any any
ip access-list extended VPN_TRAFFIC
permit ip 192.168.2.0 0.255.255.255 192.168.1.0 0 0.255.255.255
ip access-list extended nat-list
permit ip object-group local_lan_subnets any
!
dialer-list 1 protocol ip permit
!
!
access-list 100 deny ip 192.168.2.0 0.255.255.255 192.168.1.0 0 0.255.255.255
access-list 100 permit ip 192.168.2.0 0.255.255.255 any
!
!