vyosにはopenvpn機能がデフォルトで入っており、クライアント、サーバとして動作させることができる。
やろうとしていることは、AWS上のvyosとオンプレミスのvyosをVPNで接続することで、site to site VPNに近いものを実現したかったが、リモートアクセスVPNになるので、この構成ではやりたいことはできなさそうだった。
一応、ひと通りコマンドメモを作ったので貼っておきます。
AWS上のvyosはversion1.3でVPNサーバとして機能(マーケットプレイスにあるのが1.3だった)
パブリックIP:18.179.178.209 プライベートIP:172.31.38.155/20
オンプレミスのvyosはversion1.5でVPNクライアントとして機能(今のところ最新)
プライベートIP:192.168.50.104/24
AWS上のvyosでの作業
X509認証で認証をするため、証明書が必要。
easyrsaコマンドがバンドルされているのでこれを使うと良い。
形式さえ合っていれば、どんな方法で作っても問題ない。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
cp -r /usr/share/easy-rsa/ /config/my-easy-rsa-config cd /config/my-easy-rsa-config mv vars.example vars vi vars set_var EASYRSA_DN "org" set_var EASYRSA_REQ_COUNTRY "US" set_var EASYRSA_REQ_PROVINCE "California" set_var EASYRSA_REQ_CITY "San Francisco" set_var EASYRSA_REQ_ORG "Copyleft Certificate Co" set_var EASYRSA_REQ_EMAIL "me@example.net" set_var EASYRSA_REQ_OU "My Organizational Unit" set_var EASYRSA_KEY_SIZE 2048 ./easyrsa init-pki ./easyrsa build-ca # password ./easyrsa gen-req central nopass ./easyrsa sign-req server central ./easyrsa gen-dh ./easyrsa build-client-full branch1 nopass ./easyrsa revoke client1 ./easyrsa gen-crl # OpenVPN用のディレクトリにセット mkdir /config/auth/openvpn cp pki/ca.crt /config/auth/openvpn cp pki/dh.pem /config/auth/openvpn cp pki/private/central.key /config/auth/openvpn cp pki/issued/central.crt /config/auth/openvpn cp pki/crl.pem /config/auth/openvpn |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
set interfaces openvpn vtun10 mode server set interfaces openvpn vtun10 local-port 1194 set interfaces openvpn vtun10 persistent-tunnel set interfaces openvpn vtun10 protocol udp set interfaces openvpn vtun10 tls ca-cert-file /config/auth/openvpn/ca.crt set interfaces openvpn vtun10 tls cert-file /config/auth/openvpn/central.crt set interfaces openvpn vtun10 tls key-file /config/auth/openvpn/central.key set interfaces openvpn vtun10 tls crl-file /config/auth/openvpn/crl.pem set interfaces openvpn vtun10 tls dh-file /config/auth/openvpn/dh.pem set interfaces openvpn vtun10 server push-route 172.31.0.0/16 # クライアントに追加するスタティックルートを指定 set interfaces openvpn vtun10 server subnet 10.23.1.0/24 # OpenVPNで利用するネットワークアドレスを指定 set interfaces openvpn vtun10 local-host '18.179.178.209' # パブリックIPを指定 set interfaces openvpn vtun10 server client branch1 ip '10.23.1.10' # クライアントに割り振るIPアドレスを指定 # nat設定(VPNサーバと同一ネットワーク上のマシンにアクセスしたい場合) # set nat source rule 10 outbound-interface eth0 # set nat source rule 10 translation address masquerade show openvpn server |
オンプレミスのvyosでの作業
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
# サーバで生成した証明書をscpなどでこちらに持ってくる mkdir /config/auth/openvpn/ cp my-easy-rsa-config/pki/ca.crt /config/auth/openvpn/ cp my-easy-rsa-config/pki/issued/branch1.crt /config/auth/openvpn/ cp my-easy-rsa-config/pki/private/branch1.key /config/auth/openvpn/ # VPN設定 set interfaces openvpn vtun10 mode client set interfaces openvpn vtun10 remote-host '18.179.178.209' # VPNサーバのパブリックアドレスを指定 set interfaces openvpn vtun10 remote-port '1194' set interfaces openvpn vtun10 protocol 'udp' # version1.5からは証明書のファイルを指定するのではなくて、中身のテキストを直接指定するので、1行にする set pki ca ca-1 certificate 'MIIFKTCCBBGgAwIBAgIUSigwap+c/SRdyLHaGIQCHqCBkIgwDQYJKoZIhvcNAQELBQAwgbIxCzAJBgNVBAYTAlVTMRMwEQYDVQQIDApDYWxpZm9ybmlhMRYwFAYDVQQHDA1TYW4gRnJhbmNpc2NvMSAwHgYDVQQKDBdDb3B5bGVmdCBDZXJ0aWZpY2F0ZSBDbzEfMB0GA1UECwwWTXkgT3JnYW5pemF0aW9uYWwgVW5pdDEUMBIGA1UEAwwLRWFzeS1SU0EgQ0ExHTAbBgkqhkiG9w0BCQEWDm1lQGV4YW1wbGUubmV0MB4XDTI0MDMxODAxMzY1MFoXDTM0MDMxNjAxMzY1MFowgbIxCzAJBgNVBAYTAlVTMRMwEQYDVQQIDApDYWxpZm9ybmlhMRYwFAYDVQQHDA1TYW4gRnJhbmNpc2NvMSAwHgYDVQQKDBdDb3B5bGVmdCBDZXJ0aWZpY2F0ZSBDbzEfMB0GA1UECwwWTXkgT3JnYW5pemF0aW9uYWwgVW5pdDEUMBIGA1UEAwwLRWFzeS1SU0EgQ0ExHTAbBgkqhkiG9w0BCQEWDm1lQGV4YW1wbGUubmV0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA36/CaYQGjgbftRJLF9hruG5M24rOeY5gfoGtR9mCfPctov2L9ZwUk77sgg1CcS2kAGMog/wwLLZ2RAjzC59RbEGq/Z4pXmaajGodwg1CAexoIQ0cB/TIzxRNXsf27Tc5TJ3GyjAaF4h1ybcISzAZgB6KHt3w2pLroX1GhbCKEJMWQoVDPjRSTUTXUC1EyQ0k6O4pqmTVaErwKKUjuHHVwPz/Poyb+gTirDgzW57D5+d5/pCzaMLY6oyc+5VXxwug5kWy1disygArJWqfVZSCMN4J7CT60xnOnNAyVcKy/GZlmOA17gfTLuQuqblsPT4JHIC3yxGapIPJM8zTs9zrvwIDAQABo4IBMzCCAS8wHQYDVR0OBBYEFHrcDowh5YkvFMZrpKcMvwnnv41AMIHyBgNVHSMEgeowgeeAFHrcDowh5YkvFMZrpKcMvwnnv41AoYG4pIG1MIGyMQswCQYDVQQGEwJVUzETMBEGA1UECAwKQ2FsaWZvcm5pYTEWMBQGA1UEBwwNU2FuIEZyYW5jaXNjbzEgMB4GA1UECgwXQ29weWxlZnQgQ2VydGlmaWNhdGUgQ28xHzAdBgNVBAsMFk15IE9yZ2FuaXphdGlvbmFsIFVuaXQxFDASBgNVBAMMC0Vhc3ktUlNBIENBMR0wGwYJKoZIhvcNAQkBFg5tZUBleGFtcGxlLm5ldIIUSigwap+c/SRdyLHaGIQCHqCBkIgwDAYDVR0TBAUwAwEB/zALBgNVHQ8EBAMCAQYwDQYJKoZIhvcNAQELBQADggEBAKQ1wjEqpTgFBNo/EfAsRG29nh3ILvPhyBw08SC+rjdfB+xiA28jBy21v2TrdW+eA4KAqJS+kr1fzNos68pNmrJ/yOQaPjR2P8h/1bhAnvMuVa73uRGu3d2e6CRiWU3ISw9MaV04hyW6s6Hl+AFVfAcIx93YUvM/+xjZNe3RY0W8kK2YpAvyk7LlDEh9bMy3I/RAC/VPNhd+C56CIPgjcWDOgFvQsywTkWnx+xkU4pPWfzZSbmEPiC3k/eUblxLpMXEjIzYZBLGQgFE0gqwjUKCazyO3mhzU7ns5HysefKK1rlvabBW8npA8NWNaZynQezmuT2TQYnVnunToAgFAELM=' set pki certificate client-1 certificate MIIFNDCCBBygAwIBAgIRALBBS4p9bVuFOOfDtkvsopQwDQYJKoZIhvcNAQELBQAwgbIxCzAJBgNVBAYTAlVTMRMwEQYDVQQIDApDYWxpZm9ybmlhMRYwFAYDVQQHDA1TYW4gRnJhbmNpc2NvMSAwHgYDVQQKDBdDb3B5bGVmdCBDZXJ0aWZpY2F0ZSBDbzEfMB0GA1UECwwWTXkgT3JnYW5pemF0aW9uYWwgVW5pdDEUMBIGA1UEAwwLRWFzeS1SU0EgQ0ExHTAbBgkqhkiG9w0BCQEWDm1lQGV4YW1wbGUubmV0MB4XDTI0MDMxODAxMzkxNFoXDTI3MDMwMzAxMzkxNFowga4xCzAJBgNVBAYTAlVTMRMwEQYDVQQIDApDYWxpZm9ybmlhMRYwFAYDVQQHDA1TYW4gRnJhbmNpc2NvMSAwHgYDVQQKDBdDb3B5bGVmdCBDZXJ0aWZpY2F0ZSBDbzEfMB0GA1UECwwWTXkgT3JnYW5pemF0aW9uYWwgVW5pdDEQMA4GA1UEAwwHYnJhbmNoMTEdMBsGCSqGSIb3DQEJARYObWVAZXhhbXBsZS5uZXQwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCtXr/6LNKa8YRXZ2PojWgbeSEHSJoeilRT5UVc56dPvvCO8sxQF8dLKCh27ZljI81cZOjoX+hC6NzTNO/QVyzdZBaHpUwdjY+b8gHapG1Cx+S+PX4Lh//+/KPAfYvJF5t0xzivnRzqv/uEBtWfZVarnRPxASm4tP7NmJHxrQvuCUvYd3D3yS+E+8dQgeEdr63RIN44w8TL6GAxp4GNqmlYuS5bvnFtw37Y2bMPdzDFVvyfqiDpFNZ0ZNjWVsTDyXNczts1YURNj1nE9GNLhg1c5Zx4/Yp5CA0eTv7F95zpzwpQzSBttg1Bfy56AU/MZSaunoj/mb9QYho0ml0sM0YNAgMBAAGjggFFMIIBQTAJBgNVHRMEAjAAMB0GA1UdDgQWBBQFHozdtSwmlSp9Dr0StYcaqTqcoTCB8gYDVR0jBIHqMIHngBR63A6MIeWJLxTGa6SnDL8J57+NQKGBuKSBtTCBsjELMAkGA1UEBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFjAUBgNVBAcMDVNhbiBGcmFuY2lzY28xIDAeBgNVBAoMF0NvcHlsZWZ0IENlcnRpZmljYXRlIENvMR8wHQYDVQQLDBZNeSBPcmdhbml6YXRpb25hbCBVbml0MRQwEgYDVQQDDAtFYXN5LVJTQSBDQTEdMBsGCSqGSIb3DQEJARYObWVAZXhhbXBsZS5uZXSCFEooMGqfnP0kXcix2hiEAh6ggZCIMBMGA1UdJQQMMAoGCCsGAQUFBwMCMAsGA1UdDwQEAwIHgDANBgkqhkiG9w0BAQsFAAOCAQEAK9XnYyslIJKQkt0G4AWvL0jiwzysaqS+GT44eEO1acAjwVz04U9ttNZFv/nlCMbHA57gbck4SyKB5IE9EZy0ht082zCyutJcuylXBYUt9IZFo0KZPHKho32M8mwCBeBCcCkZc9FkuXyDh8ujr+RidOE8NK00jhcF8OJI2wS0iqRpVq7MH+2R/4HLDZBTNsn7T0a1smFoVbzCywnMWwBGzQbCppWqWD9pUnVAs5WQcJ+q/oIUAyWw4U4wR0A5LH15KVz62ig15ukfSzDUfmSdsOSjMVUG3XAiaC3RYu9jINcyoJTMxZF70qnYPqynnWTPZSsw08kpaGl3gnM+kVAz9A== set pki certificate client-1 private key MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCtXr/6LNKa8YRXZ2PojWgbeSEHSJoeilRT5UVc56dPvvCO8sxQF8dLKCh27ZljI81cZOjoX+hC6NzTNO/QVyzdZBaHpUwdjY+b8gHapG1Cx+S+PX4Lh//+/KPAfYvJF5t0xzivnRzqv/uEBtWfZVarnRPxASm4tP7NmJHxrQvuCUvYd3D3yS+E+8dQgeEdr63RIN44w8TL6GAxp4GNqmlYuS5bvnFtw37Y2bMPdzDFVvyfqiDpFNZ0ZNjWVsTDyXNczts1YURNj1nE9GNLhg1c5Zx4/Yp5CA0eTv7F95zpzwpQzSBttg1Bfy56AU/MZSaunoj/mb9QYho0ml0sM0YNAgMBAAECggEAIV5pSPezmYr+0+vcePgun4sS5ln8///T90nbreQQefLgTkNBO/E3tKmIEEvvB/vuHOh3Q7Kh+67iQeygc9MzmXEYPQd9vPpwN62+2ZxoQ0BCMLOZPRLyHNv3kKcZbp0SmMl3iaWN2UkWWfUOzN0ub12OZwa4RwrfOCczf/a0ox3pwL7hDNi3v/eEbvA4blnJKekmnM7dJLNWpQGrUEFH7I6f4gmXJtjiajD4xXKosgmdkbLnOm93/30CueUDfd3kGtL2P9wDEQJpKO4+3+GPVkB8f4FWtc8eX0rs3FZlqsw93RCenK4hY0DR52RJkXkxpsiHNRMWN3hbnHFlB6G3qQKBgQDc7A6ebHyddULjN2srq9RQOt/UM5UtaSVGRpXlPUFam/D5k2wqrLDdUXGtcgmIoCTgAudiR5R8AByDHfV8MQeTprPoNVGYI6haYSdPFvO5IQHPjEc5lEyA+NAfUg7tMoPHlei/Pzu+aRx4VrU1KqAwO3qbCs6Awbv4MPLyFW41fwKBgQDI5dIyoDUjW+yYJSvUCbLyrfO+2UZBlna5eEY/xVZsV0F6yVjJhpUFPH1vDw0CcYn0xF3mlazz56iw03VtsfFdUoRMcYuIqt3m7XQHYFv0XVbl4zer32DTVSmMyUjNkNt2fwMnO8ayV+oi36u2047AoMzdUozprC/KphLzklnCcwKBgQCDHdbPT7Pl/+Ji2FFS6fhoZYjSeIrhGLZ2rw3nsCNJk6PBfC2GZlfSArRlLHlcDS/Vg+OwAKuvrKE/cFhyDOdiSl4cQwjaMs+IVIDv/79G8MASXj8nfUyqfwGGlT0mqgRsQByS5QSgTeIHye5iT5ojBioOOqu030agVuzZoL54IQKBgHwnvA3ZgL2Hc+JbJoj2LYdZBcgukwK5sEnTEOccV9rA2hC+GocBC1ufFI3sKUgXTwDb0oRMgASEaHZPWMUgMWBRPL3ZdjhSEK1Elm5wmKOeg7OzBpbLiBVTDkiZpMqV+Wtz90jp4lQZjPNcc8ybVh+pwLIO8FMBPM/qbs/k5GANAoGBANIQhJM6hea8L/PkqoBENcsY1AtxDeVEEOpFTq+OGKLpqRNuXVKQylN7vOHRh2t6Qijtm4nm28Gpt2sIVJCUO4G84aZ+H3klgTulmfY0l6trN3HtzPoFF9Oe13HqrFh8pS1Ya50QLKRrEMTQsAD8bLFff3H6rIHttHocs2m3zL5r # CNなどが表示されていれば正しく読み込めたということになる run show pki # openvpnクライアント設定に指定した証明書のエイリアス名を指定する set interfaces openvpn vtun10 tls ca-cert ca-1 set interfaces openvpn vtun10 tls certificate client-1 # https://forum.vyos.io/t/openvpn-shared-secrets-in-pki-configuration/7991/3 # There are no openvpn shared-secrets in PKI configurationのエラーが出る # set interfaces openvpn vtun10 tls crypt-key client-1 show openvpn client |