FC2ブログ

[PC]改行とTeraTerm

PCとFPGAのUART通信において、TeraTermから文字を入力して、FPGAへデータを送り、
そのデータをそのままエコーバックでPCへ返す、という処理。
TeraTermの初期設定では、ENTERを押しても、改行されずに、今いる行の最初に移動するだけ。
これをちゃんと改行するようにしたい。

TeraTerm > Setup > Terminal > New-lineの欄

初期設定
 Receive: CR ※ これだと改行されない。
 Transmit: CR


初期設定
 Receive: CR+LF ※ これでTeraTerm画面で改行されるようになった。
 Transmit: CR
スポンサーサイト

[Cygwin]コマンド

wgetインストール
setup.exeからwgetで検索すれば見つかる。


apt-cygインストール
wget https://raw.githubusercontent.com/transcode-open/apt-cyg/master/apt-cyg
chmod 755 apt-cyg
mv apt-cyg /usr/local/bin/


topインストール(apt-cyg)
apt-cyg install procps


[Program]HTTPクライアント

http://x68000.q-e-d.net/~68user/net/http-1.html
ここを参考に進める。

[PC]パーティション削除できない

http://www.dosv.jp/feature/1103/18.htm


全領域を1つのパーティションにしたいが、1度MBRでパーティショニングしてしまった場合、
インストール画面からは削除できなくなることがある。確かにあった。

そんな時は以下手順で削除可能。

OSインストールディスクから起動
 > 「今すぐインストール」まで進み、その左下の「コンピュータを修復する」へ
 > 以前に作成したシステムイメージを使用してコンピュータを復元、にチェックsいて次へ
 > 以降の問いでキャンセルを繰り返すと「回復ツールを選択してください」という画面が表示される。
 > 「コマンドプロンプト」へ
 > diskpart
 > list disk
 > select disk 0
 > clean
 > exit
 > これで削除完了

[PC]Stiringでコピペ

http://uchan.hateblo.jp/entry/2018/05/07/233338
これ試そうと思ったが、バイナリをStiringで入力するのは良いが、楽しようと上のページの内容をコピペしたいのにできない。
クリップボードにコピーした内容は、Stiringにペースト出来ないらしい。

キーボードシミュレータ
https://www.inasoft.org/icountt.html#autokeybn

ここから、インストール不要な
[INASOFTから]通常圧縮版(zip)のダウンロード
の方をダウンロード。
解凍して実行すると、.NET FRAMEWORK 2.0が必要と言われるので、案内に従い、
その画面から2.0をダウンロード出来る。
そのあと再度起動。

使い方は簡単。

4D5A90000300000004000000FFFF0000
B8000000000000004000000000000000

のような文字列を上の枠に入力。
入力モードは、キーボードシミュレートモードのまま。
これで下の入力開始ボタンを押すと、設定した数秒後に入力が始まるので、その前に、Stiringの画面をアクティブにして待つ。
数秒たつと、改行も含めて自動的に入力がされた。

クリップボードからのペースト対応してないアプリに使える。助かりました。感謝。

[PC]x1 carbonのSSD換装

結論

お忙しい方へ。
X1 carbonに、
WD WDS120G2G0B
入れたら動いたよ、というお話です。


内容


最近やたらPC操作が重い。UI関連が重いといらいら。まだ256GBに対して50GB以上は空いてるのに。
Windowsを再インストールすることにした。

USB接続DVDドライブからブートしてWindows 8.1Proをインストールしようとした。
既存のWindowsデータのパーティションをすべて削除して、空き領域に新規インストールしようとしたら、

このディスクにWindowsをインストールすることはできません。選択された
ディスクはGPTのパーティションの形式ではありません。

と出て先に進めない。

x1からSSDを取り出して、別PCでGPTパーティションに設定しようとしたが、M.2スロットが使えない状態。。
諦めて、別のM.2 SSDへ交換したが、プロトコル違いで動作せず、起動時に以下エラーが出る。

2103: Detection error on SSD0 (M.2)
Press Esc to continue.


原因は以下のプロトコル違い。
SAMSUNG MZHPV256HDGL-000L1 > AHCIタイプ(SATAって事?)。元々x1に入っていたもの。
CORSAIR CSSD-F240GBMP500 > PCIe NVMeタイプ。
旧x1だと、NVMe非対応だったから、NVMe SSDを入れても動作しないと・・・

最初は元々入ってたSAMSUNG SSDを買おうと思ったら、既に生産中止してるのか、Amazonでも7万円くらいの出品しかない。
さすがにこれは買えん。
M.2は各社NVMeに進んでるのに、M.2スロットでAHCIタイプって製品あるのか?と思いつつ、以下を発見。

WD WDS120G2G0B > SATA3.0タイプ。

M.2スロットでSATAタイプって初めて買う。早速注文して換装してインストールしたら成功。
って事は、このX1 carbonのスロットは以下仕様って事か。

フォームファクタ=M.2スロット & 電気的I/F=SATA3.0 & プロトコル=AHCI

[Windows]DOSブートUSB作成

FWを更新するために、DOSでブート可能なUSBを作る必要が出た。

DOS起動用のUSBメモリを作る(DOS-on-USB編)
http://www.atmarkit.co.jp/ait/articles/1206/15/news126.html

上のページを参考に作ってみる。

まずはUSBをDOSブート可能にするためのツールを入手。
http://www.jamesonline.ca/support/dos-on-usb-support
 > Downloadをクリック
 > Please visit the File Cabinet to download the latest copy、とあるので、Cabinetをクリック
 > DOS-on-USB_2.zip (v. 2、Jan 5, 2010, 11:46 AM)をダウンロード。
 > 保存したら、zip解凍
 > DOS-on-USB_2\DOS-on-USB\James' Format Tool.exe を管理者権限で実行
 > 以下に設定

     Device: USBメモリのドライブを指定 (今回はE:\)
     File System: FAT32
     Volume Label: 空白のまま
     Format Device: チェックなしのまま
     Create a DOS startup disk: チェック入れる
     Using DOS system files located at: C:\DOS-on-USB_2\DOS-on-USB\boot
      ※ DOS system fileへのパスは、解凍して現れたbootフォルダへのパスを書く。

 > StartでUSBメモリへ書き込み開始 (かなりゆっくり)

書き込みが終わったら、そのUSBからブートするために、BIOSでブート優先順位の最初をUSBメモリにする。
PC起動したら、無事USBメモリからブートし、DOSプロンプトが起動した。
後は、元々Cドライブに保存しておいたFWデータを指定して、FW更新コマンドを実行する。

[RaspberryPi][Ubuntu]コマンド2

PukiWikiサーバ構築

# cat /etc/os-release

NAME="Ubuntu"
VERSION="16.04.2 LTS (Xenial Xerus)"
:


# apt-get update
# apt-get -y install wget
# apt-get -y install unzip
# apt-get -y install vim
# apt-get -y install apache2
# apt-get install php
# vim /var/www/html/test.php

< ?php ※ 表示されなくなるので、<と?の間に空白入れてるが、実際は無し。
phpinfo();
?>


他PCでhttp://<ラズパイのIPアドレス>/test.php
へアクセスしてみる。
無事に
PHP Version 7.2.10-1+ubuntu16.04.1+deb.sury.org+1
というページが表示された。

# wget 'https://ja.osdn.net/frs/redir.php?m=iij&f=%2Fpukiwiki%2F64807%2Fpukiwiki-1.5.1_utf8.zip' -O pukiwiki.zip
# unzip pukiwiki.zip
# mv pukiwiki-1.5.1_utf8 pukiwiki

他PCで
http://<ラズパイのIPアドレス>/pukiwiki/index.php
へアクセスしてみると、Wikiの画面が表示された。

[Ubuntu]コマンド3

ファイルサーバ(samba)構築

# su
$ apt-get -y install samba
$ mkdir /home/share
$ chmod 777 /home/share
$ vi /etc/samba/smb.conf

# 25行目:追記
unix charset = UTF-8
dos charset = CP932

# 30行目
workgroup = XXX

# 51行目: コメントを解除し、IP追記
interfaces = 127.0.0.0/8 192.168.xx.0/24

# 58行目:コメントを解除し、かつ追記
bind interfaces only = yes
map to guest = Bad User

# 最終行に追記
[share]
path = /home/share
writable = yes
guest ok = yes
guest only = yes
create mode = 0777
directory mode = 0777


$ systemctl restart smbd
$ systemctl enable smbd




DLNAサーバ(minidlna)構築

# apt-get install minidlna
# vi /etc/minidlna.conf

#変更箇所
media_dir=V,/home/share
inotify=yes
notify_interval=895


# systemctl restart minidlna

これでOculus Go > ギャラリー > host名:dlna、で自動的に接続されて表示された。



フォワードプロキシサーバ構築

# apt-get update
# apt-get upgrade -y
# apt-get install squid -y

# vi /etc/squid/squid.conf

acl localnet src 192.168.0.0/16
acl localnet src fc00::/7 # RFC 4193 local private network range
acl localnet src fe80::/10 # RFC 4291 link local machines

acl SSL_ports port 443
acl CONNECT method CONNECT
http_access deny CONNECT !SSL_ports

