RTX 1200 を用いた VPC との VPN 接続

November 04, 2017

VPC との VPN 接続

自宅に YAMAHA の RTX 1200 を導入したので、早速自宅のネットワークと VPC を VPN 接続しちゃいます。ちなみに RTX 1200 を導入したわりには別に vLAN 切ったりはしておらず、LAN 1 のネットワークは 192.168.100.0/24 となっています。WAN へは LAN 2 から PPPoE で接続している状態ですね。

f:id:shiro_kochi:2018××××××××:plain:w100:left

( 現在、仮想ホストや Wifi 経由のも含めてせいぜい 30 台程度なのでこのままでも運用できますが、今後家庭用ネットワークと管理用ネットワークに分ける必要性が出た場合なんかは勉強しなきゃですね…。)

今回はとりあえず VPC とつなぐだけで満足することとしましょう。

AWS 側の設定

VPC の IPv4 CIDR は 10.1.0.0/16 。以下の 3 つを作成します。

  • 仮想プライベートゲートウェイ
  • カスタマーゲートウェイ
  • VPN 接続

上記はそんなにつまるところもないと思います。
カスタマーゲートウェイは自宅の WAN 側アドレスを指定するだけだし、仮想プライベートゲートウェイ作ったら、この二つを VPN 接続でつなげるだけです。
ちなみに VPN のルーティング方式は動的 (BGP) です。

あ、あともちろんルートテーブルに仮想プライベートゲートウェイを追加してあげる必要があります。

RTX 1200 の設定

マネジメントコンソールから YAMAHA 製ルーターの設定をダウンロードしておくとめっちゃ楽です。
ちなみに設定は以下です。これ反映させるだけ。

> show config 
# RTX1200 Rev.10.01.65 (Tue Oct 13 12:23:48 2015)
# MAC Address : 00:a0:de:c1:3e:a5, 00:a0:de:c1:3e:a6, 00:a0:de:c1:3e:a7
# Memory 128Mbytes, 3LAN, 1BRI
# main:  RTX1200 ver=c0 serial=D26180857 MAC-Address=00:a0:de:c1:3e:a5 MAC-Addr
ess=00:a0:de:c1:3e:a6 MAC-Address=00:a0:de:c1:3e:a7
# Reporting Date: Nov 4 03:20:44 2017
login password encrypted *
administrator password encrypted *
login user xxxx *
user attribute xxxxi administrator=on connection=serial,telnet,remote,ssh,sftp,h
ttp login-timer=300 multi-session=on host=any
ip route default gateway pp 1
ip lan1 address 192.168.100.1/24
ip lan1 secure filter in 100000 100001 100002 100003 100004 100005 100006 10000
7 100099
pp select 1
 description pp PRV/PPPoE/0:
 pp keepalive interval 30 retry-interval=30 count=12
 pp always-on on
 pppoe use lan2
 pppoe auto disconnect off
 pp auth accept pap chap
 pp auth myname xxxxxxxxxxxxxxx@xxxxxxxx *
 ppp lcp mru on 1454
 ppp ipcp ipaddress on
 ppp ipcp msext on
 ppp ccp type none
 ip pp secure filter in 200003 200020 200021 200022 200023 200024 200025 200038
 200030 200032 500000
 ip pp secure filter out 200013 200020 200021 200022 200023 200024 200025 20002
6 200027 200099 dynamic 200080 200081 200082 200083 200084 200085 200098 200099
 ip pp nat descriptor 1000
 pp enable 1
tunnel select 1
 ipsec tunnel 201
  ipsec sa policy 201 1 esp aes-cbc sha-hmac
  ipsec ike duration ipsec-sa 1 3600
  ipsec ike encryption 1 aes-cbc
  ipsec ike group 1 modp1024
  ipsec ike hash 1 sha
  ipsec ike keepalive use 1 on dpd 10 3
  ipsec ike local address 1 192.168.100.1
  ipsec ike pfs 1 on
  ipsec ike pre-shared-key 1 *
  ipsec ike remote address 1 13.114.241.120
 ipsec tunnel outer df-bit clear
 ip tunnel address 169.254.24.118/30
 ip tunnel remote address 169.254.24.117
 ip tunnel tcp mss limit 1379
 tunnel enable 1
