さくらVPSでVPNをたてる CentOS7

はじめに

世の中,いっぱいVPNを建てる記事があるのに1つの記事を見ただけでは建てられなくて悲しかったので,まとめました.

特にポート周り…

ちなみにubuntuよりcentos7が楽だと感じたのでcentos7での導入方法です.

OSの基本的なところ

OSインストー

まず,さくらのVPSのコントロールパネルから,標準OSインストールで「CentOS7 x88_64」を選択し,OSをインストールする.

teratermにてssh接続をする

rootでログイン.

passwordはosインストール時に設定したものを使う.

ユーザーの作成

作業用一般ユーザを作成する.

# useradd username
# passwd username

ユーザーをsudoに追加する.

# usermod -G wheel username
# exit

一度ログアウトして,もう一度ログインする.

今回は作成したユーザーでteratermからログインする.

公開鍵認証をつかったsshを準備する

さくらインターネット公式のサポート情報がわかりやすいです.

help.sakura.ad.jp

このまま設定すればOKです.

ただし,CentOS7はsystemdで管理しているので,sshの再起動は記事とコマンドが違います.

$ sudo systemctl restart sshd.service

ポートを変えるかどうかは自由ですが, 学校の回線だとほかのポート開けてくれてないので22のままのほうが闇が減る可能性があります.

システムのアップデート

$ sudo yum update

ファイヤーウォール

CentOS7ではfirewalldを使います. ポートを直接開けるのではなく, サービスを追加してポートを開けてみたかったけど失敗しました...

なので直接ポートを開けます.

まず起動の確認

$ systemctl status firewalld

443,500,4500ポートを開ける.

$ sudo firewall-cmd --add-port=443/tcp
$ sudo firewall-cmd --permanent --add-port=443/tcp
$ sudo firewall-cmd --add-port=500/tcp
$ sudo firewall-cmd --permanent --add-port=500/tcp
$ sudo firewall-cmd --add-port=4500/tcp
$ sudo firewall-cmd --permanent --add-port=4500/tcp

現在動作中のサービスとポートが開けられたか確認する.

$ sudo firewall-cmd --list-services
$ sudo firewall-cmd --list-ports

リロードする.

$ sudo systemctl reload firewalld

VPNを建てる

ます,ダウンロードして,makeする.

$ wget http://jp.softether-download.com/files/softether/v4.22-9634-beta-2016.11.27-tree/Linux/SoftEther_VPN_Server/64bit_-_Intel_x64_or_AMD64/softether-vpnserver-v4.22-9634-beta-2016.11.27-linux-x64-64bit.tar.gz
$ tar zxvf softether-vpnserver-v4.22-9634-beta-2016.11.27-linux-x64-64bit.tar.gz
$ cd vpnserver
$ sudo make

次に,インストールする.

$ cd
$ sudo mv vpnserver /usr/local
$ cd /usr/local/vpnserver/
$ sudo chmod 600 *
$ sudo chmod 700 vpncmd
$ sudo chmod 700 vpnserver

動作確認する.

$ sudo ./vpncmd
Select 1, 2 or 3: 3
VPN Tools> check
VPN Tools> exit

VPN自動起動

やっぱり時代はsystemdっしょ.

$ sudo nano /etc/systemd/system/vpnserver.service

内容は

[Unit]
Description=SoftEther VPN Server
After=network.target

[Service]
Type=forking
ExecStart=/usr/local/vpnserver/vpnserver start
ExecStop=/usr/local/vpnserver/vpnserver stop

[Install]
WantedBy=multi-user.target

ファイルを作ったら,起動して,自動起動設定する.

$ sudo systemctl start vpnserver
$ sudo systemctl enable vpnserver

VPNを設定する

世の中の人はWindowsGUIで建てている人が多いようなので,WindowsGUIでいいと思います. 情報も多いです.

設定はめんどくさいので割愛します.(ぐぐるといっぱいでる)

注意点としては,

  • ブリッジはしない!
  • SecureNATを有効にする!

ことです.

SecureNATの有効は仮想HUBの管理の「仮想NATおよび仮想DHCPサーバー機能」あります.

