ようこそゲストさん

無能日記

2011/06/28(火) 外からKVM上のSEILx86にPPTPやL2TPv2を張って、実験環境のLinuxにSSHログインしてみる

はてブ 2011/06/28 19:36 R&D (SEIL)poti
SEILにもちゃんとPPTPとL2TPv2/IPSECが実装されているのでそれを使って、
実験環境のLinuxにログインしてみる。

出先から自宅につないであれこれやるのは大事だと思います!
というわけで、大体こんな感じ
SEILx86-pptp-l2tp.png

SEILにはPPTPやL2TPv2のユーザー認証としてローカル認証やradius認証や
アカウントリストによる認証があるが、設定変更のたびにSEILにログインするのも
面倒なので、アカウントリストによる認証をやってみる。

アカウントリストはURL先に所定のフォーマットで書かれたCSVファイルを
定期的にとってきて、認証情報として利用する。

なので、実験環境にWEBサーバーを建ててそこにCSVファイルを置いておくと、
ユーザー情報を追加、削除、変更したい場合は、そのCSVファイルを修正すれば
いいので、CSVファイルを編集するWEBインターフェイスをサクッと作ってしまえば
いちいちログインする必要もなくなる

1. 先ず実験環境にwebサーバーを立ち上げる

  # aptitude install apache2
  # vi /var/wwww/account-list
  "User-Name","User-Password","Framed-IP-Address","Framed-IP-Netmask","(Description)"
  "username","password",,,"test user"
アカウントリストが取得できることを確認
# wget http://192.168.200.128/account-list

2. SEILの設定

  • 認証設定
  # authentication realm add realm0 type account-list username-suffix @mydomain
  # authentication account-list realm0 url http://192.168.200.128/account-list interval 60
  • プロトコル設定
アイドルタイマーは3時間にした。なので3時間通信がなかったら切れる。
アドレスプールはdynamicにした。dynamicだと自動でアドレスが割り当てられる。
  # pppac pool add pool0 address 10.0.0.0/24 type dynamic
  # pppac ipcp-configuration add ipcp0 pool pool0 dns-use-forwarder on
  # pppac protocol l2tp add l2tp0 accept-interface pppoe0 idle-timer 10800
  # pppac protocol pptp add pptp0 accept-interface pppoe0 idle-timer 10800
  • 認証設定とプロトコル設定をインターフェイスにバインドする
ユーザーの最大セッション数は 3 にした
  # interface pppac0 ipcp-configuration ipcp0
  # interface pppac0 bind-tunnel-protocol pptp0,l2tp0
  # interface pppac0 bind-realm realm0
  # interface pppac0 user-max-session 3
  # interface pppac0 tunnel-end-address 10.0.0.1
  • L2TPv2/IPSECのIPSEC部分の設定
  # ipsec anonymous-l2tp-transport enable
  # ipsec anonymous-l2tp-transport preshared-key "presharedkey"
  • NATの設定
これがないとインターネットに出られない
  # nat napt add private 10.0.0.2-10.0.0.255 interface pppoe0

3. 繋ぐ前のアドレス確認

pptp,l2tpのaccept-interfaceがpppoe0になっているので
pppoe0のアドレスを確認する。
  # show status ppp pppoe0
  Interface: pppoe0
    LCP state: opened
    IPCP state: opened
    IPv6CP state: initial
    BCP state: initial
    LCP negotiated options:
          magic number 0x3dfe65432
    IPCP negotiated options:
          address 1.1.1.1 <- これ
          primary dns address xxx.xxx.xxx.xxx
          secondary dns address xxx.xxx.xxx.xxx
    IPv6CP negotiated options:
          none
    BCP negotiated options:
          none
    keepalive: 30 seconds interval
本来はDNSやDDNSに登録するのが吉ですね

4. 繋いでみる

windowsから繋いでみる
スタートボタンからコンピュータを開いて、
コントロール パネル\ネットワークとインターネット\ネットワークと共有センター
にアクセス
|
v
新しい接続またはネットワークのセットアップ
|
v
職場に接続します
|
v
いいえ、新しい接続を作成します
|
v
インターネット接続(VPN)を使用します
|
v
アドレスに 確認したアドレス ここでは 1.1.1.1 を入れる
接続の名前は "自宅" にでもしとく

ユーザー名は、csvのユーザー名にrealmのuser-namesuffixを足したもの
  username@mydomain
パスワードはcsvに書かれているもの
  password
FYI: L2TPv2/IPSECの事前共有鍵
L2TPv2/IPSECの事前共有鍵を設定する場合は、
"自宅"の接続のプロパティのセキュリティの
VPN種類の下の詳細設定から事前共有鍵を設定できる。
SEILx86に設定した"presharedkey"を入れる

5.SEILでshow status pppac

  pgw2# show status pppac
  Ppp Id     Assigned IPv4   Username             Proto Tunnel From
  ---------- --------------- -------------------- ----- -------------------------
           1 10.0.0.176      username@mydomain        PPTP  xxx.xxx.xxx.xxx:54906
           2 10.0.0.193      username@mydomain        PPTP  xxx.xxx.xxx.xxx:51080

6. sshでログインしてみる

teratermで192.168.200.128に接続してみる