acl Safe_ports port 80 # http
acl Safe_ports port 21 # ftp
acl Safe_ports port 443 # https
acl Safe_ports port 70 # gopher
acl Safe_ports port 210 # wais
acl Safe_ports port 1025-65535 # unregistered ports
acl Safe_ports port 280 # http-mgmt
acl Safe_ports port 488 # gss-http
acl Safe_ports port 591 # filemaker
acl Safe_ports port 777 # multiling http
http_access deny !Safe_ports


http_access allow localhost manager
http_access deny manager

http_access allow localnet
http_access allow localhost
http_access deny all

http_port 3128

coredump_dir /var/spool/squid

refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern -i (/cgi-bin/|\?) 0 0% 0
refresh_pattern (Release|Packages(.gz)*)$ 0 20% 2880
refresh_pattern . 0 20% 4320

strip_query_terms off
logformat combined %>a %ui %un [%tl] "%rm %ru HTTP/%rv" %Hs %h" "%{User-Agent}>h" %Ss:%Sh
access_log /var/log/squid/access.log combined


# systemctl restart squid
# systemctl enable squid

ここまできたら、クライアントPCのブラウザ設定でプロキシサーバを指定する。
Firefox > オプション > 一番下のネットワークプロキシ欄へ
 > 接続設定
 > 手動でプロキシを設定する
 > プロキシサーバのIPと、squid.confで設定したポート番号を指定

これでプロキシサーバ経由でインターネットへアクセス出来るようになった。




syslogサーバ構築

Ubuntuには最初からrsyslogがインストールされてる。
なのでconfigの設定変更から。
# vi /etc/rsyslog.conf

以下2行をコメントアウトして、syslog(UDP)を受け付けるようにする。
module(load="imudp")
input(type="imudp" port="514")


# vi /etc/rsyslog.d/70-hoge.conf
local0.*  -/var/log/hoge.log


# systemctl start rsyslog
# systemctl enable rsyslog

# vi /etc/logrotate.d/rsyslog