参考文献

vps-news.sakura.ad.jp

help.sakura.ad.jp

help.sakura.ad.jp

myenigma.hatenablog.com

エラー - blog.204504byse.info

qiita.com

qiita.com

dsp74118.blogspot.jp

簡易的にMATLABからSlackに通知する

はじめに

みんな大好きMATLABをぶん回してると,いつ終わったのか通知が欲しいってなります.

TwitterにしようとしたけどSlackのほうが慣れてるのでSlackで実装しました.

実装

webwrite(url,'{"text": "送信したいメッセージ"}')

これだけです.めっちゃ楽!!!!

urlはslack apiのWebhookのやつです.

後半はJSONに従って書けばいいので,text以外にもいろいろ指定できます.

参考

qiita.com

この記事を参考にしました.

正直まんま使えばいいじゃんって感じですが,webwrite関数使うならもっと簡単にわかりやすく書きたかったので必要最低限だけ書きました.

Webhookのurl取得のときに送信先channel選択するから,webwriteのときにchannel指定しているメリットがよくわかりませんが,僕の勉強不足かな?

とにかく,標準関数でぽんと送れてよかった.

slack apiで画像アップロードの落とし穴

f:id:anbalioh:20170609150021p:plain

 

なんかぱぱっと作れる監視システムが欲しかったので,python+opencv+slackで実装してみました.

 

下記の記事を参考に,apiを叩きましたが,アップロードできませんでした.

qiita.com

 

調べてみると,どうやらAPPに権限が必要で,設定してあげなきゃっぽいです.

 

「Permission Scopes」に「Upload and modify files as user」を追加します.

こんな感じ.

f:id:anbalioh:20170609145908p:plain

 

これで画像をアップロードできました!

ps2epsiでepsを吐いてくれるpythonスクリプト+exe

 

spaghetti.hatenablog.com

 

今日書いたばっかりのこの記事の続きです.

 

ps2epsiは今のところ不具合がないのでps2epsはやめてこっちに移行しようと思います.

 

コマンドラインでprnをepsに吐けるようになったらあとはスクリプト化するだけ.

ということでpythonで作りました.

 

なんでわざわざフルパス取得してるの~?って感じですが,配布用にこのpythonをexeに変換したくて,その副産物です.

python prn2epsi.py」で実行するだけなら相対パスで問題ありません.

 

pythonから生成したexeはDropBoxで配布しています.

www.dropbox.com

 

必要条件ですが,

  • Ghostscriptのインストー
  • Ghostscriptのbinとlibにパスを通す(ps2epsiを使えるようにするため)

です.GSView使っていればGhostscriptは入っているのでパスと通すだけです.

binとlibは「Program Files\gs\gs9.21\」にあります.

 

肝心の使い方ですが,

┗フォルダー
  ┣ prn2eps.exe
  ┣ ps
   ┃ ┗ prnファイル
  ┗eps

 って感じに配置してもらって,psファイルに変換したいprnファイルを入れて,exeを実行すればepsフォルダに生成されます.

なんでprnってフォルダにしないの?という疑問には知恵袋で解決してください(笑)

なぜWindowsで「prn」というファイルは作れないのですか? - Windo... - Yahoo!知恵袋

 

 

exeの動作は2台のPCでしか確認してないんでまだ怪しいかもしれませんので問題があったら連絡お願いします.

ps2epsでBounding Boxがうまく変わらないときの対処

PowerPoint から TeX 用の EPS ファイルを生成する方法 – ソフトウェア開発日記


パワポで作った図とかExcelで作ったグラフをTeXに貼る際,このリンクのようにEPSを保存すると思います.



でも,

GSViewで「PS to EPS」するのめんどくさい!!!

ってなりますよね.



で,スプリクトを作るためにコマンドプロンプトから同じことをやろうとすると「ps2eps」に出会うわけです.

ps2epsはTeXLive2016に同封されているので別途入れる必要はないです.

使い方は,

ps2eps -f -B {ファイル名}.prn

です.

オプションの-fは上書き保存,-BはBounding Boxのオプションです.

