なかっちゃんtech blog

勉強会とか日々の勉強の記録

ICMP ってL3のプロトコルですよね?

仮配属でCISCOルータで遊ばせてもらってるので久々にネットワークで遊んで楽しんでます.んでいろいろ調べてたわけですが

changineer.info

こちらのサイトに

ICMPは、以下の誤解が巷にあふれています。
- ICMPはUDPである
- ICMPはLayer3のプロトコルである
これら主張は大嘘です。知恵袋などの質問サイトを見ると、「pingのポート番号を教えて下さい」等の質問がありますが、ICMPはTCPでもUDPでもありません。このような誤った概念を持たないようにするには、まずはIPのprotocol numberの概念を理解する必要があります。

って書いてあって「はえええ??? ICMPってL3のプロトコルじゃないの???」って思いですね,流石に調べた.

いや...他のサイトはL3プロトコルって書いてるんだけどというわけで勉強ついでにRFC792に行きました.

イントロの

The Internet Protocol (IP) [1] is used for host-to-host datagram service in a system of interconnected networks called the Catenet [2]. The network connecting devices are called Gateways. These gateways communicate between themselves for control purposes via a Gateway to Gateway Protocol (GGP) [3,4]. Occasionally a gateway or destination host will communicate with a source host, for example, to report an error in datagram processing. For such purposes this protocol, the Internet Control Message Protocol (ICMP), is used. ICMP, uses the basic support of IP as if it were a higher level protocol, however, ICMP is actually an integral part of IP, and must be implemented by every IP module.

ってことで「Gateway to Gatewayでやってるときにエラーのレポートしてくれたらいいよね.それをICMPとする.んでこの機能はIPを前提としているのでIPよりも上のレベルのプロトコルのようだが,IPにとって不可欠なものであり,全てのIPモジュールはこれを実装しなければならない.」って書いてますね.んでTCP/IPのモデルで考えてICMPがL4のプロトコルだと仮定してもL3のIPにとってL4のICMPが不可欠なものだとしたらそれは思想に反し,下のレイヤが上のレイヤに依存していることになる.というわけで仮定はおかしいということになりますね.

んー やっぱ本質とかなんでそれができたかどうかを知るときはRFCを読むに限りますね.

バイトの成果のあれ

やっとこさある程度のとこまで言ったのでpushです github.com

Nodeに半年苦戦して結局できず,pythonにシフトして3ヶ月くらいですかね.もう一人のバイトの人とここまで完成させました.
READMEはCognitoを用いたログイン機構ができたらきちんと書きます....

一旦ここで区切りです 会社のリポジトリにpushするの緊張しますねえ

SoftetherでVPN構築

久々の技術記事です. conohaで借りてるVPSに追加機能として構築しました.

そもそもなんで建てようとなったのかというと,Faceboook,インスタともにうるさかった北海道旅行がきっかけです.あまりにfreewifiにつなぐ機会が多く,怖いなぁって思ってました. きちんと通信路を安全なようにしたいなと思い立ったのが理由です.

今回はfreebsdに構築しました.

install

http://www.softether.org/ からfreebsd用の最新版をダウンロード https://ja.softether.org/4-docs/1-manual/7/7.3 を見ながら作業を進める

ダウンロードファイルをmakeするとなんかcheckされた

VPN Tools>Check
Check コマンド - SoftEther VPN の動作が可能かどうかチェックする
---------------------------------------------------
SoftEther VPN 動作環境チェックツール

Copyright (c) SoftEther VPN Project.
All Rights Reserved.

この動作環境チェックツールを実行したシステムがテストに合格した場合は、SoftEther VPN ソフトウェアが動作する可能性が高いです。チェックにはしばらく時間がかかる場合があります。そのままお待ちください...

'カーネル系' のチェック中...
              [合格] ○
'メモリ操作系' のチェック中...
              [合格] ○
'ANSI / Unicode 文字列処理系' のチェック中...
              [合格] ○
'ファイルシステム' のチェック中...
              [合格] ○
'スレッド処理システム' のチェック中...
              [合格] ○
'ネットワークシステム' のチェック中...
              [合格] ○

すべてのチェックに合格しました。このシステム上で SoftEther VPN Server / Bridge が正しく動作する可能性が高いと思われます。

コマンドは正常に終了しました。

その後fileを/usr/localへ

sudo mv vpnserver /usr/localへ

