カテゴリー別アーカイブ: サーバー

4on6 tunnel

RTX810とRTX1500でvpn使っていたが、速度的になんとかならんかということで構成を変えてみた。
RTX1500は100baseでRTX810は1000baseってところで既にボトルネックは分かっているんだが…
RTX1500にPPPoEもやらせていたが、どうせ使っている無線LANルーターにやらせることにした。
IPv6対応とかいいながら単にパススルーというのが気に入らなくてルーターやらせて無かったが(ぁ
これだけでもさりげに速くなっていて草。
そしてLinux鯖にv6ルータとVPNをやらせる。
対向マシンとの接続を活かしつつルーターの設定は疲れる… まあグローバル死ななきゃ何とかなるんだけど。

# ip tunnel add tun0 mode any encaplimit none ローカルv6 リモートv6
これでip6tnl0とtun0ができる。
ip6tnlが何者か分からんがとりあえず気にしないことにする。
# ip link set up tun0
# ip route add 192.168.リモートサブネット.0/24 dev tun0

これで一応相手のネットワークには繋がる
encaplimit noneが無いとダメとかmodeがip4ip6にしててv4ダメとか苦労した
ip -6 route add fd00:相手V6ローカルサブネット://64 dev tun0
とりあえず、tunデバイス自体にはアドレスは必要ない。V6リンクローカルは勝手に付くけど、デバイス名の指定だけでいいのでアドレスそのものを使うことはない
要は相手のサブネットへのルーティングでtun0を指定してやればいいだけ。
最初はipip6とかipipとか指定しなければならないと思いこんでいたが、両方使えるanyがあったらしい。
systemd.networkで記述するときにmanで見つけた。

[NetDev]
Name=tun0
Kind=ip6tnl

[Tunnel]
Mode=any
Local=ローカルv6>
Remote=リモートv6
EncapsulationLimit=none
[Match]
Name=tun0

[Route]
Destination=192.168.相手サブネット.0/24
Scope=link

[Route]
Destination=相手v6ローカルサブネット::/64
PreferredSource=ソースアドレス
[Match]
Name=eth0

[Network]
IPv6AcceptRA=true
Address=IPv4アドレス
Gateway=IPv4ルータアドレス
Address=IPv6アドレス
Tunnel=tun0

eth.networkにTunnel=tun0が無いせいでだいぶ悩んだ。
tun0@none と tun0@eth0 とデバイス名が違う。
ルーティングで悩んだのはスタティックルーティングをv4とv6両方とも書く方法だった。
なんかip route addを実行する.service書け、とかあって美しくないとか思っていたら
単に[Route]を2つ書けばいいだけだったらしい。
これでsystemd-networkdだけで行けるようになった

そして安心して再起動して帰ったら、家からつなぐときに WiFiだと繋がるがイーサネットだと繋がらないとか、イーサネットでもつながるマシンがあったりとかで、また次の一日がつぶれた orz

結局tun0.netdevの書き間違いで、
EncapsulationLimit=0
ではなく
EncapsulationLimit=none
だった。
これ、なぜかsystemctl restart systemd-networkd では反映されなくて、システム再起動しないと反映されなかったりしてこれまた時間がかかった。
ネットワーク関係だと再起動時にコケてリモート接続できなくなるのが怖くてディスプレイつながないと再起動したくなかったとかあって無駄に時間潰した orz

ip -6 route showの結果を見ていて気が付いたのだが、static route にsource addressが指定できるっぽい。
今まで鯖同士の通信で自動アドレス優先されてうがーだったのがましになるかも?
しかしsystemd.networkの書き方はSource=ではなくPreferredSource=という罠があった。

rtx1500を外すことになったので、radvdも復活させた。前に使っていた設定で大体行けたので楽だった。
昔意味が解らなかった物が今だと解るものも一杯ある。
仕様が増えて実装もされて昔問題だったものの解決法があったりして(当時気が付かなかっただけかも?)進歩しているなぁと…

しかしRAが出せる無線ルータってほんと少ないのな。
まあRA出せる有線ルータも高いのしかないのだが…

つーか、これ暗号化していないのでアレでナニなのでソレ。(謎)

マウス(トラックボール)

トラックボールの調子が悪くなってきたので新しいのを買ってきた。
ELECOM M-DT1DRBK
前は親指操作だったのを、人差し指操作に変更してみた。
前のもトラックボールに慣れるのに時間かかったけど、今回のも慣れるのに時間がかかりそうだ。

使いやすいかどうかは慣れてみないと何とも言えぬ。
操作する指が違うのはやはり混乱する。
ホイールも親指になるのがなかなか慣れないなぁ・・

トラックボールの良い所は何と言っても場所を取らない。
HMDとか付けて寝っ転がってても布団の中でマウス操作ができるw
キーボードはホームポジションさえ探せれば使えるんだがやはりトラックボールがお手軽である。

有線か無線にするか悩んだけど寝っ転がるために無線を選択(ぁ

リモコンとかケーブルとか

今日の買い物メモ。基本的に中古屋。

先日新しくPCを購入した(中古)
ディスプレイケーブルがDP/D-Subの2択で、DP持ってなかった。
(というかDisplayPortの存在を初めて知った)
現在、D-Subで接続中。せめてDVIがあれば・・・
# ちなみにPC購入時、HDMIだろうと思って何とかなるだろうと思ったのが間違い。
# まあ、GeForce310なので性能的にはお察しなのだが・・・

中古屋で探したけどHDMI-miniDPケーブルとかDP-DVI変換とかあったんだが今回は見送り。
ケーブルは600円程度だったけど変換必要になるし、DP-DVI変換コネクタは1200円したので見送った。
どうせならケーブルが欲しい。
別の店で新品見たらHDMI-DPケーブル2m 2300円ぐらい、だった。結局amazonかな・・・

テレビのリモコンが死んでいたので互換を探す。
C-RN2が欲しかったがさすがに無い。
代わりにC-RN4というのがあったので試しに買ってみた(ジャンク108円)
結果としてテレビ部分は反応するがビデオ関係が動かない、というオチだった。捨て。
互換でC-RP2があるらしい。これもamazonかな・・・

systemd.nspawn

 仮想環境にsystemd-nspawnを使うにあたって、systemd-nspawan@machineを編集していたのだが、nspawnファイルを使うほうが良いらしい。

/etc/systemd/nspawn/machine.nspawnを作ればそれを読み取ってくれるらしい。読み取らせるオプションがsystemd-nspawnの–settings=override だった。

 プロセスを見ると–network-veth とか -U とかついているんだけどoverrideでちゃんとnspawnファイルを読み込んでいるらしくそちらが有効になっているようだ。

 一番怖かったのは-Uで、やけに起動に時間がかかるな、と思ったら全部のUIDをprivate用に変更してくれやがって修正が大変でした。
これを外す方法がわからなかったのでsystemctl edit したと言っても過言ではない。
PrivateUsers=0 がその設定。

/etc/systemd/machine.nspwan

[Exec]
Boot=true
Hostname=machine
LinkJournal=try-guest
PrivateUsers=0

[Network]
Bridge=bridge0

[Files]
Bind=/home

systemctl edit systemd-nspawn@machine.service
するのとどっちがいいかというと、一応用意されている.nspawnファイルの方が良いのかなーということで全部.nspawnに置き換えた。
とりあえず問題は出ていない。

 あと、mount -o bind で共有するより、Bindで指定するほうが、host0で余計なマウントが出てこない(cgroupでnamespaceが分けられている?)ので良さそうだ。まあhomeぐらいしかないんだけど。
/var/cache/apt/archivesとか共有してもいいかもしんない。

 ちなみにネットワークを分けずにhost0のネットワークそのまま使う場合には、[Network]にPrivate=false でOK。

遅いSSD

xenをやめてsystemd-nspawnにしてから約1か月。

異常に重い。何かするとあっという間にload average 30とか50とか。ひどい時は200とか。
kworkerが異常発生していたりするんだけど状況がよくわからず困っていた。

何となくHDDが重い気がしていたんだけど調べる方法がわからず我慢していた。
ふとベンチマークしてみようと、hdparm使ってみた。

sudo hdparm -tT --direct /dev/sd[a-d]

/dev/sda:
Timing O_DIRECT cached reads: 496 MB in 2.00 seconds = 247.44 MB/sec
Timing O_DIRECT disk reads: 380 MB in 3.00 seconds = 126.58 MB/sec

/dev/sdb:
Timing O_DIRECT cached reads: 912 MB in 2.00 seconds = 455.98 MB/sec
Timing O_DIRECT disk reads: 454 MB in 3.01 seconds = 150.90 MB/sec

/dev/sdc:
Timing O_DIRECT cached reads: 264 MB in 2.00 seconds = 131.71 MB/sec
Timing O_DIRECT disk reads: 392 MB in 3.00 seconds = 130.59 MB/sec

/dev/sdd:
Timing O_DIRECT cached reads: 528 MB in 2.00 seconds = 263.75 MB/sec
Timing O_DIRECT disk reads: 436 MB in 3.01 seconds = 144.72 MB/sec

ちなみにsdcがSSD。
なんでやねん。一番遅い。

SSDだから、とlvm_cacheにしていたのだが、実は一番遅いメディアだった!そんな馬鹿な orz
昔はカーネルがちゃんとSSDだと認識していた気がするんだが、/sys/block/sdc/queue/rotational = 1 だった。

とりあえずlvm_cacheやめた。
適当にhddに負荷かけてみたが、高負荷にはならなかった & kworker 増えなかったので、とりあえずはlvm_cacheのせいにしておこう。