Author: gami

  • apt repository

    自前で作ったdebian packageを自前のapt repositoryに突っ込む時の問題。     この競合の警告が消せなくて悩んでいたが、どうもPackagesを圧縮するのがいけないらしい。   圧縮やめたら警告なくなった

  • IPv6 アドレス固定

    やっとsystemd-networkdでIPアドレス固定の方法がわかった。 RAでgatewayは欲しい。dhcpv6でパラメータは配りたいがアドレスの管理はしたくない。ネットワークで自動アドレス設定は有効にしたいがサーバーは固定アドレスにしたい。 RAはm_flag=off o_flag=onでほぼできるのだが、サーバーのような固定アドレスが欲しい時はSLAACが邪魔になる。 /etc/systemd/network/eth0.network で、AcceptRA=falseを入れるとゲートウェイが入らないとかプレフィックスがわからない。Address=2001:0db8::1/64 とか入れてもSLAACが働いてアドレスが2つになってしまう。 そこで、[Network]セクションに IPv6Token=::1 とか書くと、RAでプレフィックスもらって、ホスト部を::1にしてくれる。 Address=を消してもいいんだけど、書いておくとRA受け取る前にアドレス有効になるので、重複するが書いておくとよさげ。まあ、プレフィックス変わると書き換えないといけないんだけどね…… [Network]Address=240b:0db8::aaaa/64IPv6Token=::aaaa 更に、ユニークローカル(いわゆるプライベートアドレス)とグローバルアドレスがあって、内部サーバーとかだとグローバルアドレスいらないとか、外部用だとプライベートいらないとかの場合、RAを無視する必要があったりして、その場合はIPv6AcceptRAセクションを使う。 [Network]Address=fd00::aaaa/64IPv6Token=::aaaa[IPv6AcceptRA]BlackList=240b:0db8:: プレフィックスにLength付けれないので、多分64ビット全部書かないといけない。 ちなみにSQL server on Ubuntu 16.04 だとsystemd 229で、IPv6AcceptRAに対応していない。

  • ssh-agent

    GNU screen で ssh-agentを使うとおかしくなる問題から色々やってみた 新しくウィンドウを開くとssh-agentのソケット名が変わったりパスワードを入力するのが難しかったり期限切れにできなかったりと、色々大変である。 ^A c でウィンドウ開いてssh host、直接screen ssh hostなどで、生存期間内ならパスフレーズなし、期限切れならそこで入力、としたい。 とりあえずssh-agentを使う方法とgpg-agentを使う方法があり、それぞれにsystemdを使う方法と.bashrcなどで自力でやる方法があったが、結局ssh-agentにした。 openssh-client=1:8.2p1-4 systemd=245.5-2 ssh-agent 生存期間を指定すると毎度ssh-addを動かさないといけなくなる。 色々悩んだ結果、sshのラッパー書くことにした。 ssh-agentをどこで起動するか、だが openssh-client パッケージにssh-agent.serviceがあるので利用する。 systemctl enable –user ssh-agent.service すると、[Install]がないためenableにできない。 なので systemctl edit –user ssh-agent.service を追加する。(新規ファイル) その後 systemctl enable –user ssh-agent.service で追加。新しくユーザーセッションが始まれば起動される。 あとは、SSH_AUTH_SOCKを固定にするため、.bashrcで指定する。 これで普通にログインするとssh-add用のパスワードを聞いてきた後、screenが立ち上がり、既にセッションがあればアタッチする。(-RDDオプション) 欠点はscreen動かしたくない時(コンソールとか)にも動いてしまうこと。 生存期間が過ぎていればパスワード入力時にctrl-Cで止めることは可能。 loginctl テストしているとssh-agentがいっぱい動いたりキャッシュがあったりなかったりでよくわからなくなってくる。 そこで、 sudo loginctl terminate-user username とすると、usernameのプロセスがまとめて消える。 (もちろんログアウトされる) gpg-agent gpg-agentはsudoのように認証後しばらく保持して、10分後に使うときは再度パスワードの入力を求める、などができるんだけど、このパスワード入力がpinentryを使用するのだが、これに問題がある。 どこに表示するか、をGPG_TTYに登録する必要があるのだが、screen上で screen ssh […]

  • 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で見つけた。 eth.networkにTunnel=tun0が無いせいでだいぶ悩んだ。 tun0@none と tun0@eth0 とデバイス名が違う。 ルーティングで悩んだのはスタティックルーティングをv4とv6両方とも書く方法だった。 なんかip route […]

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

    トラックボールの調子が悪くなってきたので新しいのを買ってきた。 ELECOM M-DT1DRBK 前は親指操作だったのを、人差し指操作に変更してみた。 前のもトラックボールに慣れるのに時間かかったけど、今回のも慣れるのに時間がかかりそうだ。 使いやすいかどうかは慣れてみないと何とも言えぬ。 操作する指が違うのはやはり混乱する。 ホイールも親指になるのがなかなか慣れないなぁ・・ トラックボールの良い所は何と言っても場所を取らない。 HMDとか付けて寝っ転がってても布団の中でマウス操作ができるw キーボードはホームポジションさえ探せれば使えるんだがやはりトラックボールがお手軽である。 有線か無線にするか悩んだけど寝っ転がるために無線を選択(ぁ