serviceコマンドで使えるように/usr/local/ect/rc.dにvpnserverファイルを追加 /etc/rc.confに vpnserver_enable="YES"を追加

実際の作業

コマンドの実行後HUBの作成

VPN Server > HubCreate 

ハブを指定してユーザ作成

VPN Server > HUB hoge
VPN Server/hoge > UserCreate
VPN Server/hoge > UserPasswordSet

L2TP over IPSecの設定と仮想 NAT および DHCP サーバー機能 (SecureNAT 機能) の有効化

VPN Server/hoge> IPsecEnable
IPsecEnable コマンド - IPsec VPN サーバー機能の有効化 / 無効化
L2TP over IPsec サーバー機能を有効 (yes / no): yes

Raw L2TP サーバー機能を有効 (yes / no): no

EtherIP / L2TPv3 over IPsec サーバー機能を有効 (yes / no): no

IPsec 事前共有鍵の文字列 (9 文字以下を推奨): ********

VPN 接続時に仮想 HUB 名が省略された場合のデフォルト仮想 HUB 名: example

コマンドは正常に終了しました。
VPN Server/hoge> SecureNatEnable

参考文献 https://qiita.com/showwin/items/92861057a8b62611444d

これで公衆wifiも安心できますね. 細かいとこはまだ把握できてませんがおいおい確認しながら設定をかえつつよりセキュアに便利にやっていきます.

人との付き合い方

ちょっと今期凹み気味なので書く

身内の不幸事があって帰ってきたのでなんかちょっと書きたくなった.

前々からこうなるしかないのかぁって思いながら日々を過ごしてた.(祖父の時を思い出しながら) どうも3年3Qは悲しみにくれる期間らしい  (元カノの件,まだ引きずってるのかといわればすこし整理がついて一段落した感じでした)

しっかり自分と見つめ合って,考えろってことかな思いながらずっといろんな事考えてる

んでどうやら大学用のアカウントでうるさくしすぎたのもあり,なーんか俺のこと惨めだと思ってる人がいるようで(まあ敵が入るくらいがちょうどいい) 「そうかぁ 俺ってはたから見たらそういうふうにみることもできるのかぁ」って思った.

こう 勉強の方はなんだかんだ最後は一人でするものだけど人間関係はそうはいかない

こんなときは人が離れて行く,以前いた人がすっといなくなってたりする.もちろん大学3年だし講義少ないから同じ人間にしかあわないのはしょうがない部分がある.

でもそんなときツイッターでもいいから相談乗ってくれたり,LINEくれて話聞いてくれる人こそ本当に大事にしなきゃいけないひとなんだなぁって思います. その人がきついとき,もし助けを求められたら自分の時間を削ってでもその人のために時間を使う.そんなことをできるひとが素敵な人だと思う.

彼女はできるときにできる,だから今は自分の周りにいてくれてる人を大事にしよう

--追記-- いとこが4人の子供のパパとしてほんとにかっこいいなぁって思った.こういうときは結婚してぇってなる

--もう一個追記-- これからもツイッターうるさいですが関係ないツイートは流していただけると幸いです

大学で学ぶということ

最近思っていることがまとまってきたので文章にしようと思います.最近はそもそもなぜ自分がそれをしているのかを考える癖がついてきた感じがあり,非常にいい感じの方向に進んでいる感じがあって良いです. 今日は結婚式で,「院にいくん?」みたいな話になったのでそれも含めての話です.なんで今自分が大学にいて,院に行こうとしているのか.

そもそもなんで大学に入ったか

中学時代に高専落ちしたので元カノ(当時は彼女じゃなかったので)を追いかけるだけのために高校を選び(馬鹿なので昔からリソース全振),専門学校でも行こうかと思い,まあ福岡で偏差値50あればええやってことで高校に進学.そこでなんか知らんけど進研模試で数学校内10位とかいう成績で高校の担任に大学にいけと言われまあ市立大かなって感じで生徒会で行事の運営ばっかしやってた,あとは先生に恵まれたので数学楽しんで解いていた.んで九工大の推薦をうけてみと言われ受けてみたら合格.

大学に入って今まで