tunnel select 2
 ipsec tunnel 202
  ipsec sa policy 202 2 esp aes-cbc sha-hmac
  ipsec ike duration ipsec-sa 2 3600
  ipsec ike encryption 2 aes-cbc
  ipsec ike group 2 modp1024
  ipsec ike hash 2 sha
  ipsec ike keepalive use 2 on dpd 10 3
  ipsec ike local address 2 192.168.100.1
  ipsec ike pfs 2 on
  ipsec ike pre-shared-key 2 *
  ipsec ike remote address 2 54.64.100.20
 ipsec tunnel outer df-bit clear
 ip tunnel address 169.254.24.30/30
 ip tunnel remote address 169.254.24.29
 ip tunnel tcp mss limit 1379
 tunnel enable 2
ip filter 100000 reject * * udp,tcp 135 *
ip filter 100001 reject * * udp,tcp * 135
ip filter 100002 reject * * udp,tcp netbios_ns-netbios_dgm *
ip filter 100003 reject * * udp,tcp * netbios_ns-netbios_dgm
ip filter 100004 reject * * udp,tcp netbios_ssn *
ip filter 100005 reject * * udp,tcp * netbios_ssn
ip filter 100006 reject * * udp,tcp 445 *
ip filter 100007 reject * * udp,tcp * 445
ip filter 100099 pass * * * * *
ip filter 200000 reject 10.0.0.0/8 * * * *
ip filter 200001 reject 172.16.0.0/12 * * * *
ip filter 200002 reject 192.168.0.0/16 * * * *
ip filter 200003 reject 192.168.100.0/24 * * * *
ip filter 200010 reject * 10.0.0.0/8 * * *
ip filter 200011 reject * 172.16.0.0/12 * * *
ip filter 200012 reject * 192.168.0.0/16 * * *
ip filter 200013 reject * 192.168.100.0/24 * * *
ip filter 200020 reject * * udp,tcp 135 *
ip filter 200021 reject * * udp,tcp * 135
ip filter 200022 reject * * udp,tcp netbios_ns-netbios_ssn *
ip filter 200023 reject * * udp,tcp * netbios_ns-netbios_ssn
ip filter 200024 reject * * udp,tcp 445 *
ip filter 200025 reject * * udp,tcp * 445
ip filter 200026 restrict * * tcpfin * www,21,nntp
ip filter 200027 restrict * * tcprst * www,21,nntp
ip filter 200030 pass * 192.168.100.0/24 icmp * *
ip filter 200031 pass * 192.168.100.0/24 established * *
ip filter 200032 pass * 192.168.100.0/24 tcp * ident
ip filter 200033 pass * 192.168.100.0/24 tcp ftpdata *
ip filter 200034 pass * 192.168.100.0/24 tcp,udp * domain
ip filter 200035 pass * 192.168.100.0/24 udp domain *
ip filter 200036 pass * 192.168.100.0/24 udp * ntp
ip filter 200037 pass * 192.168.100.0/24 udp ntp *
ip filter 200038 pass * 192.168.100.0/24 tcp * 22,www,https
ip filter 200099 pass * * * * *
ip filter 500000 pass 10.1.0.0/16 192.168.100.0/24 * * *
ip filter dynamic 200080 * * ftp
ip filter dynamic 200081 * * domain
ip filter dynamic 200082 * * www
ip filter dynamic 200083 * * smtp
ip filter dynamic 200084 * * pop3
ip filter dynamic 200085 * * submission
ip filter dynamic 200098 * * tcp
ip filter dynamic 200099 * * udp
nat descriptor type 1000 masquerade
nat descriptor masquerade static 1000 3 192.168.100.9 tcp 22,www,https
bgp use on  
bgp autonomous-system 65000
bgp neighbor 1 10124 169.254.24.117 hold-time=30 local-address=169.254.24.118
bgp neighbor 2 10124 169.254.24.29 hold-time=30 local-address=169.254.24.30
bgp import filter 1 equal 0.0.0.0/0
bgp import 10124 static filter 1
ipsec auto refresh on
dhcp service server
dhcp server rfc2131 compliant except remain-silent
dhcp scope 1 192.168.100.2-192.168.100.191/24
dhcp scope bind 1 192.168.100.2 ethernet 3c:07:54:56:7b:7e
dhcp scope bind 1 192.168.100.5 ethernet 10:78:d2:4c:b0:19
dns server pp 1
dns server select 500001 pp 1 any . restrict pp 1
dns private address spoof on
snmp sysname yamaha-rtx1200-00a0dec13ea5
sftpd host any
statistics cpu on
statistics memory on

