VyOS Users Meeting #3 参加メモ

VyOS Users Meeting Japan #3 に参加してきたのでいつものメモです。例によってLTについてはメモ取ってません。

開会

ギークナビとは?

I have a VyOS, I have a SoftEther

いしばしさん/ギークナビ

Yamahaルータを使ったVPNサービスとかを仕事でやってる。

AWS標準VPNではなくてvyosをつかっている

  • やすい
  • 接続時ログとかが取れる
  • 使い勝手が良い

仕事で使うリモートアクセスVPN

  • CiscoASA をよくつかう
    • でも高い
    • AnyConnect等の使い勝手が…

VPNなんだからリモートアクセスもvyosでもいいんじゃないか

  • VyOS: できんかった(同時接続が1になる?)
  • SoftEther
    • あわせてしまえばいいのでは

拠点間はVyOS, リモートアクセスはSoftEther

クラウドへのアクセスも含めて VyOS/SoftEther でできるのでは?

Demo

  • AWSでVyOSを起動
  • debian repos 追加
    • "apt install build-essentials git" とか
  • softether のダウンロード
  • softether のインストール
  • softether server の設定
  • AWSの場合セキュリティグループ設定も。
  • softether server-manager/client から接続

本当はこうしたかった

  • L2TP over IPSec つかえば windows 側に vpn client いれなくても
    • ただ、拠点間VPNIPSecと競合しちゃうので、vyos側でNICわける
    • が、うまくいかず

QA

  • キャパシティ・性能
    • いまのところ t2.micro で試している。性能・キャパシティ的なお試しはこれから。
    • クラウドなので拡張性は。
  • VTIだと拠点間VPNとリモートの接続できなかったよ
  • 接続機器
    • Ciscoとか。Fortiはやってない。

Troublesome at vyos on aws

かみたさん/ギークナビ (急遽代打)

Trouble1: VyOSのVPN接続が切れる

  • 複数拠点とのVPN接続でVPNが切れる
    • 切れる。あるけど通信できない。あるけど通信できず経路なし。などなど
    • 回避策: keepalive等を入れて迂回
    • 回避はできるようになったので原因調査中

Trouble2: VyOSのディスク容量圧迫

  • auth.log の肥大化 (接続拠点が多いのでログがでかい)

Trouble3: AWSでのVyOS構成

  • AWS VPCの使用上、192.168.0.0/16をVPC内部ルーティングしようとする

AWSと複数拠点間でのBGP冗長化構成について

ふじいさん/ギークナビ

拠点間接続/dynamic routing の話をやってた

  • 今の会社はstatic routingだいすき
  • vyos はまだはじめたばかり

Cisco/VyOS接続検証

  • VyOS on AWS で対向はCisco(1812, ISR4331)で拠点間VPN
    • 1対1では問題ないけど複数拠点つなぐと通信できなくなる障害
      • VTI Interface が admin/down になる →まだ原因がつかめてない
    • Workaround: VTI Interface reset ("run reset vpn ipsec-peer") をping lossをトリガに自動実行

全部VPNじゃなくて、2拠点だけにしてdynamic routingで迂回いうのは?

  • bgp, 通常経路と迂回経路で使い分け
  • 拠点追加の増減で設定変更するのも面倒だよね
  • route map による制御とかの話はまだこれから

VyOSとLXCと僕

@gentaさん

JSONを投げると雲の中にルータが爆誕するやつの話

LXCとは?

  • 「コンテナ」をLinuxで実現する
    • VM: Kernel部分のオーバーヘッド
    • コンテナ: Kernel部分のオーバーヘッドがない分高密度に収容できるように
  • Linuxの提供するリソース分離機能を使う
    • 頑張ると、mount point は別なのに見えるNWインタフェースが見える、みたいなちょっと変なものもできる。
  • LXC: 簡単に仮想環境みたいのができる。VMたくさん並べるよりもいっぱい詰め込める。

それでVyOSうごかしてみよう

  • VyOSをひとつのVMの中でたくさん動かしてお金を減らしたい
    • ユーザが増えたらそれなりにスケールするようにしたい
    • それなりにいろいろできるようにしたい

構成

  • vxlanベース: VTEPはホストOS側で。
  • コントローラにjson投げるとコントローラがvyosをホストOS上に立てていく
    • 12RPM(Router per Minutes)

特徴

  • LXCを直接たたくので軽い
  • 網構成はコンテナ内ネットワークで割といろいろおやれる
    • vxlan id ごとにブリッジを作ってvethでVyOS(container)につなぐ

ストレージ構成

  • 普通にやるとCD1枚分くらいある。たくさん作るときついので、Overlay FS で実装。
    • Clone しても zero copy (mount point 操作のみ), ログとか書き込まれたら差分だけ別ディレクトリに入れる。

フロー

はまったこと

  • LXC由来の問題は今のところほとんどない
  • bind mount:
    • VyOS起動時: /config → /opt/vyatta/etc/config とかを bind mount してる。
    • 落とした時に umount してない
    • LXC の hook script で回避
  • start-stop-daemon
    • debian の start stop script がへぼくて killall とかやる…
  • overlayfs + VM Snapshot の問題

まとめ

  • 「意外と動いている」
    • マニアックな機能テストはしてないけど
  • コンテナごとにbgpdが増えるのが地味につらい
    • bgpdでnetns対応してVRFみたいに動いてほしい