ネットワークしたかったから某団体へ,まあ4年でそこそこのとこに行けたらええやろ的な感じで日々の暮らしに精一杯だった.そこで知り合ったメンツは今のコアなメンバーになってる.もう全部が手一杯なくせに全部本気でするから壊れかけで心配ばっかしされてた.恋愛も必死だったし3年前期はほんとにやばかった.全部がうまくいかなくてもうだめかと思ってた.それでも人と違うことをしたい俺は,友人をさそって勉強会にでるようになった.それがHackerzLabとの出会いだったし今は気づいたら問題作ってる.YAPCでいろんな人ともあった.わりと考え方が変わったのはここかもしれない.エンジニアの最大美徳を学ぶとともに元カノといざこざ仕出して自分を大事にするように意識をしだした.んで今勉強していることは絶対役にやつことだからそれを考えるように.

今の考え

以前とある方には話したのですが大学で学ぶ計算機科学ってのはそもそも現場で用いるものとは根本的にちがうものでその深さが違うものだからということを答えました.これは次の章で書きましょう.まず思うのは院に行っても6年なので全部をフルでやるのは無理だなってことです.恋愛と勉強とバイトを全部はむりでせいぜい2つが限界だと思ってて,僕はいろいろあってバイトと勉強を選ぶことにwwww(そりゃあ大学の近くに一人暮らしして彼女と半同棲的な感じで暮らしていくのも絶対楽しいので体験したかった).人生,家庭がいい感じになるか仕事が楽しいかのどっちかが達成できたらそれで十分な感じある.まあこんな話は置いといて,そもそもこんなにお金のことを気にせずになんでも学べるのって今だけじゃね?ってことに気づいたんですよね.ネットワークしながらプログラミングするし,みんなでサーバを立ててわいわいするのもたのしい.なんか哲学的なことをお酒を飲みながら議論して,気づいたらしょうもない話に変わってたり,んでもって先生のもとでそのことに集中して良くて,本の作者と本の中身について議論し,享受してもらい,たまにはわいわいもするような環境,もう人生にはないのではないだろうか.なにより高みがみたい,仕事に生きなくてもいいからなにか一つをやり遂げた先にあるものが見てみたい.きっとそれができるようになったら働きだしてもその方法(またはそれを進化させたもの)を活かして人よりも成長できるのではないだろうか.それを続けてば確実に自分の力になる,どこでもそこそこ通じればお金には困らないでしょう.それで今の流れを維持したまま勉強を続けることができるならそれは奨学金を借りてでもいきますよ.

大学で学ぶものの深さ

きっと今,エンジニアの殆どは既成のライブラリを使い物を作りそれを売ってお金にしているでしょう.ハードの世界も同様でしょう.只今のハードもソフトも過去の天才たちがそれより深いところがわからなくても大丈夫なように作っちゃってるせいで,さも自分はすべてを知っているような気になってるひとも多いのではないでしょうか.(けっこうこのセリフけんか売ってるなぁ).プログラミングと一言に言ってもライブラリを作るのとライブラリを使ってものをつくるのではかなりの違いがあるようにそれと同じだと思います. ハードウェアの話をしましょう.細かく大雑把にいくと

ハードウェア

半導体の集合  

↓  

LISのパーツ  

↓  

AND ORゲートの集合体  

↓  

ANDゲートは複数のトランジスタを組み合わせたもの  

↓  

トランジスタの根本は電子回路,電磁気  

↓  

電子回路,電磁気を学ぶために解析,線形を学ぶ.  

このような流れになっているから僕は大学で線形や電磁気をやっているんですよ.しかしこれなしで教育に時間がかかるだなんだかんだ言っても大学は職業訓練校ではないので. 今まで深いとこをやってきた(本人がどう思っているかは別として),そこに上がって来るまでに少し時間を要するんだと思うので企業の皆さん優しく見守っていただけると幸いです.

僕はある程度全体を網羅した後に細かいとこを詰めていくのでバイトや勉強会と積極的にやっているって感じです.

ではでは以上(まあ多分これはどんどん書き加えていきますよ)

ThinkPad X1 Carbon への情報収集

というわけで

そうなんですよ! こういうわけでパソコンを変えます.

macは?

まあ大学入学前に買って今まで頑張ってくれたんですけどね,「ここぞ!」というときにパワーが足りないんですよ.Latexコンパイル(20ページくらいのレポート)をする時もなんかもたもたって感じで.... あとスリープ復帰してだいぶ長い間CPU使用率が100%付近とかいう状態でバイト先でも端末借りてる状態でした.

求めるスペック

  • CPU Core i 5 or 7
  • メモリ 16GB以上
  • SSD 特にないけど多いと良い
  • USキーボードが選べる

