VyOS1.3系にIPSecを設定してみる

VyOSでVPNの設定をしようとしたら、載っているサイトの情報が古くなってしまっていました。1.3だと内容が変わっているとこがあるので1.3向けにちょっと設定を直してみました

環境

まずはVPNをするための環境とベンダーなどを載せていきます

ベンダー&スペック

  • さくらのVPS
  • OS:Vyos1.3
  • メモリ:1GB
  • CPU:2コア

接続情報

  • VPN-IP:160.16.xxx.xxx
  • VPN-GW:160.16.xxx.1
  • VPN-イーサーネット:eth0
  • VPN-clientIP:192.168.30.0/24
  • 認証方法:事前共有キー(testtest)
  • ユーザー名:user001
  • パスワード:user001

とします。インストール方法は過去の記事をみてください。

過去記事

VyOSの設定が終わっていて、SSHで接続できるという前提でいきます

現在の状態

  • OSのインストールは済み
  • ping 8.8.8.8などすると返ってくる(外からアクセス可能)
  • ping google.comなどいれても反応はなし
  • SSHでリモート接続できる(ユーザー名:vyos、パスワード:vyos)
  • ファイアウォール:無設定
  • パケットフィルタリング:無し

という状態になります。とうわけで色々設定をしていきます

DNSの設定をする

とりあえず、ドメイン名を入れても返ってくるようにします

vyos@vyos# set system name-server 8.8.8.8
vyos@vyos# set system name-server 8.8.4.4

ここはさくらのVPSで用意されているDNSを使っても、GoogleのパブリックDNSを使ってもどちらでもよいと思います。
これでpingが返ってきます

IPSecの設定

今度はIPSecの設定をしていきます。基本的にグローバルIPのあるポート(ここではeth0)で接続するのでそこに設定をいれていきます

IPSecの許可、インターフェースの設定

vyos@vyos# set vpn ipsec ipsec-interface interface eth0
vyos@vyos# set vpn ipsec nat-networks allowed-network 192.168.30.0/24
vyos@vyos# set vpn ipsec nat-traversal enable

アドレス設定

クライアントに割り振られるアドレスを設定します

vyos@vyos# set vpn l2tp remote-access client-ip-pool start 192.168.30.100
vyos@vyos# set vpn l2tp remote-access client-ip-pool stop 192.168.30.110

ここでは、VPNで接続した端末は192.168.30.100から始まり、110で終わるようになっています。10台接続ができる設定です。この数値は変えてもらえれば台数増やしたりできます

vyos@vyos# set vpn l2tp remote-access outside-address 160.16.xxx.xxx

グローバルIPアドレスを指定します。VPNのゲートウェイの設定もします

vyos@vyos# set vpn l2tp remote-access outside-nexthop 160.16.xxx.1

エラーになると思います。VyOSではoutside-nexthopというのがありません。正しくは↓になります

vyos@vyos# set vpn l2tp remote-access gateway-address 160.16.xxx.1

これでゲートウェイの設定ができました

認証設定

IPSecは事前の共有キーを使います。事前共有キーの設定をします(testtest)

vyos@vyos# set vpn l2tp remote-access ipsec-settings authentication mode pre-shared-secret
vyos@vyos# set vpn l2tp remote-access ipsec-settings authentication pre-shared-secret testtest

ユーザー設定

ユーザー名とパスワードの設定をします

vyos@vyos# set vpn l2tp remote-access authentication mode local
vyos@vyos# set vpn l2tp remote-access authentication local-users username user001 password user001

これでユーザー名とパスワードの設定も終わりました

フィルタリングの設定

さくらのVPSではパケットフィルタリングというのがあるので、そっちを使う場合はVPNのポートを許可してください

  • UDP:500
  • UDP:4500
  • UDP:1701

firewall の場合も同じように許可してください

vyos@vyos# set firewall name OUTSIDE-LOCAL rule 40 protocol 'esp'
vyos@vyos# set firewall name OUTSIDE-LOCAL rule 41 action 'accept'
vyos@vyos# set firewall name OUTSIDE-LOCAL rule 41 destination port '500'
vyos@vyos# set firewall name OUTSIDE-LOCAL rule 41 protocol 'udp'
vyos@vyos# set firewall name OUTSIDE-LOCAL rule 42 action 'accept'
vyos@vyos# set firewall name OUTSIDE-LOCAL rule 42 destination port '4500'
vyos@vyos# set firewall name OUTSIDE-LOCAL rule 42 protocol 'udp'
vyos@vyos# set firewall name OUTSIDE-LOCAL rule 43 action 'accept'
vyos@vyos# set firewall name OUTSIDE-LOCAL rule 43 destination port '1701'
vyos@vyos# set firewall name OUTSIDE-LOCAL rule 43 ipsec 'match-ipsec'
vyos@vyos# set firewall name OUTSIDE-LOCAL rule 43 protocol 'udp'

↑firewallの設定になります

NATの設定

vyos@vyos# set nat source rule 110 outbound-interface 'eth0'
vyos@vyos# set nat source rule 110 source address '192.168.30.0/24'
vyos@vyos# set nat source rule 110 translation address masquerade

NATもこれで完了です。

接続してみる

端末を接続してみてください。接続方法はVyattaとクライアントマシンをVPN接続するを見てください

トラフィックをVPN経由にすると接続できなくなる

VPNの接続はできても、トラフィックをVPN経由にするとネットに接続できません。。。えーとなります

DNSの設定をしなければいけない

上でDNSの設定をしていますが、VPNのクライアントのほうではしていないので接続できません。ということでしていきます

vyos@vyos# set vpn l2tp remote-access name-server 8.8.8.8
vyos@vyos# set vpn l2tp remote-access name-server 8.8.4.4

これでOKです。ここはさくらのDNSをいれてもパブリックDNSをいれても問題ないと思います。これで接続できるようになります

個人支援・寄付について

サイトラボではBuildreeの開発などのため、現在個人支援・寄付を受けております。ご協力いただける方はお願いいたします。当サイトではkyashというサービスをつかっております。ビットコインでも受け付けております。