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をいれても問題ないと思います。これで接続できるようになります
個人支援・寄付について
サイトラボでは個人支援・寄付を受けております。ご協力いただける方はお願いいたします。当サイトではビットコインで受け付けております。
- ビットコイン:3LHnADwZwUbic2L45EnVJEykiG6KfbqrwS