これさえ満たしてもらえばいいかな.あとはMBPみたいにType-cしかないばっかしにhyperdriveとか買って周辺機器にお金使うのはなぁってのもあります.

ThinkPadにした理由

ここで候補に上がったのは「MBP」「ThinkPad」「Surface」です.これ以外のメーカは最初から眼中にないです.(Iiyamaとか若干気になるのはあるんですけどね),Ubunut入れたいしBIOSレベルでいじられてたらやっとられんので.いやーMBPが高いのはわかってた.これを満たそうとすると20万超えます.これに消費税とApple Careで25万orz) あとMacじゃないといけない理由も見当たらなかったですしね よしじゃあもうWindowsを抜いてUbuntuを入れるとしてwindows機を買おうと思い.Surfaceへ...

「お前 絶対Mac意識しとるやろ!」 とレビューを見ながら思いました.

さてThinkPadは前々からバイトで若干触る機会があり,これいいなぁって思ってました.X1 Carbonの新品なんて完全に一目惚れですね.XシリーズやTシリーズもいいなぁって(この時点でThinkPadに確定) Xシリーズは画面サイズが12.5インチという理由でなしに,x1にするかTにするか.... 持ち運びは毎日するのでやっぱし軽いほうがいいかなという理由でX1 Carbonにしました.

構成

  • Core i7-7500U (2.7GHz,MB)
  • メモリ 16GB
  • SSD 256GB 少し心配

SSDが少し心配ですがまあ十分なスペックなのでこれで行きます.OfficeはGoogoleのツールたちでなんとかしていきます.これから半年困らなかったら研究室の端末という手がでてくるのでどうにかなるでしょう.

集めた情報

今回はWindowsを完全に消し去ってUbuntuを入れるのできちんと情報収集をして作業を行おうと思いまして(あと全部記録を取ろうと)

UbuntuのVersion

現状(20170909)が最新版が17.04(End of Life data is January 2018)で次の18.04 LTSがでるのは2018年の4月とかいう話です.んで17.10が10月にでます.んー アップデート何回もするのめんどくさいけど来るのは9月20前後になりそうだし,夏休みに移行作業を済まして置きたいなぁ.16.04LTSのどちらにするか悩みどころ.タイミングが悪い

って思ってたんですけど17.04にしようと思います.理由はSwap領域の話になります.さっきのSSDの容量的なお話もあり,Swap領域はなしにしようかなって思ってました.これを見てあー  休止状態か... 基本スリープだろうけど長時間使わないときは使いそう....

SDカードを買って来てそこにswap領域を作るかってつもりでしたがところがどっこいUbuntu 17.04からスワップパーティションからスワップファイルに移行してるじゃないですか(参考サイト)

しかも

また確保するスワップファイルのサイズ計算は今までと大きく異なる。 ボリュームの空き容量の5%以下、もしくは、2GiBのいずれか小さいサイズを採用する。

だそうでメモリが大容量化してSwapがほぼ使われていないような状態になっている流れなのでそれを汲んででしょうね.

というわけでアップデートの回数多いけど17系を使って行こうかと思います.

次の目標を決めました

お久しぶりです.最近はどうも調子が乗らずうだうだしてしまう生活でした.(理由はあとで書きます)やっとこさ他のことをするきになりました.というわけでPerlでタスク管理ツールでも作ろうかなという次第です.

またここで言っても途中でやめるんだろとか言われそうなのでここを載せておきましょう.

サーバーレスで実現しようと思ったのですがまあちょうどいいしPerlでやってみるかぁって感じです.

なにがあったかって?

“5b285aWz44Go5Yil44KM44G+44GX44Gf”

はい ここでも使ってbase64で解読してください. いやーなんか直接書きたくないので暗号化した次第です.ただ僕のブログとfacebookから来られた方の大半は解読できるのではないでしょうか.まあこのあとの文を読んだらわかると思いますけどね.

3週間くらいたったのですが最初の週はどちらかというときつさからの開放感に浸ってましたけどまあそれ以上になると,どうも今までの時間が長かった分なにかと,記憶に結びついてきつくてですね.これはもう時間がたって風化していくのを待つしかないかなぁって思っています.もうどうしようもなくなったときに話を聞いてくれる人たちがいるのでどうにか生きているなぁって思ってます.自分の行動に後悔はしてないので時間はかかりますけど立ち直れるかなってほんのすこしの自信を持っていこうという感じです.

いろいろ思うことはあるんだけどもまだ落ち着いてないのでここではなしで