/var/log/debug
/var/log/messages
/var/log/hoge.log > ここに追加
{
rotate 4





リバースプロキシサーバ構築


muninインストール

# apt-get install munin munin-node
# vi /etc/munin/munin.conf

[localhost.localdomain]
 ↓
[h67.hoge.com]


# vi /etc/apache2/conf-available/munin.conf

Alias /munin /var/cache/munin/www
<Directory /var/cache/munin/www>
Require local
Options None
AuthType Basic
AuthName "Munin"
AuthUserFile /etc/munin/munin-htpasswd
Require valid-user
</Directory>

ScriptAlias /munin-cgi/munin-cgi-graph /usr/lib/munin/cgi/munin-cgi-graph
<Location /munin-cgi/munin-cgi-graph>
Require local
Require all granted
<IfModule mod_fcgid.c>
SetHandler fcgid-script
</IfModule>
<IfModule !mod_fcgid.c>
SetHandler cgi-script
</IfModule>
</Location>


BASIC認証のパスワードファイルとして以下を指定。新規に作成される。
# htpasswd -c /etc/munin/munin-htpasswd [USERNAME]

# vi /etc/munin/munin-node.conf
最終行に以下追加。

h67 [FQDN]


munin-nodeは既にActiveになっている。
# systemctl status munin-node
muninは起動しておらず、maskedになってる。
# systemctl status munin

# systemctl restart apache2

他のPCから、アクセスするとmuninのページが開いた。

[PC]Oculus GoのMAC調べ

Oculus Goを買ったが無線LAN管理上、MACが知りたい。

https://dashboard.oculus.com/

ここへいき、Oculusアカウントでログイン
 > 同意して進む
 > 新しい団体を作るために名前を登録
これで、後で行うOculusスマホアプリの開発者モードの設定をONにできるらしい。

Oculus Goを電源入れた状態へ。

Oculusスマホアプリを入れたスマホで、アプリ起動
 > 「設定」へ
 > Oculusとペアリングする。
 > Bluetoothと位置情報をONにする必要あり。
 > 近くのOculusとして表示されるから、クリックしてペアリング
 > 完了したら、ペアリングしたやつをクリック
 > 下に「その他の設定」へ
 > 「開発者モード」へ
 > ここでチェックをONにする。
確かに、事前にOculus Webサイトで団体名登録しておいたので、ONに出来た。


次にOculus GoをPCとUSBケーブルで接続する。
しかし、何も起きない。認識されない。
開発者モードONになってると認識出来ない??というブログを見たので、OFFにしてみたが変わらず。
WindowsだけはなぜかADBドライバのインストールが必要だ、という事なので、以下からダウンロード。

Oculus Go ADB Driver
https://developer.oculus.com/downloads/package/oculus-go-adb-drivers/

oculus-go-adb-driver-2.0.zip
ダウンロードしたzipを解凍し、
oculus-go-adb-driver-2.0\usb_driver\android_winusb.inf
を右クリック > インストール > Oculusを信頼 > 正常にインストール完了しました。

これでUSBケーブルを抜き差ししても認識されない。。。。なぜだ?
もしかして、と思って違うUSBケーブルに変えてみたら、デバイスマネージャにようやく表示された。
つまり、通信出来ないUSBケーブルだったから失敗してたのか。

デバイスマネージャ > ポータブルデバイス > VR-Headset

まとめると、成功した組合せは以下。
1.Oculus Go ADB Driverをインストールする。
2.スマホのOculusアプリで開発者モードはOFFにしておく
3.通信可能なUSBケーブルを使う。
4.PCはWindows 10

PCでOculus Goが認識されたのだが、しかし、このままではadbコマンドは使えない。
開発者モードOFFのままだから。
そこで、この状態からスマホで開発者モードONにしてみたら・・・

デバイスマネージャ > ポータブルデバイス > VR-Headset
が消えて
デバイスマネージャ > Oculus Device > Oculus ADB Interface
となった。

この状態でDOSプロンプトからadbコマンドが効くとか書いてあるのを見たが、実行出来ず。

https://developer.android.com/studio/releases/platform-tools
のページから
SDK Platform-Tools for Windows
をクリックしてダウンロード。
具体的には以下がダウンロードされた。
platform-tools_r28.0.1-windows.zip

これを解凍して、Cygwinからadb.exeを実行してみる。

# cd /cygdrive/c/platform-tools_r28.0.1-windows/platform-tools
# ./adb.exe devices
List of devices attached
1Kxxxxxxxxxxx unauthorized

* daemon not running; starting now at tcp:5037
* daemon started successfully

なんか表示された。
でもunauthorizedになってる。

もしやと思いOculus Goをかぶってみると、質問が2個されるので、YESと答える。
USBデバッグを許可するか? > YES
ファイルアクセスを許可するか? > YES

これで再度実行してみる。
# ./adb.exe devices
List of devices attached
1Kxxxxxxxxxxx device

これでOculus Goへアクセス出来るようになったようだ。

# ./adb.exe shell ip addr show wlan0

7: wlan0: mtu 1500 qdisc mq state UP group default qlen 3000
link/ether xx:xx:xx:xx:xx:xx brd ff:ff:ff:ff:ff:ff
inet 192.168.xx.xx/24 brd 192.168.xx.255 scope global wlan0
valid_lft forever preferred_lft forever
inet6 fe80::xxxx:xxxx:xxxx:xxxx/64 scope link
valid_lft forever preferred_lft forever


これでようやくMACアドレスが確認出来た。

[LM32](4).mem生成(Micosystem Builder)

久しぶりにやったら.elfから.hexが作れない。

host: x1 carbon
OS: Windows 10 Pro
Cygwin: 64bit

objcopy.exe -S -O $swname/Debug/$swname.elf $swname.srec

以前はこれをCygwinで実行すると.srecが生成出来たのに。効かない。
.srecが生成されたら、後はDesign Wave Magazine付属のプログラムで.mifと.hexへ変換していた。
以下どちらのobjcopyでも何も生成されず、エラーも出ず。

c/lscc/diamond/3.10_x64/micosystem/gtools/lm32/bin/lm32-elf-objcopy.exe
c/lscc/diamond/3.10_x64/micosystem/gtools/lm32/lm32-elf/bin/objcopy


Micosystem BuilderのSoftware Deploymentを使う
流れとしては、launchmicosystem.exeでEclipseのLattice Mico System(LMS) Builderを起動して、
メニューバー下の、LMS 1.0 D3.10画面で、HWプラットフォーム(ether.msb)を作り、
その隣の、C/C++画面で、ソフトウェアをビルドし.elfを作り、
その次に、SoftwareのDeploymentへ進む。

具体的には、
LMSメニュー > Tools > Software Deployment
 > 左のメニューから「Mico32 Multi On Chip Memory Deployment」をダブルクリック
 > 新規の設定画面に対して以下を入力してから、Startで.memが生成された。

Name : ether_soft
Project: Browseで開くと、C/C++画面で作ってビルドしたプロジェクト名を選択
C/C++ Application: Debug/ether_soft.elf を選択
Save Memory Initialization Files to directory: 保存先DIRを指定
Memory Initialization Files Prefix: これを何か入力しないとエラーが出た。


尚、「Mico32 On Chip Memory Deployment」の方も試してみたが、Startボタンが押せなかった。
おそらく今回の回路では、Inst RAMとData RAMが別々になっているので、Multiの方を使うべきのようだ。

ここまでで.memが出来たが、このままではINTEL FPGAのMemoryで初期値として渡せない。

0000407c
0000407c
0000407c
 :

なので、対応するINTEL HEX形式へ変換する。

過去に作ったRobyプログラムで変換できる。記事の最後の方のソースを使う。

[LM32].mem to Intel-Hex変換Ruby
http://bobgosso.blog13.fc2.com/blog-entry-338.html

あとはCygwinから以下を実行して、.hexへ変換し、さらにそれをシミュレーション場所へコピーして読み込めるようにする。

ruby ../../../../common/ruby/mem2intel_hex_v01.rb ether_soft_Data_IM.mem ether_soft_Data_IM.hex
ruby ../../../../common/ruby/mem2intel_hex_v01.rb ether_soft_Instruction_IM.mem ether_soft_Instruction_IM.hex

\cp ether_soft_Data_IM.hex ../../../../board/de2-115/
\cp ether_soft_Instruction_IM.hex ../../../../board/de2-115/



デバッグ用にobjdumpも作っておく


以下で生成可能。しかし、Cygwin64bitでは動作せず。32bitで実行したら成功した。

lm32-elf-objdump.exe -D ether_soft.elf > ether_soft.elf.objdump

[ネスペ]まとめ

ARP、Gratuitous ARP

ノードA(MAC=A、IP=①) <-------> ノードB(MAC=B、IP=②)









         動作コード 送信元MAC 送信元IP 宛先MAC 宛先IP コメント
通常MAC問合せ                           
ARP Request 1 A 000000000000 通常のARPは宛先MAC=0で問合せ
ARP Reply   2 B A
IPアドレス競合検知                           
ARP Request 1 A 0.0.0.0 000000000000 OSはIP更新の際、「IPを①に設定したよー」と周囲に問合せる
Gratuitous ARP 2 B B 「既にIP①は設定してるよー」と答える
周辺機器のテーブル更新                           
Gratuitous ARP 2 X FFFFFFFFFFFF ノードB機器を交換した時、「私MAC=Xに変わったよー」と通知する




ルーティングプロトコル






分類 プロトコル ルーティングアルゴリズム メトリック 更新間隔 更新に使用するマルチキャストアドレス
EGP(Exterior Gateway Protocol) BGP(Border Gateway Protocol) パスベクタ型 パス(経路)+方向(ベクタ)
IGP(Interiror Gateway ProtocolRIPv2 ディスタンスベクタ型 ホップ数 定期的 224.0.0.9
OSPF リンクステート型 コスト 変更があった時 224.0.0.5(All OSPFルータ)、224.0.0.6(All DRルータ)
EIGRP ディスタンスベクタ(ハイブリッド)型 帯域幅+遅延 変更があった時 224.0.0.10




OSPF

Helloパケット交換(マルチキャスト(224.0.0.5)で送信)
 > 隣接ルータとネイバー関係確立
 > ネイバーを認識するとネイバーテーブルに格納
 > ネイバー存在を確認するために定期的にHelloパケットを送信
 > 自身のLSA(Link State Advertisement、リンク情報)をネイバールータに送信
 > 受信したLSAはトポロジテーブル(LSDB = Link State Database )に格納
 > 同じエリア内の全てのルータで同じLSDBを保持
 > LSDBに格納されたLSAを組み合わせてネットワーク全体の地図(トポロジマップ)を作成
 > SPFアルゴリズム(ダイクストラ)を実行し階層ツリーのSPFツリーを作成


内部ルータ: 全I/Fが同エリアに接続されてるルータ。
バックボーンルータ: 1つ以上のI/Fがバックボーンエリアに接続しているルータ。
エリア境界ルータ(ABR = Area Border Router): 異なるエリアを接続しているルータ。
AS境界ルータ(ASBR = AS Boundary Router ) : 1つ以上のI/Fが外部ASのルータと接続しているルータ。


代表ルータ(DR =Designated Router): DRとBDRの間だけでLSAを交換する。
バックアップ代表ルータ(BDR =Backup DR): 
DROTHER : DR、BDRに選出されなかったOSPFルータ。

Helloパケット交換
 > 2Way Stateになった
 > 中に含まれるOSPFプライオリティ値を見る
 > 一番大きい値 = DRになる
 > 二番目に大きい値 = BDRになる
 > もしプライオリティ値が同じ場合は、ルータIDの大きい方からDR、BDRになる。

 ※ DRとBDRはセグメントごとに選出。OSPFプライオリティ値はI/F毎に設定。
   例えば、あるOSPFルータがセグメント1ではDR、セグメント2ではDROTHER、という場合もある。

LSAを交換するネイバー: ルータ間の関係 = Adjacency(アジャセンシ―) > ステータス=Full
ただのネイバー: ルータ間の関係 = Neighbor(ネイバー) > ステータス=2Way



STP

データリンク層(L2)の冗長化技術

STP有効のスイッチを接続
 > BPDUを交換して、ブリッジIDを比較

  <STPで使用されるBPDUバージョン0のフォーマット>
  プロトコル    2Byte : 0=STPを示す
  バージョン    1Byte : BPDUでは0
  タイプ      1Byte : 
  フラグ      1Byte : 
  ルートブリッジID 8Byte : 一番小さいIDがルートブリッジになる
  ルートパスコスト 4Byte : ルートブリッジからのパスコスト合計
  ブリッジID    8Byte : 自身のブリッジID (= ブリッジプライオリティ 2Byte + MAC 6Byte

 > 一番小さいブリッジプライオリティを持つスイッチがルートブリッジ、2番目はセカンダリルートブリッジ、になる。
 > もしブリッジプライオリティが同じ場合は、次にMACアドレスを比較して、一番小さいMACがルートブリッジへ。
    (注)実際には、ルートにさせるスイッチに、一番小さいブリッジIDを付けておく。

 > ルートブリッジからのパスコストが最も大きいポートが、ブロッキングポートになる。
   (言い換えると、指定ポート(セグメントで一番RBに近いポート)でも、ルートポート(ブリッジで一番RBに近いポート)でもないポートがブロッキングポートになる)

  <帯域幅によりパスコストが決まる>
  10Mbps  : 100
  100Mbps  :  19
  1000Mbps :  4
  10Gbps  :  2



具体的な流れ
 1.STP対応ブリッジがループを検出した。
 2.ブロッキング(フレームの転送停止)して、ループを抑える。
 3.リスニング(BPDU受信によるトポロジ把握)
 4.ラーニング(MACアドレスを学習)
 5.フォワーディング(指定ポートとルートポートの転送開始) ※ ブロッキングポートは転送停止。




VPN















方式変更点タイププロトコルコストセキュリティ 速度 可用性 利用ネットワーク暗号化トレンド
専用線専用回線ギャランティ型?なし?××(専用線) ◎◎ × 専用線(閉域網)を占有非常に高額で課題あり、VPN技術へ
IP-VPNギャランティ型MPLS×(L3ルータ) 専用線(閉域網)を複数企業で共有無し(MPLSでユーザ毎に分離)専用線に比べ、距離に依存しない料金体系が画期的。しかしIP通信のみ。L3 VPN。
広域イーサネットギャランティ型〇(L2SW) 専用線(閉域網)を複数企業で共有 IP-VPNの弱点「IP通信のみ」、を解決。L2でVPN構成し、マルチプロトコル実現。しかしIP通信のみでも問題なくなってきてる。
インターネットVPN◎◎ × ×(帯域保証なし) ×(専用線系に比べ可用性低い) インターネット網IP-SEC/SSLBB回線の改善により帯域・信頼性向上し、企業でも利用されるように。
LAN間接続VPN(インターネットVPN)
リモートアクセスVPN(インターネットVPN)
IPSec-VPN(インターネットVPN)全クライアントに専用ソフト/L2TP + IPSec 課題:全クライアントに専用ソフト、クライアントにセキュリティチェック機能無し、ユーザに応じたアクセス制御が困難。 SSL-VPNへ。
SSL-VPN(インターネットVPN)サーバ機器の対応/クライアントアプリのSSL対応
エントリーVPN ベストエフォート型 〇(BB回線利用しながら、インターネットに接続せず閉域網を構成) 閉域網(インターネット接続無し)インターネットVPNの不安の種「インターネット接続」を出来なくしたもの。



SSL-VPN
  1.リバースプロキシ方式
    動作フロー
      1.クライアント: https://www.hoge.com/aaaへアクセス
      2.SSLサーバ: アクセスしてきたクライアントの認証
      3.SSLサーバ: URL変換 > http://aaa.hoge.com
      4.クライアント: aaaサーバと通信可能になる
    課題
      ・Webブラウザで動作しないアプリは使用できない。

  2.ポートフォワーディング方式
    概要
      ・クライアントにJavaやActiveXモジュールを追加させてSSL-VPN通信する事でWebブラウザで動作しないアプリも使えるようにした。
    動作フロー
      1.クライアント: https://www.hoge.com/aaaへアクセス
      2.クライアント: Javaアプレットなどのモジュールを自動的にダウンロードして、PC上で動作させる。
      3.クライアント: JavaアプレットがSSL-VPN GWとSSLトンネルを確立
      4.クライアント: 起動したアプリが、PC上のSSL-VPNエージェント(Javaアプレット)と通信する。
                 VPN先とアクセスする場合は、Javaアプレットにデータが渡される。
      5.クライアント: Javaアプレットは、アプリに対応したTCP/UDPポート番号に対応したSSLコネクション確立。
      6.SSLサーバ: 事前に定義したイントラネット内のサーバ情報(IP/ポート)に基づき、該当サーバへデータを転送。
    課題
      ・

  3.L2フォワーディング方式
    動作フロー
      1.クライアント: https://www.hoge.com/aaaへアクセス
      2.クライアント: SSL-VPNクライアントソフトをダウンロードする。
      3.クライアント: SSL-VPNクライアントソフトがSSL-VPNゲートウェイとSSL通信を確立。
      4.クライアント: SSL-VPNクライアントソフトが、PC上に仮想NICを構築。その仮想NICにはSSL-VPN GWで事前に定義されたIPが割り当てられる。
      5.クライアント: VPN先のサーバが宛先の通信の場合、仮想NIC経由でSSL通信し、SSL-VPN GWに送信される。
      6.VPNサーバ: SSL-VPN GWは、そのデータをイントラネット内の該当サーバに転送。






デジタル署名
  データを送信した人が、間違いなく本人のものであるか証明するための技術。データの送信者を証明できる。

 <AからBへデータを送るケース>
  1.A: 公開鍵秘密鍵を生成。
  2.A: 「公開鍵」を受信者へ送付。 > ★この公開鍵は本物? > 後述の「デジタル証明書」で対策
  3.A: 送りたいデータを作成
  4.A: そのデータのハッシュ値を算出。(MD5/SHA-1)
  5.A: ハッシュ値を秘密鍵で暗号化する。
  6.A: (元のデータ + 暗号化ハッシュ値)を送る。暗号化ハッシュ値は署名の意味。
  7.B: 署名(暗号化ハッシュ値)を、Aの公開鍵で複合化し、ハッシュ値を得る。
  8.B: さらに、元のデータから、ハッシュ値を算出
  9.B: 7と8のハッシュ値が一致したら、Aが送ったデータが「改ざんされてない」事が証明される。



認証局 (Certification Authority)
   デジタル証明書の発行機関。

   「ルート認証局」 = 最上位の認証局。 最上位なので、他の承認を受ける事なく、正当性を証明してる。
   「中間認証局」  = ルート認証局以外。上位からデジタル証明書を発行してもらう事で、正当性を証明してる。



デジタル証明書
   デジタル署名の公開鍵が正しい事を証明するために使う。デジタル署名にデジタル証明書を付属させる。
   ITU-T勧告のX.509で標準仕様として規定。

  1.デジタル署名で「改ざんは防止可能」。 しかし、使った「公開鍵」は本物?
  2.「デジタル証明書」を、デジタル署名に付属させる。 > 公開鍵が本物である証明
    具体的には以下。

    2-1.Webサーバ: 秘密鍵と公開鍵を作る。
    2-2.Webサーバ: Webサーバ公開鍵と各種証明書を、CSR(証明書署名要求)として、認証局(CA)へ送る。
    2-3.CA     : 審査の結果OKなら、そのWebサーバ向けにデジタル証明書を発行。
                  CA秘密鍵で暗号化されたデジタル証明書。これがSSLサーバ証明書となる。
    2-4.クライアント: WebサーバへHTTPSアクセス。
    2-5.Webサーバ: 自身のデジタル証明書を送る。これが提示。
    2-6.クライアント: Webサーバのデジタル証明書を、ブラウザにインストールされている「ルート証明書」の中の公開鍵で複合化。
                  複合化して取り出した「Webサーバ公開鍵」と、同梱された公開鍵が一致すれば、
                  この「Webサーバ公開鍵」はCAが認証したものと証明される。



SSL (Secure Sockets Layer)
    改ざんや、なりすましを防げる暗号化通信技術。
    TLS1.0はSSL3.0を元にしてるが、互換性が無い。
    Google研究者が、2014年10月、SSL3.0の深刻な脆弱性を発見した。この欠点をつく攻撃手法は「POODLE」と名付けられた。

   1.クライアント: WebサーバへHTTPSアクセス。
   2.Webサーバ: サーバの文字色デジタル証明書を提示。
   3.クライアント: そのWebサーバデジタル証明書に署名したCAのルート証明書を検索
               Webブラウザにインストールされている「信頼できるルート証明書」から検索
   4.クライアント: ルート証明書の中の公開鍵で、Webサーバのデジタル証明書を復号して、Webサーバの公開鍵を取り出す。
               複合したデジタル証明書の中の公開鍵(Webサーバ)と、平文で送られた公開鍵を比較。
               一致したら、そのWebサーバの公開鍵は正当なものと証明される。
   5.クライアント: 共通鍵を生成。 (正確には、共通鍵の基になる、プリマスターシークレット情報、だそうだ)
   6.クライアント: 共通鍵を、Webサーバ公開鍵で暗号化して、Webサーバへ送る。
   7.Webサーバ: 送られてきた暗号化共通鍵を、自身の秘密鍵で復号して取り出す。
   8.両方    : この共通鍵でデータを暗号化して、SSL通信を行う。



DNSSEC
    DNS応答の送り元と完全性を検証できる。

   1.ゾーン管理者     : 秘密鍵と公開鍵を作成。
   2.ゾーン管理者     : ゾーン内のリソースレコードを、秘密鍵で暗号化し、電子署名を作成。また、公開鍵を公開。
   3.DNSキャッシュサーバ: 権威ネームサーバへ問合せ。
   4.ゾーン管理者     : 電子署名付きの応答を返す。
   5.DNSキャッシュサーバ: 電子署名を、ゾーン管理者の公開鍵で復号し、平文のDNS応答と比較。
                     一致すれば、正当なゾーン管理者が作成したもので、かつ改ざんも無い事が証明される。



SAML (Security Assertion Markup Language)
    SSO(シングルサインオン)を実現するために必要な、異なるドメイン間でユーザ認証を行うための認証情報の規格。

    IdP (Identity Provider) = 認証情報を提供する側
    SP (Service Provider) = 認証情報を利用する側

   1.ユーザ: クラウドサービスにアクセス
   2.SP  : クラウドサービス(SP)は、ユーザを確認し、SAML認証要求を生成。IdPへリダイレクト。
   3.IdP  : SAML認証を解析し、認証
   4.ユーザ: ユーザ認証
   5.IdP  : SAML認証応答を作成
   6.ユーザ: SAML認証応答と共に、クラウドサービスへリダイレクト
   7.SP  : SAML応答を検証し、ユーザログインを許可
   8.ユーザ: クラウドサービスへログイン



IP-VPN

<説明1>
   IPSecは、暗号化通信を実現する複数プロトコルの集合体。主要なプロトコルは以下3つ。

    1.鍵交換   : IKE (Internet Key Exchange) ・・・ IPSec通信前なので、IKE自身で暗号化通信をサポート。

    2.データ転送: ESP (Encapsulating Security Payload) ・・・ IPヘッダ+ESP、で通信。
       (1)トランスポートモード: IPヘッダ + <データ>(暗号化対象)
       (2)トンネルモード   : 新IPヘッダ + <元IPヘッダ + データ>(暗号化対象) ・・・ 真の受信先の隠蔽可能

    3.完全性と認証: AH (Authentication Header) ・・・ IPヘッダの直後に、「SPI」「シーケンス番号」「認証データ」を挿入。

<説明2>
   フェーズ1: 認証 + フェーズ2の暗号鍵生成
            ◆実行モード
              1.メインモード    : 認証に対向拠点のIPを使用する  > 対向拠点は固定IPにする。
              2.アグレッシブモード:     同上       使用しない > 対抗拠点のIPが変わってもOK。
            ◆暗号化アルゴリズム (フェーズ2で使用する暗号鍵を交換する際に使用)
              DES < 3DES < AES(より安全)

   フェーズ2: データ通信用トンネルの暗号鍵生成 + 制御用IKEトンネル生成
            ◆セキュリティプロトコル (IPsecトンネルで使用)
              1.AH : ○ 認証機能、 × 暗号化
              2.ESP: ○ 認証機能、 ○ 暗号化 > 暗号化も出来るESPが主流。

            ◆暗号化アルゴリズム (IPsecで使用)
              DES < 3DES < AES(より安全)

            ◆動作モード
              1.トンネルモード     : 新しいIPヘッダでパケットをカプセル化。
                新IPヘッダ + ESPヘッダ + <IPヘッダ + TCP/UDPヘッダ + Data + ESPトレーラ> + ESP認証データ
              2.トランスポートモード : 新しいIPヘッダでカプセル化。
                IPヘッダ + ESPヘッダ + <TCP/UDPヘッダ + Data + ESPトレーラ> + ESP認証データ

   その後  : データ通信用IPsecトンネル生成(上り、下り、の2つ)

[FreeBSD]コマンド2

HDD故障した時の交換方法(zpool replace失敗)

以下で状態確認したらDEGRADされてる。
# zpool status

pool: rz2pool
state: DEGRADED
status: ...
action: ... or replace the device with 'zpool replace'.
scan: ...
config:

NAME STATE READ WRITE CKSUM
rz2pool DEGRADED 0 0 0
raidz2-0 DEGRADED 0 0 0
ada1 ONLINE 0 0 0
ada2 ONLINE 0 0 0
2685.. REMOVED 0 0 0 was /dev/ada3
ada4 ONLINE 0 0 0
errors: No known data errors


オープンなPCケースなので、HDDのアクセスランプなんて無いし、どれが故障したHDDだか分からない。
そのため、以下コマンドで認識可能なHDDのシリアル番号を全て調べてリスト化しておく。

# camcontrol identify ada0

pass0: ATA8-ACS SATA 3.x device
pass0: 600.000MB/s transfers (SATA 3.x, UDMA6, PIO 8192bytes)

protocol ATA/ATAPI-8 SATA 3.x
device model TOSHIBA DT01ACA300
firmware revision MX6OABB0
serial number xxxxxxxxxx --> これがシリアル番号
 :


尚、zpool statusでDEGRADEの原因となりREMOVEされたHDDはada3だったが、それも見てみるとOSで外された?せいか、
以下のように見つからない。

# camcontrol identify ada3

camcontrol: cam_lookup_pass: CAMGETPASSTHRU ioctl failed
cam_lookup_pass: No such file or directory
cam_lookup_pass: either the pass driver isn't in your kernel
cam_lookup_pass: or ada3 doesn't exist


また、全てのHDDリスト見るには以下。
# camcontrol devlist
 ※ 表示されなくなるので左端の<は削除してる。

TOSHIBA DT01ACA300 MX6OABB0> at scbus0 target 0 lun 0 (ada0,pass0)
Optiarc DVD RW AD-7200S 1.06> at scbus1 target 0 lun 0 (cd0,pass1)
TOSHIBA DT01ACA300 MX6OABB0> at scbus2 target 0 lun 0 (ada1,pass2)
TOSHIBA DT01ACA300 MX6OABB0> at scbus3 target 0 lun 0 (ada2,pass3)
TOSHIBA DT01ACA300 MX6OABB0> at scbus5 target 0 lun 0 (ada4,pass5)
AHCI SGPIO Enclosure 1.00 0001> at scbus6 target 0 lun 0 (ses0,pass6)


次にシャットダウンして問題のHDDをPCから外す。
# shutdown -p now

接続されている全HDD 5台を確認すると、確かにada3のHDDだけ、メモしたシリアル番号リストになかった。
つまり、シリアル番号がリストにないHDDが問題が発生したHDDなので、それをPCから外す。

外して新しい同等品に交換したら、再度PCを起動。無事起動した。
今度は以下で表示されているので、無事交換したHDDも認識されている。
# camcontrol identify ada3

正常動作してるHDD見ると、パーティションタイプはGPTになってる。
MBRじゃ2TB以上のパーティション扱えないから、3TB HDDを扱うために過去の自分がGPTにしたんだろう。記憶無し。
# gpart show ada0

=> 34 5860533101 ada0 GPT (2.7T)
34 6 - free - (3.0K)
40 1024 1 freebsd-boot (512K)
1064 5853150200 2 freebsd-ufs (2.7T)
5853151264 7381870 3 freebsd-swap (3.5G)
5860533134 1 - free - (512B)


交換したばかりのada3は確認してもパーティションタイプが設定してない?から、No such geomと言われるみたい。
# gpart show ada3
gpart: No such geom: ada0.

GPTパーティションタイプにする。
# gpart create -s gpt ada3


ところで、今やってるように、故障したHDDが認識されていたada3へ、新HDDを交換してada3で認識されている状態において、
どうやってzpool replaceを実行するのか?
調べたら以下にぴったりの回答があった。
https://docs.oracle.com/cd/E19253-01/819-6260/gazgd/index.html

この情報によると、状況によってコマンドが変わるとの事。

①新旧HDDを交換してしまい、新HDDが旧HDDと同じ場所(ada3)になっている場合
 → zpool replace rz2pool ada3
②PCに旧HDD(ada3)、新HDD(ada5)の両方が接続されている場合
 → zpool replace rz2pool ada3 ada5

今回は①のケースなので、以下実行してみる。
# zpool replace rz2pool ada3

すぐに実行完了した。状態を見てみると・・・
# zpool status rz2pool

pool: rz2pool
state: DEGRADED
status: One or more devices is currently being resilvered. The pool will
continue to function, possibly in a degraded state.
action: Wait for the resilver to complete.
scan: resilver in progress since Sat Aug 25 09:29:38 2018
2.39G scanned out of 5.36T at 122M/s, 12h44m to go
590M resilvered, 0.04% done
config:

NAME STATE READ WRITE CKSUM
rz2pool DEGRADED 0 0 0
raidz2-0 DEGRADED 0 0 0
ada1 ONLINE 0 0 0
ada2 ONLINE 0 0 0
replacing-2 REMOVED 0 0 0
2685441344063119102 REMOVED 0 0 0 was /dev/ada3/old
ada3 ONLINE 0 0 0 (resilvering)
ada4 ONLINE 0 0 0

errors: No known data errors


旧HDD(2685441344063119102)に対して、新HDD(ada3)がresilveringという状態になってる。
10分くらい経っても161G resilvered, 12.14% doneくらいで、3TBのresilverには時間かかるね。

他のブログを見ると、新HDDをGPTに設定した後、元の正常HDDのパーティション構成に真似て、
1つ1つパーティションを設定しているのを見たが、あれはスキップしても良いのかな?
今回はGPT設定だけやって、あとはzpool replaceでうまくいってるみたいだし。

っと思ったら、resilverが終わったら、なぜかこんな感じに新旧HDD両方共にREMOVEDになってる。
# zpool status

pool: rz2pool
state: DEGRADED
 :
config:

NAME STATE READ WRITE CKSUM
rz2pool DEGRADED 0 0 0
raidz2-0 DEGRADED 0 0 0
ada1 ONLINE 0 0 0
ada2 ONLINE 0 0 0
replacing-2 DEGRADED 0 0 1
2685441344063119102 REMOVED 0 0 0 was /dev/ada3/old
xxxxxxxxxxxxxxxxxxx REMOVED 0 0 0 was /dev/ada3
ada4 ONLINE 0 0 0

errors: No known data errors


PCの同じスロットで新旧HDDを交換した場合は、replaceコマンドだけで置き換え完了するって書いてあるけど・・・
https://docs.oracle.com/cd/E24845_01/html/819-6260/gayrd.html#gazgd

今更気付いたが、zpool replaceで指定するHDDは、新HDDでなくて、旧HDDの方だった。

このまま新HDDをPCに接続したまま再起動すると、ada4だったHDDがada3として起動し、
しかも故障したHDD(旧HDD)も交換用に追加したHDD(新HDD)もREMOVED扱いのまま。
# zpool status

pool: rz2pool
state: DEGRADED
 :
config:

NAME STATE READ WRITE CKSUM
rz2pool DEGRADED 0 0 0
raidz2-0 DEGRADED 0 0 0
ada1 ONLINE 0 0 0
ada2 ONLINE 0 0 0
replacing-2 DEGRADED 0 0 1
2685441344063119102 REMOVED 0 0 0 was /dev/ada3/old
xxxxxxxxxxxxxxxxxxx REMOVED 0 0 0 was /dev/ada3
ada3 ONLINE 0 0 0

errors: No known data errors


新HDDのSATAデータ線を外してPCを再起動しても、変わらず。

# zpool status
pool: rz2pool
state: DEGRADED
scan: resilvered 143M in 3h2m with 0 errors on Sun Aug 26 11:03:56 2018
config:

NAME STATE READ WRITE CKSUM
rz2pool DEGRADED 0 0 0
raidz2-0 DEGRADED 0 0 0
ada1 ONLINE 0 0 0
ada2 ONLINE 0 0 0
replacing-2 UNAVAIL 0 0 0
2685441344063119102 REMOVED 0 0 0 was /dev/ada3/old
916842558509187076 REMOVED 0 0 0 was /dev/ada3
ada3 ONLINE 0 0 0

errors: No known data errors


起動中に新HDDのSATAデータ線を繋いでも認識されないので、新HDDのSATA電源とデータ線を両方抜いてから、
再度データ線、電源の順に接続すると・・・
rz2poolの他のHDDもREMOVEDされてUNAVAIL状態になった。
シャットダウンしても、途中止まってるようで、telnetログインも拒否される。なぜかpingは通るが、一向に電源切れない。
電源長押しで強制OFF。
その後起動すると、また新HDDが自動的にresilveringされ始めた。
0.1%doneくらいから新HDDの認識がada3から9168xxxxxxに変わって、ONLINEだったのが、REMOVEDに変わった。



旧HDDの接続されていたada3へ新しいHDDを接続して、
zpool replace rz2pool ada3
 ※ 旧HDDのID(長い数字のランダムみたいなもの)を指定するとエラー出たため、ada3と新HDDを指定してる。
   オラクルマニュアルではどちらでもOKと記載あった。
とやっても、結局resilveringの後に、その新HDDがREMOVEDになる原因が分からず。
結局、FreeBSDを再度インストールする事に。
元の構成はOS HDD x1本 + データプール(HDD x 4本でZFS)としてたが、
今度の構成はOSとデータ全部込みでHDD x 5本でZFSを組んでる。



11.2新規インストール

11.2をDVDからインストール。
OS含めたZFSプールは、東芝DT01ACA300 x 5本。512eのHDDなので、ZFSプール作成時のForce 4KはNOにした。
(このHDDは512eなので、ホストから見たら512Bセクターなので。)

portイントール??
# cd /usr/ports/japanese/ne
# make install clean

https://freebsd.sing.ne.jp/11.01/02/08.html

treeインストール
# cd /usr/ports/sysutils/tree
# make
# make install

vimインストール
# cd /usr/ports/editors/vim
# make
# make install
GNOME対応にチェックしたせいか、途中で各ライブラリのコンフィグ画面が起動していちいちOKしないといけないの面倒。
しかもエラーで終わってる。

sshdインストール
# vi /etc/rc.conf
sshd_enable="YES"
# vi /etc/ssh/sshd_config

PasswordAuthentication yes → パスワードのみで認証する設定。
PubkeyAuthentication no →  認証に鍵を使用しない設定。

# /etc/rc.d/sshd restart
# ssh-keygen -t rsa
 ※ パスフレーズは使用しない設定にしたので、EmptyのままEnter

hogeユーザがsuでrootになれるように設定
# vi /etc/group
wheel:*:0:root,hoge  → 末尾に「,hoge」を追加した。


sambaインストール

https://www.kishiro.com/FreeBSD/samba4.html

libiconvを入れておくと、Windows上の日本語フォルダやファイルが正しく表示されるようになる、との事。
確かに以前に作ったFreeBSDのsambaは文字化けしていて困った事ある。これで解決か?
# cd /usr/ports/converters/libiconv
# make config-recursive
# make install clean

続いてsamba48をインストール。
# cd /usr/ports/net/samba48
# make config-recursive
# make install clean

smb4.confを新規作成
#vi /usr/local/etc/smb4.conf

[global]
workgroup = HOGE
server string = Samba Server (FreeBSD)
security = user
hosts allow = 192.168.xxx.
interfaces = 192.168.xxx.yyy/24
map to guest = Bad User
guest ok = yes
guest only = yes
guest account = nobody
load printers = no
log file = /var/log/samba4/log.%m
max log size = 50
dns proxy = no
unix charset = CP932
dos charset = EUCJP-MS
create mask = 600
directory mask = 700
printing = bsd

[share]
comment = Shared Directories
path = /home/share
browseable = yes
writable = yes


# vi /etc/rc.conf

samba_server_enable="YES"


share用フォルダの権限を設定
# chmod 777 /home/share

samba再起動。
# /usr/local/etc/rc.d/samba_server restart


GNU ls 等を使用できるようにするportsインストール。
# cd /usr/ports/sysutils/coreutils
# make
# make install



ん? 既にZFSプールがDEGRADED

以下初期設定やってから気づいたが、zpool statusで状況見てみたら、

# zpool status

pool: zroot
state: DEGRADED
status: One or more devices has been removed by the administrator.
Sufficient replicas exist for the pool to continue functioning in a
degraded state.
action: Online the device using 'zpool online' or replace the device with
'zpool replace'.
scan: none requested
config:

NAME STATE READ WRITE CKSUM
zroot DEGRADED 0 0 0
raidz2-0 DEGRADED 0 0 0
ada0p3 ONLINE 0 0 0
ada1p3 ONLINE 0 0 0
2542862470788629067 REMOVED 0 0 0 was /dev/ada2p3
ada3p3 ONLINE 0 0 0
ada4p3 ONLINE 0 0 0

errors: No known data errors


[Windows]LR-LINK 10G NIC

LR-LINK LREC6860BTがTSUKUMOとかで1万円以下で売ってる。

https://shop.tsukumo.co.jp/goods/6925909302137/104030013000000

やっぱり買ってみた。

z68(Windows、クライアント)
LR-LINK LREC6860BT
 |
XS708Eスイッチ
 |
X520-DA2
h170(FreeBSD、HDD 4台のZFS)

この構成でCentOSのiso(4GBくらい)をコピーしたら、転送速度330MB/sくらいだった。
z68かh170のディスク速度がボトルネックになってる気がする。

[PC]SMBマルチチャネル

z68(Win10) ※ このフォルダを共有してNASとして動作。
インテルI340-T4クアッドポートNIC
 |
スイッチGS116E
 |
x230(Win10)
1 オンボードLAN
2 USB-1GbEアダプタ(LUA4-U3-AGT)
3 USB-1GbEアダプタ(Gigabit USB 3.0 Ethernet Adapterとしか書いてない。型番不明。)


この構成で接続したら、自動的にマルチチャネル出来た模様。
1GbEの理論値を超えて、160MB/sくらい出た。
3ポート分の帯域使い切って、300MB/sくらい出て欲しかったが。原因未確認。

[Ubuntu]コマンド2

DNS設定

apt-get installでインストールしようとしたら、名前解決が出てないようなエラー。
以前もDNSサーバ構築した際にインストールしたはずなのだが。設定が消えてる?

とにかく状態確認すると、GlobalにDNS Servers:の欄が出てない。
# systemd-resolve --status

Global
DNSSEC NTA: 10.in-addr.arpa
16.172.in-addr.arpa
168.192.in-addr.arpa
 :


DNS設定には/etc/resolv.confを変更すると思ってたが、調べてみると
Ubuntu 17.04以降ではsystemd-resolvedがdefault動作のため、/etc/resolv.conf
を書き換えても変更されない、だった。
# vi /etc/systemd/resolved.conf

[Resolve]
DNS=192.168.10.130 8.8.8.8 > ここをコメントアウトして記入


# systemctl restart systemd-resolved

すると、Globalに設定内容が反映された。
# systemd-resolve --status

Global
DNS Servers: 192.168.10.130
8.8.8.8
DNSSEC NTA: 10.in-addr.arpa
16.172.in-addr.arpa
168.192.in-addr.arpa
 :


この後apt-get install でインストールしたら、ちゃんと出来た。DNS設定が無かった事が原因だった。



DNSサーバ構築

https://www.server-world.info/query?os=Ubuntu_14.04&p=dns

# sudo apt-get -y install bind9 bind9utils
# sudo vi /etc/bind/named.conf
include "/etc/bind/named.conf.options";
include "/etc/bind/named.conf.local";
#include "/etc/bind/named.conf.default-zones";
include "/etc/bind/named.conf.internal-zones";
include "/etc/bind/named.conf.external-zones";


# sudo vi /etc/bind/named.conf.internal-zones
   
view "internal" {
match-clients {
localhost;
192.168.10.0/24;
};
zone "hoge.link" {
type master;
file "/etc/bind/hoge.link.lan";
allow-update { none; };
};
zone "10.168.192.in-addr.arpa" {
type master;
file "/etc/bind/10.168.192.db";
allow-update { none; };
};
include "/etc/bind/named.conf.default-zones";
};


# sudo vi /etc/bind/named.conf.external-zones


view "external" {
match-clients { any; };
allow-query { any; };
recursion no;
# 外部向け正引き情報を定義
zone "hoge.link" {
type master;
file "/etc/bind/hoge.link.wan";
allow-update { none; };
};
zone "x.y.z.121.in-addr.arpa" {
type master;
file "/etc/bind/x.y.z.121.db";
allow-update { none; };
};
};


# sudo vi /etc/bind/named.conf.options


options {
directory "/var/cache/bind";
allow-query { localhost; 192.168.10/24; };
allow-transfer { localhost; 192.168.10/24; };
allow-recursion { localhost; 192.168.10/24; };

dnssec-validation auto;
auth-nxdomain no;
listen-on-v6 { none; };
};


内部正引き設定ファイル
# sudo vi /etc/bind/hoge.link.lan


$TTL 1D
@ IN SOA dns.hoge.link. root.hoge.link. (
2018050801 ;Serial
3600 ;Refresh
1800 ;Retry
604800 ;Expire
86400 ;Minimum TTL
)
IN NS dns.hoge.link.
IN A 192.168.10.[IP of DNS server]
IN MX 10 dns.hoge.link.

dns IN A 192.168.10.[IP of DNS server]


外部正引き設定ファイル
# sudo vi /etc/bind/hoge.link.wan


$TTL 1D
@ IN SOA dns.hoge.link. root.hoge.link. (
2018050801 ;Serial
3600 ;Refresh
1800 ;Retry
604800 ;Expire
86400 ;Minimum TTL
)
IN NS dns.hoge.link.
IN A [global IP]
IN MX 10 dns.hoge.link.

dns IN A [global IP]


内部逆引き設定ファイル
# sudo vi /etc/bind/10.168.192.db


$TTL 1D
@ IN SOA dns.hoge.link. root.hoge.link. (
2018050801 ;Serial
3600 ;Refresh
1800 ;Retry
604800 ;Expire
86400 ;Minimum TTL
)
IN NS dns.hoge.link.
IN PTR hoge.link.
IN A 255.255.255.0

130 IN PTR dns.hoge.link.


外部逆引き設定ファイル
# sudo vi /etc/bind/x.y.z.121.db


$TTL 1D
@ IN SOA dns.hoge.link. root.hoge.link. (
2018050801 ;Serial
3600 ;Refresh
1800 ;Retry
604800 ;Expire
86400 ;Minimum TTL
)
IN NS dns.hoge.link.
IN PTR hoge.link.
IN A 255.255.255.248

x IN PTR dns.hoge.link.






zabbixサーバインストール

ここへアクセス。
https://www.zabbix.com/jp/download?zabbix=3.4&os_distribution=ubuntu&os_version=bionic&db=MySQL
Install zabbix from packageでサーバをインストールする手順が見れる。
既にzabbix3.4、Ubuntu、18.04(bionic)、MySQLが選択されているはず。
するとその下の手順2番に、ダウンロード先が表示されている。

a. Install Repository with MySQL database
# wget https://repo.zabbix.com/zabbix/3.4/ubuntu/pool/main/z/zabbix-release/zabbix-release_3.4-1+bionic_all.deb
# dpkg -i zabbix-release_3.4-1+bionic_all.deb
# apt update

b. Install Zabbix server, frontend, agent
# apt install zabbix-server-mysql zabbix-frontend-php zabbix-agent

c. Create initial database
documentation
# mysql -uroot -p
password > rootパスワードでログインできる。
mysql> create database zabbix character set utf8 collate utf8_bin;
mysql> grant all privileges on zabbix.* to zabbix@localhost identified by 'password'; > passwordは任意のパスワードを設定。
mysql> quit;

# zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p zabbix
Enter password: > 先ほど設定したzabbixアカウントのパスワードを入力
だいぶ長い。3分くらい待つと終わった。

d. Configure the database for Zabbix server
# vi /etc/zabbix/zabbix_server.conf
DBPassword=password > passwordは任意のパスワードを設定。

e. Configure PHP for Zabbix frontend
# vi /etc/zabbix/apache.conf
php_value date.timezone Asia/Tokyo > 2か所共にコメント解除して、Asia/Tokyoに修正。

f. Start Zabbix server and agent processes
# systemctl restart zabbix-server zabbix-agent apache2
# systemctl enable zabbix-server zabbix-agent apache2

これでzabbixサーバが起動した。

他PCのブラウザから、http://192.168.xxx.yyy/zabbix へアクセスするとzabbixページが表示された。
 > Configure DB connection = MySQL、localhost、Database port=0、database name=zabbix、User=zabbixとなっているdefault状態で、先程設定したパスワードを入れ、Next Step
 > Zabbix server details = Host=localhost、Port=10051となっているdefault状態で、そのままNext Step。Nameはオプションとの事なので未記入。
 > Pre-installation summary = 以下になった。チェックし、Next Step

Database type MySQL
Database server localhost
Database port default
Database name zabbix
Database user zabbix
Database password *******

Zabbix server localhost
Zabbix server port 10051
Zabbix server name

 > Congratulations! You have successfully installed Zabbix frontend.、と出て、Finishへ

すると、以下のWelcomページになるので、Admin、zabbixでログイン。AdminのAは大文字にすること。
https://www.zabbix.com/documentation/3.4/manual/quickstart/login

[PC]マウスポインタを速くする

Thinkpad USBトラックポイントキーボードのマウスポインタが遅い。
コントロールパネル設定で最速にしても遅い。

レジストリエディタ
 > HKEY_CURRENT_USER
 > Control Panel
 > Mouse
 > MouseSpeed
 > 現在の値1から2へ変更。

[PC]W10Wheel.NET

Thinkpad USBトラックポイントキーボードをWindows10のz68 デスクトップPCへ接続して使っているが、
真ん中ホイールが効かない。

キーボードは確かこれ。今のThinkpadノートPCに比べ、ごつごつとしたキータッチ。
レノボ・ジャパン ThinkPad USB トラックポイントキーボード(日本語) 55Y9024
昔買ったThinkpad T60に似たタッチ感。

Lenovoから探したドライバで試すが、真ん中クリックのスクロールが、Win10標準?の丸いマークが出てくるやつで、
反応も鈍い。

試したドライバは以下。中にはWindows10対応って書いてあったものでもうまくいかず。
gggr03ww.exe
Input_Driver_X8HNX_WN_17.0.11.1_A01.EXE

最終的に、昔同じ悩みの時に使ってたWheelBallを思い出したが、WIndows10では動かなかった。
なので、後継?と言われている以下を使った。
https://github.com/ykon/w10wheel.net/releases
W10Wheel.NET-2.7.zip

W10Wheelを起動して、設定でトリガを「中央」にしておくと、真ん中クリックスクロールが良くなった。

[PC]PH550Gプロジェクタ

https://www.lg.com/jp/projector/lg-PH550G

今までは撮影した動画をソニービデオカメラHDR-PJ760Vのプロジェクタ機能で天井に投影して見てた。
しかし、このビデオカメラは外部入力を投影出来ないのが不満点。
しかも、撮影した動画はNASで管理したくてデータをNASへ移してしまうので、過去の動画は見れなくなってしまう。

なので、これ買ってみた。

バッテリー動作で、Bluetoothで音楽はスピーカーにつないで、映像はPCからMiracastで無線接続。
つまり、電源も映像も音声も全て無線だからケーブルは1本も必要ない。
イイね、これ。

Miracastでの接続方法

なんだか接続方法が分からなくてハマったのでメモ。

Windows 10デスクトップ画面の右下隅をクリック
 > 新しい通知とかのメニューが出てくる。
 > 表示
 > ワイヤレスディスプレイに接続する

ここでPH550Gが検出出来なくて困ったが、原因はPH550Gの入力モードがMiracastになってなかっただけ。
やり方は以下。

 > PH550Gリモコンの右上、入力ボタンで、HDMIからScreen Shareに切り替え。
 > すると、PC上で検出出来るので、それをクリックすれば自動的に接続出来た。

Lenovo X1 carbon : 接続成功
ARROWS M01 : 接続成功
Lenovo X230 : これは検出出来たのに、接続しようとしたら、なぜか失敗する。

[FreeNAS]コマンド

インストール(9.3 stable 201602031011)


OSインストール用HDDは1本 (他のHDDはデータ用に)
rootパスワードを設定
インストール後、再起動 (このすきにDVDを外す)
再起動すると、なんだかよくわからない暗号みたいな画面が長く続く。
一度Ctrl-Cで強制終了したら、表示された?IPへアクセスしてWeb GUIへログイン出来たが、そもそもGUIがバグっていて、先に進めない。
再起動して、今度はさっきの暗号画面を我慢して待つ。
終わると、Web GUIへログイン出来た。正常。

Group、Userを追加。
Storage > HDD 3本でStriping設定。Volumeを作った。
Sharingメニュ > Windows > 設定メニュで先ほど作ったVolumeを指定。
CIFSでアクセス出来るようになった。

[Windows]プロダクトキー確認

OSインストール後は、コントロールパネル > システムでもキーが見れない。
プロダクトIDとプロダクトキーは違うもの。

http://www.atmarkit.co.jp/ait/articles/0907/10/news112.html

ここを参考に確認してみる。

末尾5ケタだけの確認ならコマンドプロンプトでできる

コマンドプロンプト > slmgr -dlv > ウィンドウ開く > プロダクトキーの一部、という箇所に記載


フルキー確認ならWindowsProductKey

http://www.rjlsoftware.com/software/utility/winproductkey/download.shtml

Compressed .ZIP File > winproductkey.zip をダウンロード(現時点v1.07)
  > 解凍 > winproductkey.exe を実行 > ウィンドウが起動し、Windows Product Key、に記載。

[Ubuntu]トラブルシューティング

apt update実行時のE: Sub-process returned an error code

Ubuntu 16.04 LTS
OSインストール直後、以下実行するとエラー。

$ sudo apt update
...
E: Problem executing scripts APT::Update::Post-Invoke-Success 'if /usr/bin/test -w /var/cache/app-info -a -e /usr/bin/appstreamcli; then appstreamcli refresh > /dev/null; fi'
E: Sub-process returned an error code



https://sekisuiseien.com/computer/10530/

こちらを参考にさせて頂き、以下を実行

# cd /tmp
# mkdir asfix
# cd asfix
# wget https://launchpad.net/ubuntu/+archive/primary/+files/appstream_0.9.4-1ubuntu1_amd64.deb
# wget https://launchpad.net/ubuntu/+archive/primary/+files/libappstream3_0.9.4-1ubuntu1_amd64.deb
# sudo dpkg -i *.deb



再度実行してみると成功した。

# apt update

アップグレードできるパッケージが678個あります。xxxx

[python]コマンド

requests HTTPライブラリ

import requests
target_url = 'http://tech.nikkeibp.co.jp/'
res = requests.get(target_url)



# GET
requests.get('URL')
# POST
requests.post('URL')
# PUT
requests.put('URL')
# DELETE
requests.delete('URL')
# header の取得
requests.head('URL')





Jupyterインストール

Windowsキー > anacon・・ とタイプ > Anaconda Promptを起動
 > pip install msgpack
 > pip install jupyter



seleniumインストール

Windowsキー > anacon・・ とタイプ > Anaconda Promptを起動
 > pip install selenium


[GIT]運用

ローカル環境構築 ~ リモートへのpushまで

・githubへアカウントを作る。

・github上でレポジトリを作る。
 > 名前を決める。
 > publicにする(privateはコストかかるから)
 > initialize by READMEのチェックは外す

・ローカルPCでCygwinを起動。

・あるフォルダ以下で
git init
を実行。

・ローカルレポジトリにファイルをaddする。
git add a.txt

・ローカルレポジトリのファイルをcommitする。
git commit -m "hoge"

・登録したgithubレポジトリを、リモートレポジトリとしてoriginに登録する。
git remote add origin https://github.com/xxxx/yyyy.git
※ 最初にこれで登録したレポジトリから別のレポジトリにしようとしたら、
fatal: remote origin already exists.

・この場合は、
git remote rm origin
でoriginの登録を削除してから、再度
git remote add origin https://github.com/xxxx/yyyy.git
とすると成功する。

・そうしたらローカルのファイルをリモートにpushする。
git push origin master
そもそも、さっきのコマンドで登録せずに、以下で直接指定してもOK。でも面倒だよね。
git push https://github.com/xxxx/yyyy.git master




リモートブランチをローカルにクローン

・レポジトリも初期化してない環境で、リモートのレポジトリをコピーして作業始めるには以下コマンド。
git clone https://github.com/xxxx/yyyy.git
これでレポジトリがコピーされたので、作業していけばいい。



ブランチ方針

master
develop
hotfix

[PC]NAS

IODATA HDL-GT1.6の調子が悪い。
突然HDDを認識しなくなったので、HDD換装してみた。

内蔵HDD: SAMSUNG 400GB
新規HDD: 東芝 DT01ACA050 500GB

手順:
接続を見直したら、何とか正常起動したので、この間に、
4本中1本をぶっこ抜く。
 > それでもRAID5なので動作してる。

新規HDDは過去パーティションなどいじってたので、
別のLinux PCで、fdiskで以下を実施。
 > パーティションを全て削除
 > 新規にPrimaryパーティションを作る。(全容量含む)
 > System ID = 83のまま、wでsyncして終了。

新規HDDをNASへ挿入。
 > これでリビルドが始まる(だいたい10hくらいで完了かな?)

リビルド完了したら、これで1本の換装が完了になるので、同じ作業を残り3本分繰り返す。


現在、4本目のリビルド中だが、3本の状態で1.2TBと表示されてる。
つまり500GBの容量を全て使えておらず、元の400GB分だけリビルドされたみたい。
容量全て使うための手順はまだ調べてない。

[PC]X1マルチモニタ

マルチモニタをやってみる。

■使った機材

ホスト: Lenovo X1 carbon
OS: Windows 10 Pro 64bit
グラフィックアダプタ: VGA-USB3.0/HDMI
USBハブ: USB-HVM4155V


■構成

画面1: X1本体
画面2: X1のHDMI出力 > モニタ
画面3: X1のminiDP出力 > miniDP to HDMI変換アダプタ > モニタ
画面4: X1のUSB > USB-HVM4155V > VGA-USB3.0/HDMI > モニタ

VGA-USB3.0/HDMIがUSBハブ経由で動いたので、x1にあと1つUSBポートあるし、
5画面まではいけそうだ。

■VGA-USB3.0/HDMI Win10ドライバ
http://www.kuroutoshikou.com/product/multimedia/peripherals/vga-usb3_0_hdmi/
このページの「Win8.1ドライバ」からドライバ入手。(vga-usb3.0_win8.1driver.zip)

解凍して実行すると、既に最新バージョンが入ってる、と言われた。
おそらく過去にASUS MB16Bを接続して使ってたので、そのドライバが同じだったみたい。
X1をシャットダウンして、VGA-USB3.0/HDMI接続してからX1起動したら、無事動作。

[GIT]スタートアップ

スタートアップ

ここを参考にさせて頂いた。
https://employment.en-japan.com/engineerhub/entry/2017/01/31/110000#Git%E3%81%A8GitHub%E3%81%AE%E5%9F%BA%E7%A4%8E%E7%9F%A5%E8%AD%98

Cygwin64にgitをインストール > setup.exeからdevel/gitのみ追加。

# git config --global user.name "ユーザー名"
# git config --global user.email "メールアドレス"
# git config --list


# ssh-keygen -t rsa -b 4096 -C "hoge@gmail.com"
生成場所デフォルト
パスフレーズあり

/home/bob/.ssh/id_rsa
/home/bob/.ssh/id_rsa.pub
が生成された。


なかったので新規作成する。
# vi /home/bob/.ssh/config

Host github
HostName github.com
User git
IdentityFile ~/.ssh/id_rsa




次にgithubアカウントを登録。
https://github.com/
最後に登録emailへVerify依頼が来るので対応。

githubへログイン > 練習用のtestレポジトリを作成。
 > 右上のプロフィールメニュー > Settings
 > 左側のSSH and GPG keys
 > New SSH Key
 > 枠へ、先程生成した公開鍵(id_rsa.pub)をコピペして登録。

Windows上Cygwin64 > ssh github

The authenticity of host 'github.com (192.30.xxx.xxx)' can't be established.
RSA key fingerprint is SHA256:xxxxxxxxxxxxxxxxxx.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'github.com,192.30.xxx.xxx' (RSA) to the list of known hosts.
Enter passphrase for key '/home/bob/.ssh/id_rsa':
PTY allocation request failed on channel 0
Hi xxxxxx! You've successfully authenticated, but GitHub does not provide shell access.
Connection to github.com closed.



[Windows]コマンド

Zabbixエージェントインストール

https://qiita.com/k7tak29/items/3b3453db40672e632c11

Precomiled Agentのページからダウンロードできる。
https://www.zabbix.com/jp/download_agents

一番上をダウンロード。
Zabbix 3.4 3.4.6 Windows (All) i386,amd64

解凍する。
zabbix_agents_3.4.6.win\bin\win64
以下のexeの3つを、C:\直下にzabbix_agentフォルダを作り、そこへコピーする。

一方、binフォルダではなく、confフォルダ内のzabbix_agentd.win.confも、C:\zabbix_agent\以下へコピー。
その時、名前はzabbix_agentd.confにする。

Power Shellを開き、C:\zabbix_agentへいく。
PS C:\zabbix_agent> .\zabbix_agentd.exe -i -c zabbix_agentd.conf
zabbix_agentd.exe [423948]: ERROR: cannot connect to Service Manager: [0x00000005]
となった。

原因は、管理者として実行してないかららしい。
Windowsスタートメニューのコマンドプロンプトのその他メニューから、管理者として実行をえらび開く。

# zabbix_agentd.exe -i -c zabbix_agentd.conf

zabbix_agentd.exe [29588]: service [Zabbix Agent] installed successfully
zabbix_agentd.exe [29588]: event source [Zabbix Agent] installed successfully

今度は成功した。



EFIパーティションを削除

コントロールパネルの管理ツール、ディスクの管理からは、EFIパーティションが削除出来ない。
以下方法で削除できた。

Winキー > コマンドと検索 > コマンドプロンプトで右クリック > 管理者として実行
 > diskpartと実行
 > list disk
 > select disk 4 ※ ディスクの管理で見た番号
 > list partition ※ サイズ200MBの削除したいパーティションが1番として表示された。
 > select partition 1
 > delete partition
仮想ディスクサービスエラー:
force protected パラメーターを設定しないと、保護されたパーティションは削除できません
 > delete partition override
DiskPart は洗濯されたパーティションを正常に削除しました。



telnetでWebサーバアクセス

コマンドプロンプト開く
# telnet
 ※ もしtelnetクライアントが有効になってなければ、コントロールパネルから有効化する
Microsoft Telnet> set localecho
Microsoft Telnet> open <WikiサーバのIP> 80
GET /pukiwiki/index.php HTTP/1.1 ※ さっきlocalechoをONにしたので、画面に打った文字が表示される。
host:<WikiサーバのIP> ※ HTTP/1.1の場合は、このhostコマンドを忘れるとエラーになる。
ここで再度[ENTER]

すると、Webサイトのデータが送られてくる。

[PC]KURO-DACHI/CLONE/U3

x230のSSDが死んだ。
以前別のSSDに作っておいたWindows環境で稼働中。
また死ぬかもしれないので、複製SSDを作っておく。

KURO-DACHI/CLONE/U3の使い方

HDD1にマスターSSD、HDD2に複製先のSSDを装着。
電源をON > この時、左から2番目のPowerだけオレンジ色に点灯
 ※ LEDは左から、Link、Power、HDD1、HDD2の4つ。
Cloneボタンを長押し。
3秒ほど押すと、LEDが左から順番に点滅していく。 > これがコピー完了25%未満の状態
25%コピーが終わると、一番左のLinkだけ点灯しっぱなし。他3つは順番に点滅。

詳しい説明が以下にある。(今回参考にさせて頂きました)
https://pcmanabu.com/%e3%83%ad%e3%82%b8%e3%83%86%e3%83%83%e3%82%af-%e3%82%a8%e3%83%a9%e3%83%bc%e3%82%b9%e3%82%ad%e3%83%83%e3%83%97%e6%a9%9f%e8%83%bd%e6%90%ad%e8%bc%89%e3%83%87%e3%83%a5%e3%83%97%e3%83%aa%e3%82%b1%e3%83%bc/#i-5

クローン化が完了すると、4つのLEDが同時に点滅してた。
クローンされたSSDの方でWindows 10を起動してみたら、以下メッセージ。

問題が発生したため、PCを再起動する必要があります。
エラー情報を収集しています。自動的に再起動します。

80%完了

この問題と可能な解決方法の詳細については、https://www.xxxxxx
deを参照してください。

サポート担当者に連絡する場合は、この情報を伝えてください:
停止コード: MEMORY MANAGEMENT



そのまま放置したら自動的に再起動されて、Windows 10が起動した。
ログインもできた。

続けて元のマスターSSDでも起動出来て、ログインも出来た。
これでもし故障してもすぐにリカバリできる。

[Android]メモ

M01ファイル保存場所

スクリーンショット: /mnt/sdcard/Pictures/Screenshot
カメラ: /mnt/sdcard/DCIM/Camera
ダウンロード: /mnt/sdcard/Download
EasyVoiceRecorder: /mnt/sdcard/EasyVoiceRecorder

メモ帳: 


JDN-W09ファイル保存場所

Bluetooth経由: /mnt/ext_sdcard/bluetooth
カレンダー
10 | 2018/11 | 12
- - - - 1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 -
累積訪問者
現在の訪問者
現在の閲覧者数:
最新記事
最新トラックバック
最新コメント
月別アーカイブ
カテゴリ
プロフィール

bobgosso

Author:bobgosso
FPGAのブログへようこそ!

検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QRコード