edge os(vyos)の基本(入門編)

31
EdgeOS(VyOS)の基本(入門編) EdgeOS Touch Meeting ver 0.1 広島サーバユーザ友の会(仮称) 101回勉強会

Upload: akira-kaneda

Post on 09-Jan-2017

1.014 views

Category:

Internet


1 download

TRANSCRIPT

EdgeOS(VyOS)の基本(入門編)EdgeOS Touch Meeting ver 0.1広島サーバユーザ友の会(仮称) 第101回勉強会

とにかく、何か困ったらTABを押せ!

● コマンドの補完をしてくれます。

● また、必要なパラメタなど簡易HELPが表示されます。

○ 参考:http://goo.gl/8QM1kg

2つのモード(OperationMode、ConfigurationMode)

● OperationMode○ 設定を参照したり、負荷状況を見たり、設定以

外の作業をするモード

● ConfigurationMode○ 設定をするモード

● ConfigurationModeとで使えるコマンドが違う

各モードの見分け方

● OperationModehogehoge@vyos:~$

● ConfigurationMode[edit]vagrant@vyos#

各モードへの切り替え

OperationModeからConfigurationModeへ移行

hogehoge@vyos:~$ configure

ConfigurationModeからOperationModeへの移行

[edit]vagrant@vyos# exit

よく使うコマンドを列挙以降はConfigurationModeでの説明になります。

● 設定を確認する。

show <コマンド>変更箇所には+-の表示が出る。

● 設定をする。

set <コマンド>例:set interface ethernet eth1 address 192.168.0.1/24

● 設定を削除する。

delete <コマンド>例:delete interface ethernet eth1 address 102.168.0.1/24

よく使うコマンドを列挙

以降はConfigurationModeでの説明になります。

● 設定を確定する。

commit

*注意*EdgeOS(VyOS)は通常のルータと違い、設定をしただけでは反映されません。

確定する作業をして始めて反映されます。

が、時々コミットにコケているのに一部だけ反映される場合があります。

こけた時showコマンドでどの設定が有効化されているか確認しましょう。

よく使うコマンドを列挙以降はConfigurationModeでの説明になります。

● 設定が誤っていたなどで、commit(確定)に失敗した場合、取り消す

discard

● 確定した設定を恒久的に反映する。要するに保存する。

save*注意*未確定の状態で保存することは出来ません。

ようは、commitが通らないと保存できません。

保存できていないということは、電源を切ると消えるということです。

注意しましょう。

ちょっとしたTips長いコマンドを省略したい

同じレベル(設定対象)の場合、省略できます。

* VBでいうUGINGみたいなもの

例:

[edit]vagrant@vyos# set interfaces ethernet eth0 address 192.168.0.1/24[edit]vagrant@vyos# set interfaces ethernet eth0 speed 1000

とかだと、設定対象が同じeth0なので、以下のようにすることで省略できます。

[edit]vagrant@vyos# edit interfaces ethernet eth0[edit interfaces ethernet eth0]  <---ここが変わる。以降はinterface ethernet eth0が省略された状態からスタート。

vagrant@vyos# set <TAB> を打ってみると、

Possible completions:+ address IP address bond-group Assign interface to bonding group↑set interface ethernet eth0 からのコマンドたちになっている。

この状態から抜ける場合はexit

本日のお題

EdgeRouterLITEでOpenVPNサーバを構築する。

&LDAPと認証を連携させる。

制限事項

今回は時間の都合上OpenVPNを中心にやりますので、

● LDAPの構築及び解説はやらない。(Win2012SrvR2体験版でADを作る)● FireWallの構築はやらない。

● NATの設定は最低限のみ。

● OpenVPN設定以外のルーティングもやらない。

● タイムゾーン設定やDHCPサーバなど基本的な設定もしない。

● OpenVPNのSite-to Site構成はしない。

~今回の構成~

実際に構築した模擬インターネット網

