notepad.exeで保存して使う用の私的メモ。
2019年2月7日木曜日
2017年4月5日水曜日
WD701CVに固定電話機を繋いでbrastel の 050 Free を利用
Aterm WD701CV の[電話基本設定]でブラステルの050freeアカウント(その1)を設定し、 Aterm WD701CV に接続した固定電話機と、 ブラステルの050freeアカウント(その2)によるAndroid(4.2.2)標準SIP間で通話可能であった。 ブラステルの外へ発信できない気がする。 SIP-URLにすればいいのだろうか? [電話基本設定] 【SIPサーバ設定】 VoIPサーバー名 softphone.spc.brastel.ne.jp VoIP電話番号 [ブラステル/ユーザーID ※8桁の数字?] サービスドメイン softphone.spc.brastel.ne.jp 【認証用設定】 VoIPユーザーID [ブラステル/ユーザーID ※8桁の数字?] VoIPユーザーパスワード [ブラステル/ユーザーID ※8桁の英数字?] [電話詳細設定 ※デフォルト値] 【電話詳細設定】 ナンバーディスプレイ利用 [ ]利用する 着信音選択 SIR エコーキャンセラ [v]使用する 非通知着信 [ ]拒否する IP電話発信者番号通知 [v]通知する ダイヤル間隔有効時間(秒) 4 TEL-URL/SIP-URL TEL-URL 【一般電話設定】 プッシュ/パルス回線選択 自動 キャッチホン利用 [ ]利用する フッキング時間(秒) 通話中着信通知音 [v]通知する 一般電話自動再発信 [ ]使用する
2017年3月6日月曜日
CA-AJ01BK の寸法情報 (ナカバヤシ LOAS チェア用固定脚)
私が購入した一固体のイイカゲンな寸法情報等です。 別の固体はあるていど異なる値になるかと思われます。 ■全体 高59(~60) 幅52 ◆土台、黒い樹脂部分 高32(~33) 底幅52 天幅37 ※底面はそれなりにツルツルで、プラスチックの下敷き感覚 ※底面以外はじゃっかんザラツキがあり、テカリが控えめかな。 ◆突起、金属部分 全高26(~27) 6 上からリング溝まで 2 リング溝部分 14 リング溝から底の出っ張りまで 4 底の出っ張り部分 幅10(~11) リング外径幅11 底の出っ張り部の幅14 ※潤滑油は塗ってナイと思われる。 ◆チェア取り付け時(見える部分) 高36 ※[土台/高] + [突起/底の出っ張り部分/高] 別の固体はあるていど異なる値になるかと思われます。
2016年7月25日月曜日
Ubuntu12.04 から Debian jessieへの移行記録、計画 ※実行中、編集中
2016-07-24から、自宅サーバをUbuntu 12.04からDebian jessie(8.5)に、 環境移行した時の私的記録、私的計画書です。 [Ubuntuでの作業] Debianにもインストールすべきパッケージを逃さぬよう、~/ で $ mkdir ubuntu_pkginfo ; cd ubuntu_pkginfo $ dpkg -l > dpkg_l.txt $ apt-mark showmanual > apt-mark_showmanual.txt で必要そうなパッケージ一覧も取得しておいた。 apt-mark showmanual のパッケージ一覧は、過去に私が apt-get install 実行時に、 手動で自分が指定してインストール済みのパッケージと、 OSインストーラ等かいつのまにか apt-get install したパッケージのリストっぽい。 それから /home や /etc を中心に複数メディアにバックアップした。 現在のUbuntu環境を一定保持しつつDebian jessieをインストールする事にした。 現在の環境 RAID1(4台構成、全て同じ容量、同じパーティション、同じgrubインストール済) からDebian用HDD2台を取り除いて RAID1(2台構成、全て同じ容量、同じパーティション、同じgrubインストール済) にした。mdの数だけ、mdadmの --fail と --remove(Debian用1台目) --fail と --remove(Debian用2台目) --grow --raid-devices=2 という作業になる。 ※関連 http://動作実績.blogspot.jp/2013/10/linux-raid1ubuntu1204.html Linux ソフトウェア RAID1の障害復旧記録(Ubuntu12.04) Debian用HDD2台の物理ケーブル接続を残したまま、再起動の動作確認をしたら、 RAIDのdegraded状態扱いになってしまった。 「initramfs -u しなかったからか?」と考えて degradedの警告を確認してUbuntuを起動し、 update-initramfs -u して再起動したが症状はかわらず。 物理ケーブル接続を取ったら、期待通りにRAID1(2台)で起動できた。 update-initramfs -u は不要だった気がするがわからない。 [OSインストール作業] debian-8.5.0-amd64-netinst.iso をUSBメモリーに書き込み、 Debian用HDD2台のみ物理ケーブル接続してUSBメモリーからブートし、 インストール作業本編開始。 若干こだわりのあるインストール作業をするため、 text mode の expert modeを選択した。 できれば、NIC(今回の場合Realtek)のドライバ(non-free)も別USBメモリーに書き込んで 準備しておくのが基本のようだ。 無くてもそれなりには動いた。ジャンボフレームとかで必要なのかな。 一応、あとで firmware-realtek パッケージをインストールしたら、 dmesg で確認できる NIC のエラーメッセージは消えた。 参考: 6.4. 見つからないファームウェアの読み込み https://www.debian.org/releases/stable/i386/ch06s04.html.ja Debianインストール時にNICドライバがない時の対応方法 | シーズクリエイターズブログ https://www.seeds-std.co.jp/seedsblog/783.html ・LANGはEnglish、LocationとkeymapはJapan,LocaleはUS ・rootのパスワード設定はなし。sudoのユーザを用意。 ・RAID1(2台構成、全て同じ容量、同じパーティション、同じgrubインストール済) ・md0は512MB、あとはデフォルト ・md1は残り全部(約1TB)、optionは noatime,noadirtime、typeは largefile、superblockは 1% ※1%でも10GBあるが、使い切り寸前のときに異常な断片化が起こらぬよう確保が必要。 ・パッケージは、non-free も使う。 ・[software selection](tasksel)のメニューは、余計なパッケージを入れるので省略。 ※SSH serverに目が行くが省略する。 [パッケージインストール作業] RAID1で起動し、インストール済みパッケージ一覧を apt-mark showmanual > /etc/opt/apt-mark_showmanual.os-firstboot.log に保存した後、以下のパッケージをインストール、設定作業をした。 基本、ubuntuでバックアップした /etc を /etc/opt に展開して ubuntuでも設定変更等行っていたファイルについて比較、編集、複写の作業。 ## 基本パッケージ bash-completion iptables-persistent mg openssh-client openssh-server firmware-realtek ## md等のエラー通知用パッケージ exim4 dovecot-pop3d smartmontools ## PXE,iSCSI用パッケージ dnsmasq lighttpd tgt ## qemu-kvm用パッケージ bridge-utils dtach netcat-openbsd qemu-kvm uml-utilities uuid ## 使わないので入れるのやめといたパッケージ # memtest86+ # trash-cli [NTP設定] systemd-timesyncd というNTPのクライアント機能だけをもった 目的に沿ったデーモンが入ってるはずなので、これを使う。 # timedatectl status これで時刻関連情報が表示される。 # timedatectl set-ntp true これでntpが有効になる。NTPサーバの設定は /etc/systemd/timesyncd.conf で行うようだ。 [ユーザ追加] # adduser でテキトーに。 [/etc/udev/rules.d/70-persistent-net.rules] このファイルは、0byteの空でも無ければ更新追加してくれないらしい。 [tgtの自動起動] $ systemctl status tgt $ systemctl list-unit-files でtgtの様子をみてみたが、デフォルトでは自動起動がdisableだった。 # systemctl enable tgt で自動輝度をenableにした。 [QEMU (version 2.1.2) によるVMにWindows10(PRO)のインストール] 無償アップグレードの駆け込みでインストールした。 -cpu オプションの設定でハマってしまったが、結論としては、 hostのcpuが、Intel Celeron G530 (Sandy Bridge)なので、 # qemu-system-x86_64 -enable-kvm -cpu SandyBridge,check warning: host doesn't support requested feature: CPUID.01H:ECX.aes [bit 25] warning: host doesn't support requested feature: CPUID.01H:ECX.avx [bit 28] という結果だったから、 # qemu-system-x86_64 -enable-kvm -cpu SandyBridge,-aes,-avx,check というcpu設定で作業すればインストール作業を難なく完了できた。 他の主要オプションは、 -machine pc-i440fx-2.1,accel=kvm ※pc-q35-2.1 は、QEMU 2.6で廃止となっているので使わなかった -device virtio-scsi-pci,id=vioscsi ※Virtio Block だと、ディスク毎にPCIバス消費するが、 ※Virtio SCSI だと、ディスク数に関らず1つで済むらしいので。 ※インストール先の(仮想)HDD選択の段階でドライバを読み込んだ。 -device virtio-net-pci ※ドライバは、(仮想)HDDから起動後にデバイスマネージャーでインストールした。 ISOファイルは Win10_1511_2_Japanese_x64.iso virtio-win-0.1.118.iso を使った。 ちなみに、最初は -cpu Nehalem,check だとエラーがないので、 -cpu Nehalem,+invtsc,+rdtscp,+osxsave,+xsave,....,check で積み上げていく方向でがんばってたが、インストール作業が初期段階で止まって進ますだった。 *追記* -cpu SandyBridge,-aes,-avx オプションでは、qemuコマンド実行後の初回OSブートは成功するが、OSリブートは失敗する。 ところが、なぜだか、 -cpu SandyBridge,-aes,-avx,-xsave,-osxsave とすれば、OSリブートも可能となったので変更した。 仮想環境(KVM)でのwindows10が、一度起動した後リブートすると起動しなくなる - マイクロソフト コミュニティ http://answers.microsoft.com/ja-jp/insider/forum/insider_wintp-insider_perf/%E4%BB%AE%E6%83%B3%E7%92%B0%E5%A2%83kvm%E3%81%A7/be8f1261-94aa-4a6b-afcf-9ed3ddeb625e [Linux Software Raid の bitmap] /dev/md1 のディスクアクセスが遅い気がしたので、 /proc/mdstat をみてみたら /dev/md1 の項目にUbuntu使用時には見覚えが無い bitmap というモノの項目があったので、使わないように変更してみた。 # mdadm --grow --bitmap=none /dev/md1 後でよく考えたら、WindowsからNIC、iSCSI経由でのアクセスにおいて "遅い気"を実感した事から、Windows(Vista)のNICドライバが古い事だけが原因だったかもしれない。 当該ドライバも更新した後に、"遅い気"がする状態は解消したので。 Debian(Ubuntu)側のNICドライバが更新されて、ドライバの相性に影響があった可能性は否定できない。 とにかく、問題は解決した。 [Ubuntuをやめてしまった理由] 4年前、使い慣れたDebianからシェアを伸ばしていたUbuntu(12.04 LTS)に乗り換えた。 Ubuntuは基本使いやすいが、深堀するとDebianそのままでよかったのに・・・という事があり、 Debianに戻すことにした。non-freeもどんどん使う。
2015年8月19日水曜日
VistaのhomeエディションをゲストOSとして使って良いとするライセンス条項を求めて
Windows VistaのHomeエディションは、発売当初「ゲストOSでの使用は不許可」という制限があったが、 後に「解除」されたという情報がWebにあるものの、情報源がハッキリしない感じだったので今更になって調べた。 "Windows Vista_Home Basic and Home Basic SP1, Supplemental_English_5d0d2c2e-c446-4720-bf62-ce1ed6b7e0af.pdf" あるいは "Windows Vista_Home Basic and Home Basic SP1, Supplemental_Japanese_0be7a031-3931-4ce8-9917-46ca2d67d13e.pdf" というdownload.microsoft.com 以下にある pdfを見る限り確かに「解除」されていた。
2015年7月24日金曜日
DELL E5500 に 4GB のメモリを搭載したとき、 32bit版のWindows7で利用可能なメモリー容量は3.46GB
手持ちの DELL E5500 に 4GB のメモリを搭載したとき、 32bit版のWindows7で利用可能なメモリー容量は 3.46GB (コントロールパネル / システム) 3539MB (タスクマネージャー / 物理メモリ / 合計) だった。 3GBのときは、それぞれ 3.00GB 3027MB だった。3GBと4GBの差は、実質512MBのようだ。 ちなみに2GBのときは、それぞれ 2.00GB 2003MB だった。
2015年7月22日水曜日
LAN接続した2台のPCとddとnetcat(nc)でHDD(SSD)全体をコピー
smart情報が芳しくないHDDを交換するため、 LAN接続した2台のPCでSystemRescueCdを起動し、 ddとnetcatを使ってHDD全体をコピーした。 [受信側PC] service NetworkManager stop ifconfig ethNNN inet 192.168.0.2 netmask 255.255.255.0 smartctl -a /dev/sdNEW | less nc -l -v -v -p 12345 < /dev/null | dd of=/dev/sdNEW [送信側PC] service NetworkManager stop ifconfig ethMMM inet 192.168.0.1 netmask 255.255.255.0 smartctl -a /dev/sdCURRENT | less dd if=/dev/sdCURRENT bs=128M | nc -v -v -q 100 192.168.0.2 12345 > /dev/null ※md5sumのハッシュ確認作業は記載省略 オマケ(netcat) netcatは、接続時には当然listen側とconnect側があるが、 接続後は相互に送受信可能である。 (受信PC => 送信PC は、/dev/null同士をつないだ、一応。) オマケ(GNU ddrescue) "GNU ddrescue" は、読み込み困難な状況になった時、 助けになるかもしれないツール(or 検索キーワード) ただし、慎重に考えてから使う必要がありそうだ。
2015年7月10日金曜日
読書ノート:ウォール街のランダム・ウォーカー(2004.4版)
株式投資するなら、Wilshire5000 あるいは S&P500のインデックスファンドをオススメしている内容。 最初のほうに昔のチューリップバブルや南海泡沫バブルから、1989年日本のバブル、2000年のITバブルとか 過去のバブル相場についても書いてある。ここはなかなかおもしろい。 テクニカル分析は無駄で、ファンダメンタルズ分析も成長率という将来値は結局推定で不明な値だから、 まだマシにしても上手くいく保障はない。だから、インデックス、分散投資にかぎるよ、と。 アクティブファンドは、「プロ」が運用しているのだから 存在している、あるいは存在していたファンド全ての実績を合わせればインデックスに勝つはずだが、 アクティブファンド間でゼロサムの競争をしているだけという実態なので、 インデックスファンドの方が結果が良いという結論があるそうだ。 仮に何かオイシイ投資手法が編み出されても、その手法がオイシければオイシイ程すぐに みな競争してマネするので長くは使えない。 プロが競争してもうまくいかないのだから、市場がそれなりに効率的に正しい価格示すと信じて、 無駄に手数料や税金を払わずにじっとインデックス投資をしときなさいという話のようだ。 たしかにそうだと思う。 この本で気をつけたいところは、(米国)株式市場のインデックスは、長期的に上がる前提になっていることだ。 たしかにそれならリスクを抑え、無駄なコストを避ければ中長期で安心の利益があがるということになるだろう。
2014年7月15日火曜日
OUTDOOR PRODUCTS 縦型ショルダー 61518 寸法など
私が最近買った現物(黒色)による情報で、現行仕様と一致するかはわかりません。 [商品タグ] 品番 No.61618 カラー (BLACK) サイズ 17x22x7cm 素材 NYLON(CORDURA) 原産国 MADE IN CHINA 総代理店: 株式会社 キタムラトレードサービス 東京都中央区日本橋室町4-2-10 発売元: 衣川産業株式会社 TEL:0796-23-2211 [ベルト] 幅 38mm程度 色 かばん本体の黒より、わずかに緑かかっている。 ※重ねて見比べなければわからない程度の差です。 [ファスナー] 外側1 上側1(スラーダー2) 内部1 [ファスナー詳細(共通)] 引手 裏表に"OUTDOOR"ロゴに見えるでっぱり スライダー 裏に"YKK 5RCz"に見えるくぼみ [自立について] からっぽの状態の場合、少しそっと置けば自立するようです。 ※かばんの自重を支えられる程度の硬さがある素材です。 ※かばんの下部に荷物が入った状態なら、より安定して自立する見込み。
2014年3月14日金曜日
E-522 エツミ 止ネジ(長) の寸法
E-522 エツミ 止ネジ(長) ・ツマミ部分 ・高さ 約6mm ・材質 ・見た目や持った感じの重量から、プラスチックっぽい感じがしますが、 黒の塗装を削ると電気を通したので、アルミか何か金属っぽい。
2014年3月6日木曜日
2013年12月20日金曜日
Vista(HomePremium)からNATの外に出てWindows7(Pro)にL2TP/IPsecでVPN接続するテスト記録
2台のPCをL2TP over IPsecでVPN接続してみた。 [VPNクライアント・発信側] Windows Vista HomePremium SP2 64bit コンピュータ名:CliPC [VPNサーバ・着信側] Windows7 Professional SP1 32bit コンピュータ名:SerPC 物理NICのIPアドレス:G.G.G.1 (グローバルアドレスのつもり) 仮想LoopbackのIPアドレス:192.168.22.1/24 [NAT対応] NATを経由する L2TP over IPsec を使うためには、 NAT Traversal というのを有効にする必要があるらしい。 クライアント と サーバ 両方でレジストリの変更をする。 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\PolicyAgent で AssumeUDPEncapsulationContextOnSendRule DWORD(32ビット)値:1 を作成し、PCを再起動して作業完了。 クライアントもサーバも両方がNATの内側なら、 DWORD(32ビット)値:2 に、設定するらしい。 [[参考]] How to configure an L2TP/IPsec server behind a NAT-T device in Windows Vista and in Windows Server 2008 http://support.microsoft.com/kb/926179/ ※Windows7でも、同じ作業が必要らしいので行った。 [Microsoft管理コンソール(MMC)のショートカットを作成] 次の二つ セキュリティが強化されたwindowsファイアウォール 証明書マネージャ(コンピューターアカウント・ローカルコンピューター用) ※certmgr.mscの通常起動では、現在のユーザ用で別物なので注意 は何度も使うので、管理者権限のあるユーザ+UACでmmc.exeを起動し、 スナップインの追加と削除でこの二つを追加し、 名前を付けて保存 で、ショートカットを作成した。 [セキュリティが強化されたwindowsファイアウォールの設定] クライアントは、L2TP(UDP1701)宛の送信、 サーバはL2TP(UDP1701)宛の送受信を許可しておけばいけた。 もっと少ない許可でいけるかもしれないが、試していない。 ※IPsecは、UDP500、UDP4500(NAT利用時)、ESP(プロトコル番号50 NAT非利用時) あたりを使うを使うらしいが、[NAT対応]による影響か、IPSecは特別扱いか、 コアネットワークTeredo 許可(サービス はUDP全ポート)の影響か、 理由は分からないが、これらのポート、プロトコルについては何も設定しなかった。 PPTPとSSTPは、許可を無効にしておく。 ※サーバがPPTPを受け付けないようにするには、 ココで設定するしか方法がわからなかった。 ちなみに、サーバ側がNAT内側ならば、NATの設定で UDP500とUDP4500を当該サーバに転送すればよいらしい。 UDP1701は不要で、 IPSecパススルー という機能は、 NAT Traversalを用いる場合に使っては駄目らしいが分からない。 [[参考]] iPhoneをVPNで @ 勝手にまとめウィキ - L2TP/Windows7 http://www58.atwiki.jp/iphonevpn/pages/17.html [認証に事前共有キーを使ってL2TP IPsec VPN接続] [[サーバ側の準備]] 証明書マネージャ で 個人 に 信頼されたルート証明機関 証明書 から、 有効期限内で目的 が <全て> の証明書を1つコピーする。 Microsoft Root Certificate Authority というのを使った。 ※これはおまじない的な作業だが、必要らしい ファイアウォール で セキュリティの規則 を 新規作成 する。 カスタム エンドポイント1 を G.G.G.1 エンドポイント2は 任意 ※NAT経由なら使うことはなさそうだが、エンドポイント2を指定すれば、 クライアントのIPアドレス(通常グローバルアドレス)毎に異なる 事前共有キー を設定できると思われる。 受信接続と送信接続の認証を要求する 詳細設定 で 追加 事前共有キー プロトコル UDP エンドポイント1 を 1701 エンドポイント2は 任意 ドメイン・プライベート・パブリック ネットワーク接続(NIC一覧) ファイル メニュー から 新しい着信接続 を作る。 ※VPN接続のクライアント認証で有効な ユーザ(と、その パスワード) を 既存のユーザから選ぶが、VPN接続後にファイル共有や リモートデスクトップに使うIDとは別でかまわないっぽい。 クライアント認証に、一応、長いパスワードを使いたいので、 VPN接続のクライアント認証専用のユーザを追加することにした。 作った着信の プロパティ IPv4 プロパティ で、クライアントに割り当てる IPアドレス範囲を設定する。仮想LoopbackのIPアドレスと同じサブネットの 192.168.22.10 から 99 にした。 [[クライアント側の準備]] 新しい接続またはネットワークのセットアップ で、サーバへの接続を作成する。 作成後 プロパティ で詳細設定をしていく。 セキュリティ タブ L2TP/IPsec 詳細設定で 事前共有キー ネットワーク タブ IPv4 プロパティ 詳細設定 リモート ネットワークでデフォルト ゲートウェイを使う を解除 [[接続実行]] VPN接続を数クリックで実行でるようになり、 クライアントからサーバの仮想Loopback(192.168.22.1)へアクセスできる ようになった。 ※ファイアーウォールの設定次第ではpingの反応すらないのは当然 バッチファイルで接続を実行するなら、 VPN接続のプロパティ オプション タブ で 接続中の進捗表示と名前、パスワードの入力を求める を解除しておいて、 rasphone.exe -d 接続先の名前 を実行すればよい。 L2TP/IPsecで接続できてるか確認するには、 ファイアウォール 監視 セキュリティアソシエーション を見れば良いっぽい。 [[オマケ]] IPsecに関連しそうなWindowsの サービス については以下の通り IKE and AuthIP IPsec Keying Modules 必須っぽい IPsec Policy Agent 任意っぽい [[参考]] クライアント版WindowsをL2TP/IPSecサーバーにしてiPhoneから接続する: 超私的まとめも http://zzt231.cocolog-nifty.com/blog/2012/09/windowsl2tpipse.html [認証に証明書を使ってL2TP IPsec VPN接続] [[証明書の作成]] debian wheezy openssl パッケージを使って、 個人的なCA(で、1つの証明書+秘密鍵)を作成し、 証明書については当該CA(秘密鍵)が発行する サーバ用の 証明書+秘密鍵 (ファイル名 SerPC.p12) と クライアント用の 証明書+秘密鍵 (ファイル名 CliPC.p12) を 作成した。CAの証明書は、SerPC.p12 でも CliPC.p12 でも、 Windowsでインポートすると一緒にインポートされる。 私は勘違いしていたのだが・・・ 通常設定、あるいは仕様で、Windows Vista,7 は、 認証に証明書を使ってL2TP IPsec VPN接続 をする時は、 VPNクライアントとVPNサーバーの両方が、同一のCA(秘密鍵)で発行を受けた 証明書+秘密鍵 を持っていないといけない。 すなわち、VPNクライアントはCA1による証明書、 VPNサーバはCA1とは別のCA2による証明書になっている 証明書+秘密鍵 では、たとえ、CA1とCA2の両方のCAの証明書を VPNクライアントとVPNサーバーの両方で、信頼されたルート証明機関 に インポートしたとしても、VPN接続はできない。 そのため、Verisign を始め、信頼されたルート証明機関 に、 OSインストール時から入ってる証明機関から発行された証明書+秘密鍵 を持っている外部の知らないホストが、VPNサーバに接続してきた場合、 証明書の認証は通過して、あとはIDとパスワードだけで接続できてしまう・・・ という心配は無いっぽい。 IPSec の特段の注意事項 http://technet.microsoft.com/JA-JP/library/cc757905.aspx ちなみに、VPNクライアントとVPNサーバーの両方が 同じ 証明書+秘密鍵 を使った場合、VPN接続はできる。 SerPC.p12 と CliPC.p12 の作成手順の抜粋は以下の通り。 mkdir oreore-ca/ cd oreore-ca cp /usr/lib/ssl/misc/CA.sh ./ cp /etc/ssl/openssl.cnf ./ vi CA.sh diff CA.sh /usr/lib/ssl/misc/CA.sh < if [ -z "$DAYS" ] ; then DAYS="-days 7300" ; fi # 20 year < CADAYS="-days 7300" # 20 years ※-days オプション で 証明書の有効期限を 20年に設定 --- < REQ="$OPENSSL req -config ./openssl.cnf $SSLEAY_CONFIG" < CA="$OPENSSL ca -config ./openssl.cnf $SSLEAY_CONFIG" ※-config ./openssl.cnf の追加で、設定ファイルのパスを設定 --- < $REQ -new -nodes -extensions v3_req -keyout newreq.pem -out newreq.pem $DAYS ※-newreq-nodes の部分で、設定ファイル内の [ v3_req ] 部分を有効にした。 --- < $CA -policy policy_anything -extensions v3_req -out newcert.pem -infiles newreq.pem ※-signreq の部分で、設定ファイル内の [ v3_req ] 部分を有効にした [ v3_req ] では、証明書 の 目的 等を設定している。 [ v3_req ] が無効なら、証明書 の 目的 は すべて になるようだ。 ただし、通常、Windows7のVPNサーバは、目的 の設定を無視するようだ。 無視しないようにする方法はわからなかったので、 特に、クライアント認証(発信)では使うが、 サーバ認証(着信)には使いたくない証明書があっても、 VPN着信を作っていた場合、サーバ認証に使ってしまう。 vi openssl.cnf diff openssl.cnf /etc/ssl/openssl.cnf < #attributes = req_attributes ※'extra' attributes とか、入力の省略 --- < countryName_default = JP ※証明書サブジェクトのデフォルト値変更 --- < extendedKeyUsage = clientAuth,serverAuth ※[ v3_req ] 部分において、発行する 証明書 の 拡張キー使用法(EKU) を サーバー認証 と サーバ認証 に設定。 ただし、Windows7のVPNサーバは、このあたりの設定を無視するので、 意味が無い。気分の問題。 CA.sh -newca ※CAの情報を入力していく。 一応、クライアント サーバ いずれとも無関係な感じにしておくと 無難かなと思ったので、Common Name とかは、気をつけておいた。 openssl x509 -in ./demoCA/cacert.pem -out ./demoCA/cacert.crt ※これはオマケの処理だが、WindowsでCAの証明書のみを インポートしてみたいときは、これで作ったcacert.crtを使う。 CA.sh -newreq-nodes ※サーバ用の証明書を作る。注意点は、 Common Name (e.g. server FQDN or YOUR name)で、 サーバのDNS名を設定した方がよさそう。 VPNクライアントが、VPNサーバをIPアドレスではなくDNS名で指定し、かつ、 サーバーの証明書の名前と使用法の属性を検証する を有効にしていたとき、 この2つのDNS名が一致するか確認することで、 サーバの成りすまし防止ができるっぽい。 CA.sh -signreq CA.sh -pkcs12 "SerPC Certificate" mv newcert.p12 SerPC.p12 CA.sh -newreq-nodes ※クライアント用の証明書を作る。 Common Name (e.g. server FQDN or YOUR name)は、 クライアントのコンピュータ名を使っては!!!いけない!!!。 コンピュータ名と一致すると、正当性の確認処理か何かが 行われるためか、VPN接続を実行できなかった。 DNS名も使わない方がよいかもしれない、わからない。 CA.sh -signreq CA.sh -pkcs12 "CliPC Certificate" mv newcert.p12 CliPC.p12 以上で証明書の作成は完了。 [[[参考]]] セキュリティ・PKI/OpenSSL - yanor.net/wiki http://yanor.net/wiki/?%E3%82%BB%E3%82%AD%E3%83%A5%E3%83%AA%E3%83%86%E3%82%A3%E3%83%BBPKI%2FOpenSSL 6-6(1)CAの構築 : 基礎から学ぶ無線LANの設定と設計 http://www.viva-musen.net/archives/21025477.html [[サーバ側の準備]] 証明書マネージャ で 個人 に サーバ用の 証明書+秘密鍵 をインポートする。 一緒にインポートされたCAの証明書を、信頼されたルート証明機関 に移動する。 ファイアウォール での設定は、通常不要。 ※事前共有キーでも証明書でも着信可にする方法は不明。 特定の証明書+秘密鍵だけを着信可にする方法不明。 エンドポイントの設定で、クライアントアドレス毎に 選ぶことはできると思う。 ネットワーク接続(NIC一覧) ファイル メニュー から 新しい着信接続 を作る。 ※VPN接続のクライアント認証で有効な ユーザ(と、その パスワード) を 既存のユーザから選ぶが、VPN接続後にファイル共有や リモートデスクトップを使うIDとは別でかまわないっぽい。 VPN接続のクライアント認証だけに使うユーザを作って使うことにした。 作った着信の プロパティ IPv4 プロパティ で、クライアントに割り当てる IPアドレス範囲を設定する。仮想LoopbackのIPアドレスと同じサブネットの 192.168.22.10 から 99 にした。 これにより、同じCA(秘密鍵)から発行を受けた、 証明書+秘密鍵 を持つクライアントからの接続を受け付ける準備ができた。 [[クライアント側の準備]] 証明書マネージャ で 個人 に クライアント用の 証明書+秘密鍵 をインポートする。 一緒にインポートされたCAの証明書を、信頼されたルート証明機関 に移動する。 ※証明書+秘密鍵 の発行時 または プロパティ で証明書の目的を 制限、限定できるような感じになっているが、残念ながら無視される。 着信に使うつもりがなくても、VPNの着信接続が作られてあれば、 この 証明書+秘密鍵 が着信にも有効となってしまう。回避方法不明。 新しい接続またはネットワークのセットアップ で、サーバへの接続を作成する。 作成後 プロパティ で詳細設定をしていく。 セキュリティ タブ L2TP/IPsec 詳細設定 [o]認証に証明書を使う [v]サーバーの証明書の名前と使用法の属性を検証する ※サーバの証明書+秘密鍵作成時、サーバのDNS名を正しく設定した場合のみ ネットワーク タブ IPv4 プロパティ 詳細設定 リモート ネットワークでデフォルト ゲートウェイを使う の チェックを解除 [[接続実行]] VPN接続を数クリックで実行でるようになり、 クライアントからサーバの仮想Loopback(192.168.22.1)へアクセスできる ようになった。 ※ファイアーウォールの設定次第ではpingの反応すらないのは当然 バッチファイルとかで接続を実行するなら、 接続のプロパティ オプション タブ で [ ]接続中の進捗表示と名前、パスワードの入力を求める にしておいて、 rasphone.exe -d 接続先の名前 を実行すればよい。 L2TP/IPsecで接続できてるか確認するには、 ファイアウォール 監視 セキュリティアソシエーション を見れば良いっぽい。 [[オマケ]] IPsecに関連しそうなWindowsの サービス については以下の通り IKE and AuthIP IPsec Keying Modules 必須っぽい IPsec Policy Agent 任意っぽい [[参考]] コンピューター証明書による認証を使用して RRAS を構成する http://technet.microsoft.com/ja-jp/library/dd458982.aspx How to configure verification of additional fields in peer certificates during IKE negotiation for L2TP/IPsec tunnel connections in Windows Vista http://support.microsoft.com/kb/926182
2013年12月17日火曜日
Windows7 で Microsoft Loopback Adapter を使う
Windows7のPCで、当該PCにL2TP/IPsecでVPN接続した端末専用の
仮想サブネットを用意しようとしていた時、
出だしの、仮想ネットワークアダプタの追加方法から分からなかった。
Vistaでも同様だが、
コントロールパネル→デバイスマネージャー→「ネットワークアダプター」を選択した状態で、
メニューから「操作→レガシハードウェアの追加」→あとはウィザードに従い、
ネットワークアダプタのリストから、製造元を「マイクロソフト」、
ネットワークアダプターを「Microsoft Loopback Adapter」
で、可能でした。
このアダプタに、IPアドレスを振ったが、
"ネットワークと共有センター"で確認したところ、
"識別されないネットワーク"のアダプタにされていた。
このアダプタのみを、(ドメイン、パブリック ではなく)"プライベート"に
したかったが、方法がわからなかった。
"識別されていないネットワーク"の全てのアダプタを"プライベート"にする方法は、
Web検索すればスグわかったのだが・・・。
ちなみに、
レジストリエディタで
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002BE10318}
キーのサブキーから、DriverDescに「Microsoft Loopback Adapter」と書かれているもの
を探し、そこに
"DWORD"・"*NdisDeviceType"
(先頭の「*」も名前の一部なので注意)
の"キー"を作り、"値"を"1"に設定する というおまじない行為をすれば、
"プライベート"にできるという情報があったので、やってみた。
しかし、パブリック のままっぽい?
"ネットワークと共有センター"に表示されなくなっただけっぽい?
混乱を招く無駄な情報かもしれないが、
おしいところまで来てるかもしれないので記録しておく。
[参考]
Windows 7にLoopback Adapterを追加する
http://www.cyberarchitect.net/blog/archives/272
Vista Network Identification for Loopback Adpater
http://social.technet.microsoft.com/Forums/ja-JP/66b42761-1b8e-4302-9134-0bb685139f4e/vista-network-identification-for-loopback-adpater?forum=itprovistanetworking
IPv6スレ@IPv6板@IPv6
http://like2ch.com/ag/ipv6/ipv6/1217217654/52
2013年6月20日木曜日
RAID1のLinux Raidを構成するディスク群から1つ取り外し、単体でマウントするテスト
ubuntu-12.04にて、raid1のmd0を構成するディスク(sda1+sdb1)から一つのディスク・sdb1を取り外し、
sdb1単体で内容そのままに別物と扱われるようにmd50を構成するテスト。
目的は、mdを使って、信頼度がソレナリのディスク丸ごとオンラインバックアップを実現するテスト目的。
なお、degratedしたmdの各ディスク内容を確認する処理としては、不適切な内容を含んでいる。
目的は、mdを使って、信頼度がソレナリのディスク丸ごとオンラインバックアップを実現するテスト目的。
なお、degratedしたmdの各ディスク内容を確認する処理としては、不適切な内容を含んでいる。
$ cat /proc/mdstat
...
md0 : active raid1 sdb1[2] sda1[3]
999412 blocks super 1.2 [2/2] [UU]
...
$ sudo blkid
...
/dev/sda1: UUID="d2ce795b-4157-0ba2-c114-c2a3e10e9c9e" UUID_SUB="39e610d6-e07d-89a8-3b66-09e66413d935" LABEL="mdadmtest:0" TYPE="linux_raid_member"
...
/dev/sdb1: UUID="d2ce795b-4157-0ba2-c114-c2a3e10e9c9e" UUID_SUB="d4933b1d-576b-bedf-9db8-edc8fe9fff51" LABEL="mdadmtest:0" TYPE="linux_raid_member"
...
/dev/md0: UUID="bc6efd38-8656-4574-880a-11ade5736ca9" TYPE="ext4"
...
$ sudo mdadm --manage /dev/md0 --fail /dev/sdb1
mdadm: set /dev/sdb1 faulty in /dev/md0
$ sudo mdadm --manage /dev/md0 --remove /dev/sdb1
mdadm: hot removed /dev/sdb1 from /dev/md0
$ sudo mdadm --assemble /dev/md50 --update uuid /dev/sdb1
mdadm: /dev/md50 assembled from 1 drive - need all 2 to start it (use --run to insist).
$ sudo mdadm --stop /dev/md50
mdadm: stopped /dev/md50
$ sudo mdadm --assemble /dev/md50 --update name /dev/sdb1
mdadm: /dev/md50 assembled from 1 drive - need all 2 to start it (use --run to insist).
$ sudo mdadm --run /dev/md50
mdadm: started /dev/md50
$ sudo fsck /dev/md50
fsck from util-linux 2.20.1
e2fsck 1.42 (29-Nov-2011)
/dev/md50: recovering journal
/dev/md50: clean, 231/62464 files, 15217/249853 blocks
$ sudo tune2fs -U `uuidgen` /dev/md50
tune2fs 1.42 (29-Nov-2011)
$ cat /proc/mdstat
...
md50 : active raid1 sdb1[2]
999412 blocks super 1.2 [2/1] [_U]
...
md0 : active raid1 sda1[3]
999412 blocks super 1.2 [2/1] [U_]
...
$ sudo blkid
...
/dev/sda1: UUID="d2ce795b-4157-0ba2-c114-c2a3e10e9c9e" UUID_SUB="39e610d6-e07d-89a8-3b66-09e66413d935" LABEL="mdadmtest:0" TYPE="linux_raid_member"
/dev/sdb1: UUID="482ff3e3-85fe-9789-66e9-e504ce85b5eb" UUID_SUB="d4933b1d-576b-bedf-9db8-edc8fe9fff51" LABEL="mdadmtest:50" TYPE="linux_raid_member"
...
/dev/md0: UUID="bc6efd38-8656-4574-880a-11ade5736ca9" TYPE="ext4"
/dev/md50: UUID="60d468cf-9ab8-4b63-93a0-c5da46333744" TYPE="ext4"
...
$ sudo mdadm --detail --scan
...
ARRAY /dev/md/0 metadata=1.2 name=mdadmtest:0 UUID=d2ce795b:41570ba2:c114c2a3:e10e9c9e
ARRAY /dev/md50 metadata=1.2 name=mdadmtest:50 UUID=482ff3e3:85fe9789:66e9e504:ce85b5eb
...
$ sudo mount -o ro /dev/md50 /mnt
- fsckは、稼働中のmd0からfail,removeしたため必要
- sdb1のuuid,nameおよびmd50のuuidを変更することにより、uuid指定で行っている処理、 たとえば、os boot時にmd0へsdb1が影響をおよぼすことはなくなるだろう。
- /etc/mdadm/mdadm.confの下部の ARRARY リストにmd50を追加更新し、「sudo update-initramfs -u」をしておけば、 md50を再起動しても自動で構成できる。
- (基本的なことだが、)/etc/fstabを更新すれば、md50を再起動しても自動でマウントしたりできる。
2012年7月16日月曜日
M2NPV-VM NVIDIA_RAID1 から P8H61-M LE iSCSI へVista64を移行
・M2NPV-VM ・NVIDIA RAID1(HDD2台) ・Vista64 の環境から、 ・P8H61-M LE ・iSCSI の環境へ、次の手順で移行した。 1 HDDのバックアップをとる。 2 HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Msahci\Start を(3から)0に変更し、SATA-AHCIでの起動を有効にする。 3 HDD1台をP8H61-M LEにSATA(BIOSでAHCIモードに設定)で接続、Vista64を起動する。 この時点で再アクティベーション(3日以内)を求められるが、先送り。 4 全てのドライバを入れ、再起動テストをする。 5 HDDイメージをiscsiターゲット化し、P8H61-M LEでipxe(ipxe.lkrn)を使ってsanbootする。 ブート(ログインユーザ選択まで)に5分もかかり、とても遅いが解決策不明。 (2012-07-17追記: 普通のundiドライバを使うundi.lkrn(kpxe形式ならundionly.kpxe)に変更すると 3.5分程度で起動するようになった。それでも遅い。) ログイン後については、移行前と大差ない感じで使える。 6 3日問題なく動作するか確認し、再アクティベーションした。 OSのアップグレードとかはiSCSIブートじゃ不可かもしれないので、 SATA-AHCIでの起動を有効なままにしてある。 ちなみに、iSCSIターゲットの仕様は以下のとおり ・ubuntu 12.4 LTS ・tgt(stgt), MaxRecvDataSegmentLengthとMaxXmitDataSegmentLengthを256KBに設定 ・HDDイメージは通常ファイル(HDD 2台によるRAID1(/dev/md0), ext4) lio(lio-target)も試したが、設定方法がよくわからないせいか、 転送速度がstgtの半分以下しか出なかった。 iSCSIターゲットに対して正確な値を出せないと思いますが、CrystalDiskMarkの結果はこれ。4K読み込みが早いのは、iSCSIターゲット内のキャッシュを無効にできていないからだろう。 ただし、通常のHDDはせいぜい128MBのキャッシュしかないが、 このiSCSIターゲットは2GB以上のキャッシュがあり、 しかもRAID1 HDD2台構成なので、4K読み込みは実際そこそこ早い。
2012年7月4日水曜日
home server (その1) ubuntu12.04LTSの初期設定記録(編集中)
OSインストール
mini.iso(AMD64)を使い最小インストール。タイムゾーンは日本、言語は英語(USA)を選んだ。
起動時にraidエラーがあったとき、気にせず起動ではなく、回復コンソール(モードだったかな)
を開始する方を選択した。
パーティション
md0(raid1:sda1+sdb1) /boot 512MB ext4md1(raid1:sda2+sdb2) / 残り全部 ext4 スーパーブロック1% inodeの割り当て1MB毎(largefile)
サーバ等の設定
主なパッケージ
- exim4 dovecot-pop3d
- ntp
- openssh-server
- dnsmasq
- iptables-persistent
- qemu-kvm bridge-utils uml-utilities
- netcat-openbsd dtach
メールの設定
raidのエラーが発生した時mdadmが送るメールを見逃さないことが最大の目的。人気のあるパッケージを使いつつ、設定が簡素な方法を選んだつもり。
設定概要
- root宛のメールはmy-admin宛に転送
- my-adminのメールボックスをPOP3Sで外部ホストから読めるようにする
- POP3Sのパスワードはloginパスワードとは別に設定
- 外部ホストへのメール配送・送信は不可(不要なので)
- my-admin以外のメールボックスを外部ホストから読むことは不可(不要なので)
$ sudo dpkg-reconfigure exim4-config次にdovecot の設定。まずはPOP3S用に100年間有効のオレオレ証明書を作成
$ cd /tmp $ umask 077 $ openssl req -newkey rsa:1024 -keyout private-dovecot.pem -nodes -x509 -days 36500 -out certs-dovecot.pem $ sudo sh -c "cat certs-dovecot.pem > /etc/ssl/certs/dovecot.pem" $ sudo sh -c "cat private-dovecot.pem > /etc/ssl/private/dovecot.pem" $ rm certs-dovecot.pem private-dovecot.pem認証で平文不可(ただしSSL接続なら可、つまりPOP3Sは平文可), ユーザとパスワードはauth-static.conf.extで設定
$ cd /etc/dovecot/conf.d $ sudo cp -p 10-auth.conf 10-auth.conf--dist $ sudo vi 10-auth.conf $ diff 10-auth.conf* 10d9 < disable_plaintext_auth = yes 122c121 < #!include auth-system.conf.ext --- > !include auth-system.conf.ext 128c127 < !include auth-static.conf.ext --- > #!include auth-static.conf.extユーザは任意(メールボックスはユーザ名に関係なくmy-adminを対象とする。このホストにmy-adminというユーザが存在することをMUAに教えなくて済む)、パスワードはmy-pass
$ sudo cp -p auth-static.conf.ext auth-static.conf.ext--dist
$ sudo vi auth-static.conf.ext
$ cat auth-static.conf.ext
passdb {
driver = static
args = user=my-admin password=my-pass
}
userdb {
driver = static
args = uid=my-admin gid=my-admin home=/home/%u
}
メールボックスはMaildir形式を選択
$ sudo cp -p 10-mail.conf 10-mail.conf--dist $ sudo vi 10-mail.conf $ diff 10-mail.conf* 31d30 < mail_location = maildir:~/Maildir設定内容の表示コマンドで最終確認
$ doveconf -n
# 2.0.19: /etc/dovecot/dovecot.conf
# OS: Linux 3.2.0-23-generic x86_64 Ubuntu 12.04 LTS
mail_location = maildir:~/Maildir
passdb {
args = user=my-admin password=my-pass
driver = static
}
protocols = " pop3"
ssl_cert = </etc/ssl/certs/dovecot.pem
ssl_key = </etc/ssl/private/dovecot.pem
userdb {
args = uid=my-admin gid=my-admin home=/home/%u
driver = static
}
dovecot リスタート
$ sudo service dovecot restartmdadmでメールの送信テスト
$ sudo mdadm --monitor --scan --test -1
NTPの設定
ntpdateをcronで呼び出す方が単純そうだが、時計を一気に1秒以上ずらすと、いろいろ問題が生じそうなので、大きくずれても徐々にずらしてくれそうなntpdを使う事にした。
$ cd /etc $ sudo cp -p ntp.conf ntp.conf--dist $ sudo vi ntp.con $ diff ntp.conf* 19,26c19,22 < #server 0.ubuntu.pool.ntp.org < #server 1.ubuntu.pool.ntp.org < #server 2.ubuntu.pool.ntp.org < #server 3.ubuntu.pool.ntp.org < server ntp1.jst.mfeed.ad.jp < server ntp2.jst.mfeed.ad.jp < server ntp3.jst.mfeed.ad.jp < --- > server 0.ubuntu.pool.ntp.org > server 1.ubuntu.pool.ntp.org > server 2.ubuntu.pool.ntp.org > server 3.ubuntu.pool.ntp.org 27a24,25 > # Use Ubuntu's ntp server as a fallback. > server ntp.ubuntu.com
その他の設定
/etc/default/* をいじってからdpkg-reconfigureしたパッケージ- grub-pc (bootセレクターを表示させる,)
- console-setup (コンソールでcapslockをctrl化)
※つづく・・・
2012年6月3日日曜日
ブッシュゴムを使って3.5インチHDDを防振マウントするためのケース加工したが無駄だった
ATXマザーボード対応のスチールケースを加工して、 底に3.5インチHDDを2台とりつけられるように穴あけ加工をしてみた。 だが、無駄だった。 [計画] MicroATXマザーボードを使う場合、底が空くので活かしたいと考えた。 HDDの向きは、電源・SATAケーブルを刺す側面がケース中央で向かい合うようにした。 ケーブルを刺す側面の左半分にコネクタを刺す部分が集中しているので、 向かい合うと配線しやすい。ついでに、マザーボードのSATAコネクタ位置もケース中央から近いし。 手元ケースでは、HDD間に38mm程度の間隔を確保できそう。 [使ったもの] ・八幡ねじ ブッシュゴム K-67 (10個入りをホームセンターで購入) ・壊れたHDD (取りつけイメージテスト、加工後の取り付けテスト用) ・長めのHDD固定ネジ(#6-32 長さ8mmサイズ) ・スチール対応の6.5mmドリル刃とそれを使えるドリル ・実寸大で3.5HDD底面を印刷した紙 等 [加工] 最初6mmのドリル刃で穴をあけたが、これでは小さすぎた。 6.5mmの刃だとピッタリだった。 素人加工なので、6.8mmぐらいの穴になってそう。加工後、ゴムを取り付けたところ。 とりあえず、テスト用HDDを無理なくとりつけられた。 [結果] ・底面で防振マウント、共振も回避 ・ケース内で温度が低そうな下部にHDDをマウント という2点を、眠っていた粗大ゴミのようなケースで実現できる予定だったが、 普通に3.5インチベイにマウントした時と同じく共振して使い物にならなかった。 [ファイル] 3.5HDD実寸大画像(HGST仕様書より引用), A4用紙印刷向け 3.5hddsize_paper.png ※壊れたHDD等により実寸大で印刷できたか確認が必要 穴あけ位置決めサンプル OpenOfficeDrawhgst3.5hdd_mount.odg PDFhgst3.5hdd_mount.pdf
2012年2月29日水曜日
GeanyPortable(0.20)の日本語対応化
- Geany Portable 0.20(GeanyPortable_0.20.paf.exe)インストール時、
[ ]additional languages
オプションにチェックを入れ、追加インストールする - インストール後、「....\GeanyPortable_0.20\Other\Source」にある「GeanyPortable.ini」を
「....\GeanyPortable_0.20\」にコピーし、開く(編集する)。
編集する部分は、
ApplicationLanguage=
のところを
ApplicationLanguage=ja
にする。
ついでに、日本語漢字変換のインライン入力もできるようになってるはず。
検証環境:Windows Vista
2011年8月30日火曜日
NFSによるディスクレスdebian,ubuntuクライアント
http://www.digriz.org.uk/debian-nfs-root
基本この通りやればok。
pxelinuxではなく、gpxe,ipxeを使う場合、
nfsroot=... などのオプションは、gpxeスクリプトのkernelコマンドでkernelイメージの後ろで指定し、
gpxeスクリプトのinitrdコマンドはinitramfsイメージだけを指定する。
最後にbootコマンドで起動開始。
基本この通りやればok。
pxelinuxではなく、gpxe,ipxeを使う場合、
nfsroot=... などのオプションは、gpxeスクリプトのkernelコマンドでkernelイメージの後ろで指定し、
gpxeスクリプトのinitrdコマンドはinitramfsイメージだけを指定する。
最後にbootコマンドで起動開始。
ステレオミキサー録音をlinuxで行うには、snd-aloopを使えば良い
snd-aloop.koは、オーディオループバックデバイスで、(例えばskpyeが)再生したのを(例えばaudacityで)録音できる。
カーネルパッケージに入っていない場合、こちら方法で用意できるようだ。
現行debian,ubuntuにはsnd-aloop.koは入ってない。残念だ。
カーネルパッケージに入っていない場合、こちら方法で用意できるようだ。
現行debian,ubuntuにはsnd-aloop.koは入ってない。残念だ。
登録:
投稿 (Atom)