なぜVyOS?

  • PCルータを手軽に使う
    • 設定ノウハウの蓄積…config generatorの部分だけ把握して、VyOSじゃなくてふつうのlinux上の話でいいんじゃ…
  • お客様との責任分界点

QA

  • LXC wrapper みたいので LXD というのが。そちらはためした?
    • 作った後に出てきて、気にはなっているけど調べられていない。便利機能があれば、と思うけど。
    • ストレージバックエンドをZFSにできる。overlayfs のスナップショットのところはZFSに任せられるのでは
  • コンテナ内プロセス、NTPとか動作がkernelに依存するプロセスはどうする?
    • ホスト側起動するときに事前にinsmodして合わせる…kernel環境はvyosから見て一緒になるように合わせる。

vyos-buildでつくるカスタムVyOS

@m_asamaさん

VyOSのカスタムイメージを作る

vyos-build

  • あたらしいvyos install imageを作るための仕組み
  • 1.1.7まではdebian/squeezeベース。1/2からはjessyベース。
    • 1.1まではbuild-iso → 1.2からはvyos-buildでインストールイメージを作る
    • debian-live がベースになってる。

ISOイメージ作る流れ

  • debian jessie 環境をつくる
  • git clone vyos-build
  • git checkout -b current
  • README読む
  • 必要なdeb packageいれる
  • configure && make iso

カスタマイズする場合

  • vyos-build/packages に deb file をおいてから make iso (2015/12/22からの機能)
  • vyatta-* vyos-* の修正
    • git submodule update --init packages/vyatta-cfg とかをやる
    • current checkout
    • 修正
    • fakeroot make: packages に deb が書き出されてれば make isoではいる

カスタムカーネルに差し替えたい

  • ビルドの仕方がよくわからない。ドキュメントも見当たらず。

今後

  • 1.2でjessieベースだけど、CLIとかはそのまま
  • vyos2.0とかからは、vyatta-cfg-*, vyatta-op-* とかがスクラッチのものに変わるといわれている。

余談

VTIが落ちる話 : http://bugzilla.vyos.net/show_bug.cgi?id=183

  • admin downしてなぜかupしない
    • strong-swan の中で、IPsec SA焼失したときにinterface落とすような設定がある。
    • vyatta static route で interface route 設定できる。これでnext hopしているとき、経路切り替わるように、interfaceもおとす。
  • ときどき route-client で上がらないのがある。up-client もつかう
    • ほかのところでも問題が、というコメントがあっておいといたらrevertされちゃった。
    • 1.1.7だおこのパッチでよくなるかもしれない。このパッチで安定しているところがあるのであてたほうがいい。
  • IPsecのSA切れる理由
    • DPD(dead peer detection)でheartbeatとかが死んでるなって時にSA落とすケース
    • DPD生きてるけどIKE鍵交換がうまくいかない(回線品質悪いとうまくいかないケースがある気配)
      • パケロスが多いところで頻繁におこるかも

最近のVyOSの様子 2017/01

@higebuさん

Webサイトとかシステムが変わりました

  • 公式HP, 開発ブログ
    • BTS(bugzilla→fabricator): 重要そうじゃないのは移行されてないみたい
  • RocketChat を自分たちでホスティング
    • 日本語channelもある
  • Forum
    • 各言語(日本語も)のフォーラムができた

1.2/2.0とかいつでる?

  • 公式Blogをみましょう : "Change is coming to VyOS project"

次のバージョンについて

  • 1.2
    • build-iso → vyos-build (debian live base)
    • Jessieベース + いろんなパッケージを新しく (新しくしたら壊れてるのもある)
    • テストがんばるしかない(使う機能が動けばいいや…というながれ)
  • Perl scriptしんどい → python に統一しようという流れ
    • コーディング規約とかもでてる。
  • 2.0
    • vyconfがOCamlでかかれてる (バックエンドなので普通の人は触らない)
    • コマンドテンプレートがXML
    • コンフィグのスキーマが変わりそう。古いのもサポートはしそうだけど。fabricatorで投票している。
    • 内部APIが protobuf に
    • ベースOSも見直しそう
    • Web UI Project も
    • development digest を読みましょう

自分が最近やっていること

  • vyos-buildにいろんな仮想環境用のスクリプトを足している (packer based)
  • vyos-cloudinit
    • EC2だけcloudinit的なのがある。いろんなところで動きそうなのに書き換え中
  • vyos自体のテスト



所感。

とりあえずみんないろいろやってみてはまったところの話であーそれ見たみたいな話がわらわらっとあがってるのをみると、やっぱりこういうミーティングとかは有用なんだなあと思う次第であります。開催自体は有志によるベストエフォートだからなかなか定期的にやるのも難しいというのはわかりつつ。平日昼間開催でキャンセルは入ったもののそれでも20-30人くらいは参加者がいるというのを考えると、やっぱりそれなりに関心がある人が多いんだなあ、とおもったのでした。あと、LTネタあったのを全部終わった後にああそういえばアレがあったなとか思い出したりしたので、ネタの収集/吸い上げという意味でもそれなりに定期開催されるのがいいんじゃないかなーと思いました。自分でやったことを忘れている…。