機材が妙に古いのは気にしないでください(汗

● 自宅にある勉強用機材で小型で持ち出せるものを選択しただけです。

● IX2005やSSG5は重要ではなく、あくまで一般的なブロードバンド環境を再現してい

るだけです。

● 左のノートPCはFWやNAT配下で、直接インターネットに繋がっていないし、

EdgeRouterのLAN側にあるサーバに接続が出来ない設定がしてあります。

● ようは普通のNAT環境ですね。この状態でインターネットは普通に接続できる状態

にしてあります。

● この状態からVPNを張って、EdgeRouterのLAN側にあるサーバに接続できる設定

をEdgeRouterにしていきます。

● EdgeRouter以外のサーバ、ルータは設定済み前提です。

その1:NICにIPを割り当てよう。

EdgeRouterLITEには3つのNICがあります。

普通のルータのように、WAN、LANという区別はありません。それは設定する人が定義

します。

今回はEth0をWAN側として、Eth2をLAN側として使用します。

まずはそれぞれにIPを割り当てます。

ConfigurationModeになって、それぞれ以下のコマンドを実行します。

set interfaces ethernet eth0 address 10.0.11.231/24set interfaces ethernet eth2 address 192.168.0.1/24

その2:通信できるようにしよう

NICにIPを割り当てただけでは、外部と通信することができません。

WAN側のデフォルトゲートウエイ(上位ISPへの通信経路設定)やDNSの設定などを追

加します。

● デフォルトゲートウエイ設定

set system gateway-address 10.0.11.1 <---上位ISPルータのIP● DNS設定

set system name-server 8.8.8.8set service dns forwarding listen-on eth2 <---LAN側にDNSを転送する

set service dns forwarding system

その2:通信できるようにしよう

LAN側の複数台マシンがインターネット接続できるよう、NAT(IPマスカレード)設定をし

ます。

なお、ここの構文はEdgeOS独自となり、VyOSは異なります。

EdgeOSの制限として、IPマスカレード設定の場合、

ルールの番号は5000以上10000以下でないとダメなようです。

set service nat rule 5000 outbound-interface eth0set service nat rule 5000 type masquerade

その3:まずは普通に繋がることを確認しよう。

設定をしたら、必ずcommitを行い、設定を有効にしましょう。

有効にしたら、LAN側のサーバからインターネットに繋がることを確認します。

なお、今回FW設定をしていないので、WAN側から丸見えです。

試しに、WAN側にPCをつないで、EdgeRouterのWAN側IPでSSH接続してみましょう。

実際にはちゃんと設定してから繋がないと、こんなことになります・・・・

その4:いよいよOpenVPNの設定です。

実は、OpenVPNの設定はEdgeOSのコマンドだけで行うことができません。

EdgeOSのベースになっているLinux(Debian)にアクセスし、Linuxのコマンドを使わない

といけません。

コマンドの詳細は省略しますので、今回はこの通り実行してください。

● まずはEdgeOSからLinuxに切り替えます。

sudo su -

OpenVPNで必要な証明書の作成cd /usr/share/doc/openvpn/examples/easy-rsa/2.0. ./vars./clean-all./build-caCountry NameはJPを応答

State or Province NameにはHiroshimaを応答

Locality NameにはHiroshimaを応答

Organization Nameにはopenvpn-gwを応答

Organizational Unit Nameには空行を応答

Common Nameにはvpn-gwを応答

Nameには空行を応答

EmailAddressは空行を応答

OpenVPNで必要な証明書の作成./build-key-server vpnCountry NameはJPを応答

State or Province NameにはHiroshimaを応答

Locality NameにはHiroshimaを応答

Organization Nameにはopenvpn-gwを応答

Organizational Unit Nameには空行を応答

Common Nameにはvpn-gwを応答

Nameには空行を応答

EmailAddressは空行を応答

A challenge passwordは空行を応答

An optional company nameは空行を応答

Sign the certificate?にはyを応答

1 out of 1 certificate requests certified, commit?にはyを応答

DHパラメタの生成./build-dh*注意*:結構時間がかかります。

これで必要なファイルがそろいました。

作成したファイルを指定した場所にコピーします。

cd keyscp ca.crt dh1024.pem vpn.crt vpn.key /config/auth/また、ここで作成したca.crtファイルはクライアントで必要ですので、

ファイルに保存しておきます。

いったんEdgeOS側に戻ります。

exit

リポジトリの登録

OepnVPNとLDAPを連携させるため、EdgeOSに標準以外の、外部プログラムをインス

トールします。

インストールするためのプログラムが置いてあるサーバの場所が記されたものをリポジ

トリと呼びます。

EdgeOSはDebianというLinuxをベースに作られており、このDebianのリポジトリを登録

することにより、機能拡張をする事が出来ます。

では、ConfigurationModeに移行し、リポジトリの登録を行います。

リポジトリの登録

configure

set system package repository wheezy components 'main contrib non-free'

set system package repository wheezy distribution wheezy

set system package repository wheezy url http://http.us.debian.org/debian

set system package repository wheezy-security components main

set system package repository wheezy-security distribution wheezy/updates

set system package repository wheezy-security url http://security.debian.org

commit

save

*参考*:https://goo.gl/ztrvUw

LDAP連携プログラムのインストールと設定

sudo apt-get install openvpn-auth-ldap

でLDAP連携プログラムをインストールします。

次にインストールしたopenvpn-auth-ldapの設定を行います。

openvpn-auth-ldapの設定

vi /config/auth/ldap.conf

<LDAP> URL ldap://192.168.0.10 ←-ADサーバのIP BindDN cn=ldap,ou=example,dc=example,dc=local  <---ADの構成によって異なる。cn=はLDAPバインド用ユーザ名

Password <LDAPバインドユーザのPW> Timeout 15 TLSEnable no FollowReferrals yes</LDAP>

<Authorization> BaseDN "ou=example,dc=example,dc=local" <---上記同様ADの構成によって異なる。

SearchFilter "(&(sAMAccountName=%u))" ←--ADの場合、ユーザ認証で使用するプロパティがsAMAccountNameになる。

RequireGroup false</Authorization>

OpenVPNの設定

EdgeOSでOpenVPNの設定を行います。

edit interfaces openvpn vtun0set local-port '1194'set mode 'server'set openvpn-option '--push route 192.168.0.0 255.255.255.0' #0.0/24はOpenVPNにするルーティング追加

set openvpn-option '--push dhcp-option DNS 192.168.0.1' #OpenVPNがクライアント

に配信するDNSサーバの設定

set openvpn-option '--comp-lzo' #LZO圧縮を有効化

set openvpn-option '--client-to-client' #クライアント同士の通信を許可

OpenVPNの設定

set openvpn-option '--push redirect-gateway def1' #すべての通信をOpenVPN経由

にする。

set openvpn-option '--script-security 2' #外部スクリプトのセキュリティレベル設定らし

set openvpn-option '--client-cert-not-required' #接続に証明書を使用しない

set openvpn-option '--username-as-common-name' #ユーザ名を使用する

set openvpn-option '--tmp-dir /dev/shm' #認証時使用する一時領域設定

set openvpn-option "--plugin /usr/lib/openvpn/openvpn-auth-ldap.so /config/auth/ldap.conf" #プラグインopenvpn-atuh-ldapの使用と設定ファイル指定

set openvpn-option '--log-append /var/log/openvpn.log' #ログの出力先設定

OpenVPNの設定

set server subnet '192.168.20.0/24' #クライアントへ配信するVPNのネットワークアド

レス

set tls ca-cert-file '/config/auth/ca.crt' #認証局の証明書

set tls cert-file '/config/auth/vpn.crt' #サーバの秘密鍵

set tls dh-file '/config/auth/dh1024.pem' #DHパラメタ

set tls key-file '/config/auth/vpn.key' #サーバの証明書

exitcommit

save

接続テスト

以上で設定は完了しました。

https://goo.gl/VtkamM

からOpenVPN接続用クライアントをダウンロードし、作成したca.crtファイルとともに配布

し、設定します。

SSG5側にあるPCからADに登録したユーザ、パスワードでOpenVPNが接続でき、

内部サーバにアクセスできることを確認します。

最後にEdgeRouterLITEは市販のルータと違い、DebianというPCでも動作するLinuxをベース

に開発されているVyOSをベースに作成されており、本来の機能では出来ないことを、プ

ログラムをインストールする事で機能拡張する事が出来ます。

EdgeOSにはWebでの設定画面がありますが、当然外部プログラムを追加した場合Webは使えません。

Webの設定がどういうコマンドになるのか、逆にコマンド設定はどのようにWeb画面に反

映されるのか調べてみると面白いかもしれません。

ルータをクラッキングするのは不正アクセスの第一歩です。

一気に設定せず、少しずつ確実に設定されていることを確認しましょう。