オプションはなくても大丈夫ですが,一応...



本来ならこの使い方でBounding Boxがいい感じに変更されるんですけど,変化しない場合もあるんですよ.

僕の場合ですけど,ノートPCの方はps2epsで成功するけど,デスクトップは失敗します.

TeXLiveのバージョンかなあ?



それで失敗する対策として,「ps2epsi」っていうのがGhostscriptに同封されています.

使う前にbinとlibにパスを通します.
使い方は

ps2epsi {変換前のファイル名}.prn {変換後のファイル名}.eps

です.



これでps2epsでBounding Boxがうまく変わらなくてもなんとかできるようになりました.

2017年度やりたいこと

めっちゃいまさらですが、2017年度にやりたいことです。

 

Pythonの無限の可能性に挑戦する

そのままです。

Pythonでどこまで遊べるか、、、遊び倒したいです。

 

RCJ世界で優勝する

今年はルールの変わり目なので、目標としては悪くないと信じてます。

まだロボット作ってないのがやばい。

 

プロコンに出る

今週末に予選資料提出開始なんですが、まだ何も書いてません()

 

論文を書く

まあ5年生なので絶対書かなきゃいけないんですけど、評価されるような論文を書くっていうことです。

Windows10でChainer+CUDA8.0のメモ

Windows10でChainer+CUDA8.0を安定して導入できるようになったので,その備忘録です.

Anacondaのインストー

下記サイトよりダウンロードしてインストールします.

Download Anaconda Now! | Continuum

インストールの最後に「パスを追加する」があるのでチェックを付けます.

(インストラーでパスを追加すると失敗すると聞いたことがありますが,僕自身なったことはないです)

ああ,僕はpython3.6マンです.

Chainerのインストー

コマンドプロンプト

pip install chainer

を実行し,chainerをインストールします.

Chainerの確認

GPU処理を実装する前に,Chainerの動作確認をしておきます.

GitHubからChainerをZIPでダウンロードします.

GitHub - pfnet/chainer: A flexible framework of neural networks for deep learning

ZIPを解凍したら「\examples\mnist」をコマンドプロンプトで開きます.

そこで,

python train_mnist.py

と入力し,サンプルを実行します.

20回頑張ってくれたら成功です.(30分程かかった気がする)

VisualStudio2015のツールボックスのインストー

C++ツールボックスが必要なので,ダウンロードします.

別にVS本体は必要ないので,このリンクとても優秀だと思います.

Download the Visual C++ Build Tools (standalone C++ compiler, libraries and tools)

インストールする際に,詳細インストールを選択し,Windows10 SDKにチェックを入れてください.

これがほしいのに,標準だとチェックが抜けています.

CUDA8.0のインストー

NVIDEA様よりCUDA8.0をダウンロードします.

CUDA Toolkit | NVIDIA Developer


(オプション)cuDNNのインストー

ニューラルネットをいい感じに処理してくれるっぽいのであると便利です.

NVIDEA Developer Membership(無料)に登録する必要があります.

NVIDIA cuDNN | NVIDIA Developer

インストール方法はダウンロードすると出てくるけど,CUDAのプログラムファイルにコピーするだけ.

nvccのパスを通す

環境変数「PATH」にパスを追加

C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin

環境変数「INCLUDE」にパスを追加

C:\Program Files (x86)\Windows Kits\10\Include\10.0.10240.0\ucrt

「10.0.10240」は適当に読み替えてください.

Chainerの再インストー

一回アンインストールしないとGPUを認識しません.

pip uninstall chainer

でアンインストールします.

pip install chainer --no-cache-dir -vvvv

で再インストールします.

再起動

再起動しないとエラーが出ます.

Chainer+CUDAの確認

先程のchainerの確認にオプション「-g 0」をつけるとGPUが有効になります.

つまり,

python train_mnist.py -g 0

ってことです.

うまくいかなかったら再起動してみてください.

感想

Win10でChainer+CUDA8.0ってめちゃくちゃ情報多いのに,沼にハマったのであんばら流ということでまとめました(笑)

特にVisualStudio2015周りは闇でした...