なかっちゃんtech blog

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

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も安心できますね. 細かいとこはまだ把握できてませんがおいおい確認しながら設定をかえつつよりセキュアに便利にやっていきます.

大学で学ぶということ

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

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

中学時代に高専落ちしたので元カノ(当時は彼女じゃなかったので)を追いかけるだけのために高校を選び(馬鹿なので昔からリソース全振),専門学校でも行こうかと思い,まあ福岡で偏差値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系を使って行こうかと思います.

明るいオタクって言われた話

こんにちは 久々ですね.

YAPCからもう少しで一ヶ月も経つんですね.

昨日,唯一の3限が20分程度で終わってしまったのでちょっと高校に行ってきたんですよね.久々に先生方とお話してきました.そこでとある先生に「あんたは昔から自分であんまやらんけどいろいろ首突っ込むよね」って言われました.(おかしいな自分でもやってたんだけどなぁ)僕的には今みたいにHackerzLab.博多をはじめ,いろんなイベントに行って話ししたりなんたりは大学に入ってやってる認識だったんですけどまさか高校のときからやってたとは思いませんでした.(認識がなかった) 言われてみれば生徒会だったこともあり行事の核になっている人と関わる機会は多かったです.そういうところなのかなと自分で思ったししてました.

その後は「今はなんの勉強してるの」とか「院いくの?」みたいな話をずっとしていたんですが,その中で「あんたは明るいオタクだから就職は心配してない」っていう発言があってですね."明るいオタクというワードがすごい印象に残りました.たしかに同期よりは外で活動してるので大学外の知り合いであるとか,現役の方とは話す機会は多い方だと思ってます.コミュニケーション能力は絶対に必要なものなのであって損はないですね(技術的なことは結構話すことができますがそれ以外がさっぱりだったりする) でもこれが自分の強みなのかなって思います.自分の強みって人に言われないとある程度考えていてもそれに言葉を当てはめるのって難しいですよね.仕事するときも明るいオタクを活かしていきたいなぁって思った今日このごろ

とりあえずテスト乗り切りますね

終わったらまたブログ書きます.

YAPC:Fukuoka行ってきた

聞いたセッション

perlペーペーなのでそれ以外で - Be PaaS Monger - クラウドエンジニアの三大美徳、またはIaaSを使わない3つの理由 - コンテナを「守る」仕組みから、中身を理解しよう! - システム障害をめぐる冒険 - Web application good error messages and bad error messages - 未来のプログラマー達へ ~Perl入学式卒業生から~ - グローバルなエンジニアを目指す為の入門的な話 - Inside Evalpark - the evolution of sandboxing - スキップしていいテスト、スキップしてはいけないテスト 〜速さと信頼を兼ねたテストコードを構築する術〜

懇親会ではわいとんさんとお話させていただいてAzure以外の話もしていただいて感謝です

中身については他の方々が書かれていると思うので学生の僕から得られたものを今の時点でまとめられるだけまとめていきたいと思います.開発経験がなさすぎてサーバを愛でる方がすきな僕が行って思ったことで本当に大事なことは

  • なんでもいいから自分の興味の有るもので設計,開発を行う
  • インフラエンジニアが監視,検知を楽にするためのツールを開発することがある

現役の方々からすると当たり前だろと言われそうですが(特に下は)学生からすると今の現場の流れ,しかも運用なんて聞かないとわからないんですよね,それ以外にも吸収するものが多い時間でした.

次の日はHackerzLabを午前,午後とトークしたりと充実した2日間でした

Perl入学式in福岡とかいう話もあるのでまた新しい機会がうまれそう

Mastodonのお話

この記事はHackerzlab.博多 用の記事です

mastodonとは

マストドンは、Twitterに似た特徴を持つが、オープンソースソフトウェアを実行している分散されたサーバーの連合によって管理される、連合型のソーシャルネットワークである。

簡単に言うとサーバがいっぱいあるTwitter

ストドンのサーバーは「インスタンス」と呼ばれる。利用者は一つのインスタンスに所属し、他者が閲覧できる短文を投稿できる。投稿の公開範囲は、ユーザー自身の設定とインスタンスごとの設定により決定される。投稿者本人のみ閲覧可能・投稿者のフォロワーのみ閲覧可能・あるインスタンス全体に公開・インスタンスを超えマストドンのネットワーク全体に公開・二者間のダイレクトメッセージを、投稿ごとに利用者は選択できる。 twitterとの差別化として、中央集権型のトップダウンの管理ではなく、小さなコミュニティによる自治的な管理という方向性をマストドンのサービスは模索している。

それぞれのインスタンスによって話題の方針がある

一覧 http://k52.org/mastodon/

用語

http://qiita.com/ato1234/items/22d49b9c17c758317077

タイムライン

