スキップしてメイン コンテンツに移動

投稿

rsync を使ってシステムディスクをクローンする

先に断っておきますが、今回は至って短い投稿です。mntsにソースとなるディスクをマウントし、mntdにディスティネーションとなるディスクをマウントして以下のコマンドを実行します。 sudo rsync -aAXHxSvp --numeric-ids mnts/ mntd/ これだけです。スラッシュの位置は動作に関係がありますので、必ず後ろに / をつけてください。参考までに/etc/hosts /etc/hotname /etc/fstab /etc/network以下を編集して grub-mkconfig -o /boot/grub/grub.cfg とすれば、クローンディスクからブートするメニューが追加されますが、場合によっては root=UUID= 以降が更新されない場合があるので、注意してください。 今回は以上です。それでは。
最近の投稿

Debian 12 で GRUBを含めてシリアルコンソールを有効にする

設定自体は簡単なんですが、Grub を含めてシリアルコンソールを有効にする方法が、なぜかまとまった記事が見つからなかったので備忘録として挙げてみることにしました。 Debian 12 の場合(多分 Debian 10,11などでも同じだと思いますが) /etc/default/grub の以下の三か所を変更または追加します。 # /etc/default/grub GRUB_CMDLINE_LINUX="console=tty0 console=ttyS0,115200n8" GRUB_TERMINAL="console serial" GRUB_SERIAL_COMMAND="serial --speed=115200 --unit=0 --word=8 --parity=no --stop=1" 今回の例ではマザーボード側では シリアル 0 を 速度115200 パリティーなし ストップビット1 8bit wordにしています。/etc/default/grubの編集が済んだら、 sudo update-grub とします。これで次回以降の再起動でシリアルコンソールがつかえるようになります。短いですが今回は以上です。それでは。

フルルートをもつサーバ上で kvm guestが ipv6 で通信できるようにする

フルルートを持っているサーバー上で、kvm guestを構成し、virsh net-edit default で ipv6設定を入れたところ、 ルートをチェックしている様子で、フルルートのため時間がかかりすぎてタイムアウトし、 virsh net-start default が正常に起動できませんでした。 virsh net-edit default --snip <ip family='ipv6' address='fd98:1:1:86::1' prefix='64'> </ip> --snip virsh net-start default error: Failed to start network default error: internal error: Unable to read /proc/net/ipv6_route for ipv6 forwarding checks 調べたのですが環境が稀有なためか有効な方法は見つかりませんでした。そこで、ipv6の記述を削除し、新たに/etc/libvirt/hooks/networkに必要な記述を入れるなどすることで、kvm guest が ipv6 で通信できるようになったので、まとめておくことにしました。 # vm ホスト : /etc/libvirt/hooks/network #!/bin/bash if [ "$1" = "default" -a "$2" = "started" ];then sudo echo 0 > /proc/sys/net/ipv6/conf/virbr0/disable_ipv6 sudo ip -6 addr add fd98:1:1:86::1/64 dev virbr0 sudo systemctl restart radvd sudo ip6tables -t filter -D LIBVIRT_FWI -o virbr0 -j REJECT --reject-with icmp6-port-unreachable sudo ip6tables -t filte...

クライアント側にサーバ側のルート権限を渡さずにssh tunnel session を張る

基本的にはクライアント側、ユーザ側それぞれに管理者権限が必要なのですが、サーバとクライアントの両方で事前に tap/tun インターフェースさえ立ち上がっていれば、クライアント側にサーバ側のルート権限を渡さず、ユーザがssh で接続したときに tap/tun デバイス経由で通信できることを確認しました。 linux では tap deviceの場合、具体的に以下のようになります。 # on both side edit /etc/ssh/sshd_config PermitTunnel yes # on both side as root ip tuntap add dev tap0 mode tap ip link set tap0 up # on server side as root ip addr add 192.168.100.1/24 dev tap0 # on client side as root ip addr add 192.168.100.2/24 dev tap0 # on client side as user ssh -4 -Nf -v -T -c chacha20-poly1305@openssh.com -oCompression=no -oTunnel=ethernet -o ServerAliveInterval=10 -o TCPKeepAlive=yes -w 0:0 server.example.com 2024/12/30追記:-w 0:0の記述はoptionの後に持ってこないと、tapデバイスが NO-CARRIERのままになりますので、記述順に注意してください。 インターフェースの立ち上げは一々記述するのは面倒なので、例えばDebian netinstの場合、以下のようにすると良いでしょう。 # on server side # /etc/network/interfaces.d/tap0 auto tap0 iface tap0 inet static address 192.168.100.1 netmask 255.255.255.0 pre-up ip tuntap add dev tap0 mode tap # on client side # /etc/network/in...