ちなみに IP が動的の場合は ipsec ike local address で ルーターの LAN 側アドレスを指定する必要があります。 ( ここめっちゃハマりました… )
あと、VPC からのパケットは必要な分許可してあげましょう。
なお自分はガバガバなんで全部許可してます。( ip filter 500000 pass 10.1.0.0/16 192.168.100.0/24 * * * )

これで OK なはずなので、以下のように動作確認しましょう。

# show ipsec sa 
Total: isakmp:2 send:2 recv:2

sa   sgw isakmp connection   dir  life[s] remote-id
-----------------------------------------------------------------------------
1     1    -    isakmp       -    18973   13.114.241.120
4     2    -    isakmp       -    18999   54.64.100.20
7     1    1    tun[001]esp  send 1896    13.114.241.120
8     1    1    tun[001]esp  recv 1896    13.114.241.120
9     2    4    tun[002]esp  send 1922    54.64.100.20
10    2    4    tun[002]esp  recv 1922    54.64.100.20

SSH で接続してみる

さぁ実際に EC2 に SSH で接続してみよう、と思ってやってみたが、なぜかタイムアウト。

$ ssh -i private-key ec2-user@10.1.11.61 -vvv
OpenSSH_7.2p2 Ubuntu-4ubuntu2.1, OpenSSL 1.0.2g  1 Mar 2016
debug1: Reading configuration data /home/yuki/.ssh/config
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug2: resolving "10.1.11.61" port 22
debug2: ssh_connect_direct: needpriv 0
debug1: Connecting to 10.1.11.61 [10.1.11.61] port 22.
debug1: Connection established.
debug1: key_load_public: No such file or directory
debug1: identity file WorkKey.pem type -1
debug1: key_load_public: No such file or directory
debug1: identity file private-key-cert type -1
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_7.2p2 Ubuntu-4ubuntu2.1
debug1: Remote protocol version 2.0, remote software version OpenSSH_6.6.1
debug1: match: OpenSSH_6.6.1 pat OpenSSH_6.6.1* compat 0x04000000
debug2: fd 3 setting O_NONBLOCK
debug1: Authenticating to 10.1.11.61:22 as 'ec2-user'
debug3: hostkeys_foreach: reading file "/home/yuki/.ssh/known_hosts"
debug3: record_hostkey: found key type ECDSA in file /home/yuki/.ssh/known_hosts:1
debug3: load_hostkeys: loaded 1 keys from 10.1.11.61
debug3: order_hostkeyalgs: prefer hostkeyalgs: ecdsa-sha2-nistp256-cert-v01@openssh.com,ecdsa-sha2-nistp384-cert-v01@openssh.com,ecdsa-sha2-nistp521-cert-v01@openssh.com,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521
debug3: send packet: type 20
debug1: SSH2_MSG_KEXINIT sent

SSH2MSGKEXINIT sent でハングしてる。

…VPN 接続だからペイロードが少し大きくなってるの忘れてました。( Public IP 経由では問題ないので )
現在の MTU が 1500 に設定されており、これを超えた分のパケットが EC2 側でうまいこと再構築できてないと予想される。
適当に MTU を小さくしてあげる。

$ sudo ifconfig enp3s0 mtu 1384
$ ssh -i private-key ec2-user@10.1.11.61 
Last login: Sat Nov  4 05:21:57 2017 from ip-192-168-100-9.ap-northeast-1.compute.internal

       __|  __|_  )
       _|  (     /   Amazon Linux AMI
      ___|\___|___|

https://aws.amazon.com/amazon-linux-ami/2017.03-release-notes/
10 package(s) needed for security, out of 69 available
Run "sudo yum update" to apply all updates.
Amazon Linux version 2017.09 is available.

-> OK!


 © 2023, Dealing with Ambiguity