タイムラインが何種類かあります

  • ホーム

    自分のフォロワーのtoot TwitterのTLみたいな感じ

  • ローカルタイムライン

    自分のインスタンスの人たちのtootが表示

  • 連合TL

​ 連携しているインスタンスのtootが表示

登録してみましょう

Https://hackerzlab.net

スマホアプリもあります http://justsize.hatenablog.com/entry/2017/04/17/060040

技術的な話を

Github:https://github.com/tootsuite/mastodon

ここを参考に今回はdockerを使わずに構築しました.

Redis

全てのデータをメモリにいれるとかなんとか

Postgres

DB

なんで2つDBがあるのか

Redisをキャッシュ保持,高速小容量で動かし,実際のデータはpostgreへって感じ

Rails

メインですね

API

C#REST APIでてました その他言語でもいけます.


ここから追記(2017/06/25)

スマホアプリ

iOS: Amaroq  

Android: Tusky  

Win/Mac: githubに上がってるそうです. web版でいい気もしますが

今の状況

mstdn.jpに一極集中するというよりかはいろんなところに分散されていっている感じです.企業としては

Qitta,DWANGOは表向きは試験的に行うと書いていました.

1つのインスタンスは一つの話題に特化するということが根付きつつある?

引用

https://matome.naver.jp/odai/2149218081638507401

HackerzLab.博多vol10に参加してきた

2回目の参加してきました.全然解けませんでしたww.これじゃいかんなあって思いなが復習しなきゃなーって思いつつ,レポート書いてました.レポート書き終わったんでささっとまとめて行きますね.

シーザ暗号解析

何文字ずらすかわかんなかったんで「どうしようかなープログラム書こうかなでも時間ないし」ってことで後回しにしました.んで解説でご紹介していただいたツールをここに置いときますね.perlとかで書いてみたいですね.有るものを違う言語で自分の手で作るのもだいぶ訓練になりそう

jad コマンド

javaの逆コンパイルのコマンドですね.ソースコードがそのままでてきてびっくりしました.ここまでの精度でもとにもどるのかーって思いました.

javap

僕はこっちのコマンドで解析しました.こっちのほうが「逆コンパイルだー」って感じがして僕は好きですw

コンパイルデコンパイル

皆さん意味は同じと取るんでしょうけど言葉の意味合いとして何か違和感を感じたので少し調べてみました.ここで言葉の意味を幾つか

んー期待していたとおりにの文言で出てこないですね.今僕の中で詰まっているのは

バイナリからソースコードを生成 することと バイナリからソースコードを取り出す ことは必ずしも同義ではないのではないだろうかと思うんですよ.実際にjavaでやってみました.

public class HelloWorld {
    public static void main (String[] args) {
        System.out.println("Hello World !!");
    }
}
import java.io.PrintStream;

public class HelloWorld
{

    public HelloWorld()
    {
    }

    public static void main(String args[])
    {
        System.out.println("Hello World !!");
    }
}

参考までにC言語は半分もどればいいとかいう話が…..(出処怪しい)

では本題にもどりましょう.上の2つの結果を見ていきましょう.最初のは有名所でHello Worldですね.んで逆コンパイルしたものが下になるんですけど,まあそりゃあそうなるだろって感じですし僕も,「へーこの精度で戻るんだ」って感想です.だからこそ100%すべて戻るみたいないい方をしていないかなと,自分自身で再確認しつつ「元のソースコードを見るためには逆コンパイルしたらいいよ」ではなく「元のコードと同じ動作をするコードの見本が見れるよ」くらいが正しい日本語ではないでしょうか.いやわかっている人はいいんですけど,それを知らない,わからない人に対してさも全く同じようなコードが生成されるような言い方はご法度ではないでしょうか(少し教育的な話にもなるんでしょうけど).今回違和感を覚えたので少しやってみました(文句はいくらでも受け付けます,)

SQLインジェクション

はい有名所ですね.しかし実際に調べたこともなかったのでこれを期にいろいろ調べてみた.はいそもそも定義いってみよう

だそうです.またこれが調べたら出てくる出て来る.これ自分で調べても理解はしていただけそうですね.まあSQL文を悪意のある人の思うように動くように書き換えるんですね.基本的にユーザーの入力したデータをSQL文に組み込むと思うのでそこをうまく活用したのかって感じです.例えば

SELECT * FROM hoge WHERE id= $ID AND password = $PASS 

こんなSQL文があったとしましょう(適当な文ですいません).ここで IDにコメントの “–"を入れると,

SELECT * FROM hoge WHERE id="admin" -- AND password =fuga

ってなるわけですから後ろの方全部無視なんですよね 参考

これは管理者としては阻止しなきゃいけない案件ですねー(NOSQLについても書こうと思ったけどやめた)

htpassword

でたBasic認証のやつ.ここにいろいろ書かれてますよーってやつですね.参考ここで力尽きたので…….