Debian 12 上で kvm をインストールしブリッジを手動で構成せずに host guest 間で通信できるようにする

検証用に kvm の guest 環境が必要になったのですが、既にネットワークが比較的複雑に構成されたDebian 12 サーバだったので、表題のようになるべくシンプルに host guest 間で通信できるようにと思いました。調べたところ、ブリッジを作成する方法や macvlan を使う方法は色々と見つかったのですが、どれも意にそぐわないものでした。しかし、何度かトライしたところ、ブリッジを手動で構成せずに、host guest 間で通信できるようになったので、備忘録として挙げてみました。 早速ですが、まず kvm をインストールします。 apt install --no-install-recommends qemu-kvm libvirt-daemon-system libvirt-daemon virtinst \ bridge-utils libosinfo-bin qemu-utils libvirt-clients dnsmasq --no-install-recommends は不要なパッケージをなるべくインストールしないようにするオプションだそうです。kvm のインストール自体はこれで OK ですが、ここで注目してほしいのは dnsmasq です。というのも guest を作成したときに、virbr0 というインターフェースが自動で作成されるのですが、dnsmasq はこのインターフェース上で実行されるようで、virbr0 と dnsmasq の設定さえ適切にすれば、guest host 間の通信はできるのでは?と予想した所、ビンゴでした。 ネットワークの構成ですが、今回は、インターネットに接続するルータが gw23 : 10.1.1.23、kvm ホストが sv106: 10.1.1.106、ホスト側ネットワークは 10.1.86.0/24で、 virbr0 を、10.1.86.1/24、guest を 10.1.86.10/24 にする例です。なお virsh などの管理は一般ユーザで行えるようにしています。 以下設定です。ユーザを libvirt グループに追加します。 sudo adduser YourUserName libvirt 続いてユーザ接続できるようにします。ここがないとユーザー権限で接続できません virsh...

Devian 12からレガシーなサーバにicedteaを使ってビデオコンソールを接続する

古めのサーバがあるのですが、video console 接続できる様にはなっていました。そこでDebia 12から接続したいなとおもったのですが、まず icedteaをインストールする必要がありました。パッケージのインストール自体は非常に簡単で以下のようにするだけでした。 apt-get install icedtea-netx 依存パッケージもこれだけでインストールされます。続いて web 管理画面からビデオコンソールを起動しようとすると今度は以下のようなエラーがでて接続できませんでした。 Cannot grant permissions to unsigned jars. Application requested security permissions, but jars are not signed. 軽くしらべて見たところ java.security の設定を変更すれば良さそうでした。 # /etc/java-17-openjdk/security/java.security ## コメント化 #jdk.jar.disabledAlgorithms=MD2, MD5, RSA keySize < 1024, \ # DSA keySize < 1024, SHA1 denyAfter 2019-01-01 ## 変更後 jdk.jar.disabledAlgorithms=MD2, RSA keySize < 1024, DSA keySize < 1024 icedteaを使う機会は筆者の場合ここでだけなので、備忘録代わりに上げてみました。今回は以上です。それでは。

tc コマンドを用いて上りと下りの両方向で帯域制限を行う

tc コマンドをつかって帯域制限をかけたつもりだったのですが、シンプルな設定だと片方向(上り)しか帯域制限がかかっていませんでした。そこで調べたところ "下りに対する帯域制御は不可能" という検索結果もあったのですが、もう少ししらべたところ、 ifbにリダイレクトすることで下りに対する帯域制御を適用する例と図解付きの説明 がみつかりました。(ありがとうございます。)またさらに調べたところ、 こちらのスクリプト をベースにしたものが最も期待に近い動作ができました。(ありがとうございます。) 早速ですが、スクリプトは以下のようにしてみました。 #!/bin/bash SWITCH=$1 # "on" or "off" DEVICE=$2 # "eth0", "br0", etc. RATE=$3 # for example "1000m" rate=`echo $RATE | sed -s 's/m//g'`000 CONFIG_HZ=250 burst=$(($rate/$CONFIG_HZ)) #limit=$(($burst*10)) #echo burst: $burst if [ "$SWITCH" = "off" ]; then echo "--- Initialize $DEVICE and ifb0 ---" tc qdisc del dev $DEVICE ingress handle ffff: tc qdisc del dev ifb0 root handle 1: htb rmmod ifb rmmod act_mirred tc qdisc del dev $DEVICE root fi if [ "$SWITCH" = "on" ]; then echo "--- Load ifb module ---" modprobe ifb sleep 1 ip link add de...