paloma blog

NWエンジニアやってます。主に自宅環境のお遊びを書きます。Pythonもちょっと。タイトルは好きなカクテルから。

Bash-snippetsで遊んでみる

ostechnixを見ていたらこんなエントリを見つけました。

www.ostechnix.com

いろいろ機能が詰まってるコマンド郡ですが
CLIのヘビーユーザはこれをつかってターミナルだけで完結しようぜって事らしいです。

私もターミナル操作大好きなので入れて遊んでみます。
サブ機のubuntu(16.04LTS Desktop)です。

インストール

手順に沿ってインストール。
さくっとgitで入れます。

masashi@PC-ubuntu:~$ git clone https://github.com/alexanderepstein/Bash-SnippetsCloning into 'Bash-Snippets'...
remote: Counting objects: 3599, done.
remote: Compressing objects: 100% (13/13), done.
remote: Total 3599 (delta 2), reused 5 (delta 0), pack-reused 3586
Receiving objects: 100% (3599/3599), 3.60 MiB | 1.75 MiB/s, done.
Resolving deltas: 100% (2387/2387), done.
Checking connectivity... done.
masashi@PC-ubuntu:~$ cd Bash-Snippets/
masashi@PC-ubuntu:~/Bash-Snippets$ git checkout v1.22.0
Note: checking out 'v1.22.0'.

You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by performing another checkout.

If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -b with the checkout command again. Example:

  git checkout -b <new-branch-name>

HEAD is now at 99b6068... Updating to 1.22.0

インストール時にallつけないと1つずつインストール可否を選べます。
もちろん全部インストール。

masashi@PC-ubuntu:~/Bash-Snippets$ sudo ./install.sh 
[sudo] masashi のパスワード: 
Do you wish to install bash-snippets [Y/n]: y
Installing bash-snippets: Success
Do you wish to install cheat [Y/n]: Y
Installing cheat: Success
Do you wish to install cloudup [Y/n]: y
Installing cloudup: Success
Do you wish to install crypt [Y/n]: y
Installing crypt: Success
()

試しにいくつか打ってみます。

stocks

NASDAQの株価情報を出力します。
株は詳しくありませんが職業柄NWメーカーの株価を調べましょう。

現在9/15の17:11です。

masashi@PC-ubuntu:~/Bash-Snippets$ stocks cisco

CSCO stock info
=============================================
| Exchange Name: Nasdaq Global Select
| Latest Price: 47.4
| Open (Current Trading Day): 47.27
| High (Week52): 48.06
| Low (Week52): 32.12
| Close (Previous Trading Day): 47.4
| Price Change: 0.16
| Price Change Percentage: 0.00339
| Volume (Current Trading Day): 13726308
| Last Updated: 1536955200336
=============================================

masashi@PC-ubuntu:~/Bash-Snippets$ 
  • Fortinet
masashi@PC-ubuntu:~/Bash-Snippets$ stocks fortinet

FTNT stock info
=============================================
| Exchange Name: Nasdaq Global Select
| Latest Price: 90.35
| Open (Current Trading Day): 90.01
| High (Week52): 91.27
| Low (Week52): 35.44
| Close (Previous Trading Day): 90.35
| Price Change: 0.42
| Price Change Percentage: 0.00467
| Volume (Current Trading Day): 1516787
| Last Updated: 1536955200167
=============================================

masashi@PC-ubuntu:~/Bash-Snippets$ 
  • Netgear
    • NASメーカの印象が多いと思いますが、スイッチも作ってます
masashi@PC-ubuntu:~/Bash-Snippets$ stocks netgear

NTGR stock info
=============================================
| Exchange Name: Nasdaq Global Select
| Latest Price: 66.3
| Open (Current Trading Day): 67.3
| High (Week52): 78.3
| Low (Week52): 44.2
| Close (Previous Trading Day): 66.3
| Price Change: -0.85
| Price Change Percentage: -0.01266
| Volume (Current Trading Day): 185952
| Last Updated: 1536955200343
=============================================

masashi@PC-ubuntu:~/Bash-Snippets$ 

この中だと今はFortinetの株価が高いのかな?
単位書いてないけどもちろんUSドルだよね…?

movies

映画の概要を出力してくれます。
好きな映画を3つほど。

masashi@PC-ubuntu:~/Bash-Snippets$ movies pulp fiction

==================================================
| Title: Pulp Fiction
| Year: 1994
| Runtime: 154 min
| IMDB: 8.9/10
| Tomato: 94%
| Rated: R
| Genre: Crime, Drama
| Director: Quentin Tarantino
| Actors: Tim Roth, Amanda Plummer, Laura Lovelace, John Travolta
| Plot: The lives of two mob hitmen, a boxer, a gangster's wife, and a pair of diner bandits intertwine in four tales of violence and redemption.
==================================================
  • Chef (三ッ星レストランはじめましたのやつ)
masashi@PC-ubuntu:~/Bash-Snippets$ movies chef

==================================================
| Title: Chef
| Year: 2014
| Runtime: 114 min
| IMDB: 7.3/10
| Tomato: 87%
| Rated: R
| Genre: Adventure, Comedy, Drama
| Director: Jon Favreau
| Actors: Jon Favreau, John Leguizamo, Bobby Cannavale, Emjay Anthony
| Plot: A head chef quits his restaurant job and buys a food truck in an effort to reclaim his creative promise, while piecing back together his estranged family.
==================================================

Actorsにソフィア・ベルガラの名前がない…(チョイ役ではあるが)

  • SOCIAL NETWORK
masashi@PC-ubuntu:~/Bash-Snippets$ movies social network

==================================================
| Title: The Social Network
| Year: 2010
| Runtime: 120 min
| IMDB: 7.7/10
| Tomato: 95%
| Rated: PG-13
| Genre: Biography, Drama
| Director: David Fincher
| Actors: Jesse Eisenberg, Rooney Mara, Bryan Barter, Dustin Fitzsimons
| Plot: Harvard student Mark Zuckerberg creates the social networking site that would become known as Facebook, but is later sued by two brothers who claimed he stole their idea, and the co-founder who was later squeezed out of the business.
==================================================

TVドラマもいけるようです。

masashi@PC-ubuntu:~/Bash-Snippets$ movies full house

==================================================
| Title: Full House
| Year: 19871995
| Runtime: 22 min
| IMDB: 6.7/10
| Rated: TV-G
| Genre: Comedy, Drama, Family
| Director: N/A
| Actors: John Stamos, Dave Coulier, Candace Cameron Bure, Jodie Sweetin
| Plot: After the sudden death of his wife, a young father enlists the help of his brother-in-law and his childhood friend to help him raise his three daughters.
==================================================
  • 8 Simple Rules (パパにはヒミツ)
    • これ面白いのに日本語DVD出ないかなー
    • ケイリー・クオコがめちゃ可愛いんです
masashi@PC-ubuntu:~/Bash-Snippets$ movies 8 simple rules

==================================================
| Title: 8 Simple Rules
| Year: 20022005
| Runtime: 30 min
| IMDB: 7.1/10
| Rated: TV-PG
| Genre: Comedy, Drama
| Director: N/A
| Actors: Katey Sagal, Kaley Cuoco, Amy Davidson, Martin Spanjers
| Plot: The Hennessy clan -- mother Cate, daughters Bridget and Kerry, and son Rory -- look to one another for guidance and support after the death of Paul, the family patriarch. Cate's parents lend a hand.
==================================================

いろいろ見れて面白いけど余り使い道がなさそうなコマンドですね。
どこかのサイトから引っ張ってきてるんだろうけど、後でソース見てみよう。

lyrics

入力した曲の歌詞を出力します。
Saints row(好きなゲーム)のラジオ曲をいくつか。

  • Benny Benassi - Satisfaction
masashi@PC-ubuntu:~/Bash-Snippets$ lyrics -a benny benassi -s satisfaction
[Push me
And then just touch me
Till I can get my

Satisfaction, satisfaction, satisfaction, satisfaction, satisfaction]
{Push me

And then just touch me

Till I can get my

Satisfaction, satisfaction, satisfaction, satisfaction, satisfaction, satisfaction}

()

おおーちゃんと出ますね。

  • Haddaway - What is love
masashi@PC-ubuntu:~/Bash-Snippets$ lyrics -a haddaway -s what is love
What is love
Baby, don't hurt me
Don't hurt me no more

Baby don't hurt me
Don't hurt me no more

What is love

Yeah

()

Grape Drankはでませんでした…

masashi@PC-ubuntu:~/Bash-Snippets$ lyrics -a kovas -s grape drank
Error: no lyrics found!

これもmoviesと似たような仕組みっぽいですね。

weather

masashi@PC-ubuntu:~/Bash-Snippets$ weather chiba
天気予報: Chiba, Japan

      .-.      雨
     (   ).    23-25 °C       
    (___(__)4 km/h       
   ‚‘‚‘‚‘‚‘    9 km           
   ‚’‚’‚’‚’    4.3 mm         
                                                       ┌─────────────┐                                                       
┌──────────────────────────────┬───────────────────────┤  土 15 9月  ├───────────────────────┬──────────────────────────────┐
│              朝              │              昼       └──────┬──────┘        夕             │              夜              │
├──────────────────────────────┼──────────────────────────────┼──────────────────────────────┼──────────────────────────────┤
│      .-.      雨             │      .-.      雨             │    \  /       所により曇り   │               曇り           │
(   ).    23-25 °C       │     (   ).    23-25 °C       │  _ /"".-.     20 °C          │      .--.     14 °C          │
(___(__)12-15 km/h   │    (___(__)17-22 km/h   │    \_(   ).   ↙ 8-10 km/h    │   .-(    ).   ↙ 8-9 km/h     │
│   ‚‘‚‘‚‘‚‘    11 km          │   ‚‘‚‘‚‘‚‘    11 km          │    /(___(__)  17 km          │  (___.__)__)  17 km          │
│   ‚’‚’‚’‚’    4.6 mm | 98%   │   ‚’‚’‚’‚’    3.4 mm | 97%   │               0.0 mm | 0%    │               0.0 mm | 0%    │
└──────────────────────────────┴──────────────────────────────┴──────────────────────────────┴──────────────────────────────┘
                                                       ┌─────────────┐                                                       
┌──────────────────────────────┬───────────────────────┤  日 16 9月  ├───────────────────────┬──────────────────────────────┐
│              朝              │              昼       └──────┬──────┘        夕             │              夜              │
├──────────────────────────────┼──────────────────────────────┼──────────────────────────────┼──────────────────────────────┤
│               曇り           │               曇り           │    \  /       所により曇り   │    \  /       所により曇り   │
│      .--.     26-28 °C       │      .--.     27-30 °C       │  _ /"".-.     28-31 °C       │  _ /"".-.     27-30 °C       │
│   .-(    ).   ↖ 7-8 km/h     │   .-(    ).   ↖ 9-10 km/h    │    \_(   ).   ↖ 10-13 km/h   │    \_(   ).   ↖ 8-9 km/h     │
(___.__)__)  18 km          │  (___.__)__)  18 km          │    /(___(__)  15 km          │    /(___(__)  16 km          │
│               0.0 mm | 0%    │               0.0 mm | 0%    │               0.0 mm | 0%    │               0.0 mm | 0%    │
└──────────────────────────────┴──────────────────────────────┴──────────────────────────────┴──────────────────────────────┘
                                                       ┌─────────────┐                                                       
┌──────────────────────────────┬───────────────────────┤  月 17 9月  ├───────────────────────┬──────────────────────────────┐
│              朝              │              昼       └──────┬──────┘        夕             │              夜              │
├──────────────────────────────┼──────────────────────────────┼──────────────────────────────┼──────────────────────────────┤
│               曇り           │               曇り           │      .-.      弱い雨         │      .-.      雨             │
│      .--.     27-29 °C       │      .--.     29-31 °C       │     (   ).    26-28 °C       │     (   ).    24-26 °C       │
│   .-(    ).   ↙ 14-16 km/h   │   .-(    ).   ↙ 13-15 km/h   │    (___(__)14-17 km/h   │    (___(__)11-14 km/h   │
(___.__)__)  19 km          │  (___.__)__)  18 km          │     ‘ ‘ ‘ ‘   17 km          │   ‚‘‚‘‚‘‚‘    16 km          │
│               0.0 mm | 0%    │               0.0 mm | 0%    │    ‘ ‘ ‘ ‘    1.3 mm | 89%   │   ‚’‚’‚’‚’    7.5 mm | 72%   │
└──────────────────────────────┴──────────────────────────────┴──────────────────────────────┴──────────────────────────────┘

Follow @igor_chubin for wttr.in updates

フッターに出てますがこれはwttr.inから引っ張っているようです。
3連休ですが、天気悪いですね…(千葉県住みです)
来週はキャンプにいくんですが、天気大丈夫かな…

todo

最後にtodoコマンドやってみます。
todoアプリって機能てんこ盛りなのが多くて持て余しますが、
ターミナルで使えたら便利そうですね。

  • todo追加
    • -aで追加
    • 日本語も問題なくいけますね
masashi@PC-ubuntu:~/Bash-Snippets$ todo -a キャンプ用のお菓子を買う
01). キャンプ用のお菓子を買う               2018915日 土曜日 17:39:58 JST
masashi@PC-ubuntu:~/Bash-Snippets$ todo -a キャンプ用のお酒を買う
01). キャンプ用のお菓子を買う               2018915日 土曜日 17:39:58 JST
02). キャンプ用のお酒を買う                 2018915日 土曜日 17:40:07 JST
masashi@PC-ubuntu:~/Bash-Snippets$ todo -a キャンプ用のスペアリブを買う
01). キャンプ用のお菓子を買う                   2018915日 土曜日 17:39:58 JST
02). キャンプ用のお酒を買う                     2018915日 土曜日 17:40:07 JST
03). キャンプ用のスペアリブを買う               2018915日 土曜日 17:40:26 JST
  • listで一覧表示
    • 来週までの私のタスクですw
masashi@PC-ubuntu:~/Bash-Snippets$ todo list
01). キャンプ用のお菓子を買う                   2018915日 土曜日 17:39:58 JST
02). キャンプ用のお酒を買う                     2018915日 土曜日 17:40:07 JST
03). キャンプ用のスペアリブを買う               2018915日 土曜日 17:40:26 JST
  • todo削除
    • お菓子を買った体にして完了させます
    • -rオプション
masashi@PC-ubuntu:~/Bash-Snippets$ todo -r 1
Sucessfully removed task number 1
01). キャンプ用のお酒を買う                     2018915日 土曜日 17:40:07 JST
02). キャンプ用のスペアリブを買う               2018915日 土曜日 17:40:26 JST

消えました。でも忘れずにお菓子買わないと!w
タスクの番号は自動で採番されるようですね。


こんな感じでBash-Snippetsをいくつか試してみました。
こういうさくっと使えるツールを作れるとかっこいいですよね。
なにか作ってみたい欲に駆られます。

他にもいろいろあるので面白そうなものがあればまた書きたいと思います。

VPSのドメインを契約した

先週契約したVPSに続きドメインも契約しました。

Degital OceanにDNSサーバの設定があったので設定したのですが、いつまでたっても名前引きできない…。

ドキュメントをよく読んだらドメイン事業者から買えとありました。
そのあとネームサーバの設定をしろと。
https://www.digitalocean.com/docs/networking/dns/

ドメインについて勘違いしてましたがDNSサーバがあるだけでは駄目なんですね。
ドメイン事業者からドメインを買ってレジストリに登録してもらう、と。 (日本だとJPRSですかね?.comドメインでも同じ?後で調べる)

いやー勉強になりますね。
この辺の申請とかもやってこなかったので。

ドメインはメジャーどこでお名前.comで1年で登録しました。
登録後はお名前.comの管理画面からDegital Oceanのネームサーバを登録すればOKです。

ドメイン名はブログ名と同じで、トップレベルドメインはなんとなく選んでしまいましたが.comにしました。
9/9時点ですが.jpの方が値段が高いんですね。知らなかったなー。

登録後、すぐ反映されたようで正引きも確認できました。
一応このブログも、もしかしたら将来VPSに引っ越すかもしれないので、サブドメインも切りました。

Degial Oceanの画面はこんな感じ。
名前引きしたらばれちゃいますが、何となくIPは隠しておきます。

f:id:paloma69:20180911001313p:plain

これがサブブログのドメイン(というかURL)になります。
まだ何もかけてないけど…
http://dayoff.palomablog.com/

やっとWebサーバっぽくなってきました。
あとHTTPS化Markdownプラグインを入れるくらいですかね。
セキュリティ回りもいろいろしておきたいところですが後々になりそうです。

VPSでWordPressを作った

先日契約したDegital Oceanをようやく触りました。

WordPressを作ることが目的だったのですが、非常に簡単でした。

抜粋しますがダッシュボードはこんな感じ

f:id:paloma69:20180902161645p:plain

WordPress設定済みのマシンをインストールします

WordPressはローカルで何回か作ったことがあるので、今回は楽に作ります。

One-click appsという項目からすぐ使えるVMが立ち上がるようです。

f:id:paloma69:20180902161757p:plain

WordPressを選択。
OSはUbuntu16.04みたいです。

f:id:paloma69:20180902162038p:plain

スペックを選択。
一番小さいやつにします。

f:id:paloma69:20180902162155p:plain

デプロイするリージョンを選択。
この中で日本から近いシンガポールを選択します。
そんなに変わらない気がしますが、近いほうがレスポンスの遅延が少なそうなので。

オプションは特に無しでページ下部のCreateを押すとデプロイが始まります。
1分足らずでデプロイ完了です。
早い!

IPアドレスのところにグローバルIPが表示されます。
Degital Oceanは仮想マシンをDropletsと言うそうです。
下にいろんなアイコンがあり、他にも機能追加できそうですね。

f:id:paloma69:20180902162731p:plain

IPアドレスにブラウザでアクセスしてみると先にSSHでログインしろと画面が出ました。
(IPは一応消してます)

f:id:paloma69:20180902163025p:plain

rootパスはメールで送られてきます。
この辺は省略しますが、sshでログインしてrootパスワード変更と鍵認証、no root login周りの設定をします。

再度アクセス。

f:id:paloma69:20180902163408p:plain

よく見るWordPressのインストール画面が出ました。
画面に沿って進めて…

f:id:paloma69:20180902163747p:plain

おおー初期の画面が出ましたね。
タイトルはここと同じbaloma blogの休日版ということでday offを付けました。
メインタイトルがあって派生していく感じのやつが好きなんです。

まだインストールしたばかりなので何もしていないのですが、
初のMy公開Webサーバということでいろいろメンテナンスしていきたいと思います。

まだドメインも取っていないのでまずはこれからですね。

テーマやプラグインの確認用にローカルに開発機も立てないとですね。

One-click appsすごい楽

自分でパッケージを選べないのがちょっとネックかもしれませんが、
ボタン一発で設定済みのマシンがデプロイされるのはすごい楽ですね。
タイトルに作ったって書きながらマジでボタン押しただけでできてしまいました。(一回ログインしたけど)

Createページに進んでから最後のWordPressの画面を見るのに一時間もかかっていなかったと思います。

他のクラウドサービスもこんな感じなんでしょうか。
大規模サービスは難しそうですが、個人サイトや小規模のサービス作りたいなら全然クラウドで十分ですね。

私はNWエンジニアなので物理NW機器を触ることがほとんどなのですが、
こういう簡単さを構築フェーズに取り入れていきたいですね。
というわけでAnsibleも勉強しようと思いました。


というわけで、どっちのブログもさぼらないように頑張ります。

VPS(Degital Ocean)を契約した

いつの間にか8月最終日になってしまいました。

やってみたいことはたくさんあって夏季休暇中にいろいろこなそうと思っていましたが、
仕事で取得できず休暇は来月になりそうです。

先日自宅ラボが欲しいと書いたばかりですが、この夏中にやりたかったことの1つであるVPSを契約しました。

目的はサーバ運用ですが、今パッと作れるWebサービスはないのでとりあえずwordpressでサブブログを作りたいと思います。

サブブログを作る目的の普段引きこもりのため、たまにするお出掛けのログを残しておくためです。
ブログのネタのために出かける気にもなるかもしれません。

また、はてなでサブブログを作ってもよいのですがせっかくなので自分で作ってみることにしました。

ローカル環境でサーバはいくつか立てていますが、普段の仕事もNW機器の構築やメンテばかりで、
特にInternet向けににさらす運用は初めてです。

サーバ運用やセキュリティの勉強になるかと思い、やっとのことで契約しました。
8月中にwordpress構築、ドメインを取って公開までしたかったのですが、
普段の業務や休日もだらだらとしてしまい結局8月最終日にようやく契約するという運びになってしまいました。

VPSはDegital Oceanにしました。

日本のサービス使えよって感じですが、海外のサービスを使ってみたかったのと、
5ドル付近で一番スペックのバランスが良さそうだったのでこれにしました。
日本のVPSはメジャーどこだと最小で¥600~800くらいしますもんね。

あと、最近AWSVPSも値下げがされたみたいですがAWSはサービスがたくさんあってよくわからないので、 シンプルそうなDegital Oceanにしました。

海外のサービスということでアカウント作ったきりのPaypalで決済してみたかったのですが、
アカウントが日本名のままなのがちょっと気持ち悪いので大人しくクレジット決済にしました。
(名前が簡単に変更できないんだこれが…)

とりあえずVPSの使い勝手を見て今後を考えます。
といっても今日は契約しただけなので、完成は来月に持ち越しですね。

まだ仮想マシンも作っていないのですが、気持ちが冷めないうちに書き残しておきます。

Home labについて考える

気になったパッケージを触りたいときVirtualboxやコンテナとかでセコセコ確認したりするんですが、エンジニアたるもの自宅に検証環境欲しいですよね。

でもサーバの置き場所や電気代なんか考えるとなかなかポンと買えないです。

また、今はいろんな仮想環境があるのでどういう構成にするかも考えものです。

そこで自分が欲しい構成について整理します。

Home labに欲しいもの

自宅環境なんて自分で好きなの考えて作れよ!って言われそうですがまずは自分の要件を出してみます。

  • 自宅環境で使えるパッケージ類
    • システムは使ってなんぼなので勉強用よりは使えるものを
  • NWレイヤを意識できるもの
    • 仕事はNWエンジニアなのでルーティングさせてNW構成を意識できるものがいいですね
    • 構成図書くの大好きです
  • 邪魔にならない ‐ 今の家は2DKなんで割と場所はあるのですが、ラックマウント型まではいらないかな…
  • なるべくOSS
    • 抑えられるところはなるべく安くいきましょう

仮想環境の選択

選択肢としてこんな感じですよね。
コンテナか仮想マシンのどちらかでボコボコ立てていくになると思いますが仮想ルータを作りたいのでhyper visorの方がいいかな。

コンテナのNWって何回読んでもまだよく分からないんですよね。

サーバ構成

スペックは後で考えるとしてとりあえず置き場所を考えるとタワー側の1台でいいかな。
クラスタの勉強は仮想マシンでやろう。

ストレージサーバもやってみたいですが物理マシンを買うのは我慢します。

作っておきたい仮想サーバ

ぱっと作ってみたいのはこんな感じ。
この中で自宅環境で活躍しそうなのはldapくらいですかね。
サーバ障害は通知して欲しいのでとりあえずzabbixも立てよう。

結論

そんなこんなで構成を考えていたらいい資料を見つけました。

https://files.sans.org/summit/pen_test_hackfest_2016/PDFs/Building-Your-Own-Kickass-Home-Lab-Jeff-McJunkin.pdf

kickass home labです。

何がkickassなの?

kickassにはやっつける、最高などの意味をもつスラングで使われるようです。
(映画しか知らなかったけど)

オフリースのサーバは安いけどそれよりも静音サーバを作れたら最高じゃない?ってことらしいです。

サーバは自作で、内容はざっくりまとめると

  • vmware workstationベースで作るよ
  • 仮想NWも作るよ
  • ゲストはTURNKEY LINUXでさくっとたてるよ
  • Windowsも検証ライセンスあるよ

という感じです。
結構いい感じじゃない!?

全部自分で作ることばかり考えていましたがTURNKEY LINUXを活用するのはありですね。

一人だとやはり構築していくのもなかなか...
ESXiじゃなくWorkstationていうのも意外とホストの融通が利きそうですね。

資料ではRAM128GBの16coreで800ドルって書いてありますが、日本でこんな安く手に入るんでしょうか?
とりあえず自作に限らずメーカ製でもよいので似たような予算で32GB 8coreあたり目標で探します。

というわけで今回は自宅環境の構想でした。
もう8月が終わりそうですが、ボーナスはまだ手を付けてないのでそろそろ自宅環境構築を目指してわくわくしておきます。

WSLのPrivoxyの機能をいろいろ有効にする

前回インストールしたprivoxyですが、ログが出力されていなかったので有効にします。
ついでに広告ブロックもやってみます。

前回勘違いしていましたが、コンテンツフィルタをしたいわけではないのでProxyサーバに証明書は入れなくても大丈夫ですね。 リバースプロキシとごっちゃになっていたようです。

HTTPSの場合はCONNECTメソッドを投げてプロキシは中継するだけみたいですね。
TLSの終端は通常通りClient - Serverでやると。

Privoxyでやりたいこと

とりあえずこれだけできればOKです。

トラフィックログ出力

マニュアルを読むとデフォルトだとログ出力されず、デバッグを有効にしないといけないようです。

http://www.privoxy.org/user-manual/config.html#LOGFILE

The logfile is where all logging and error messages are written. The level of detail and number of messages are set with the debug option (see below).

デバッグにも出力レベルがあります。 接続先が分かればOKですが、とりあえず推奨レベルをONにします。

debug     1 # Log the destination for each request Privoxy let through. See also debug 1024.
debug   512 # Common Log Format
debug  1024 # Actions that are applied to all sites and maybe overruled later on.
debug  4096 # Startup banner and warnings
debug  8192 # Non-fatal errors

サービス再起動

masashi@DESKTOP-986MNSO:~/privoxy-blocklist$ sudo /etc/init.d/privoxy restart

ログを見てみると…

masashi@DESKTOP-986MNSO:~/privoxy-blocklist$ tail -20 /var/log/privoxy/logfile
(略)
2018-08-18 17:05:29.183 7f0e420b0700 Info: exiting by signal 15 .. bye
2018-08-18 17:05:29.385 7f06e5d30700 Info: Privoxy version 3.0.24
2018-08-18 17:05:29.385 7f06e5d30700 Info: Program name: /usr/sbin/privoxy
2018-08-18 17:05:29.385 7f06e5d30700 Info: Loading filter file: /etc/privoxy/default.filter
2018-08-18 17:05:29.388 7f06e5d30700 Info: Loading filter file: /etc/privoxy/user.filter
2018-08-18 17:05:29.388 7f06e5d30700 Info: Loading actions file: /etc/privoxy/match-all.action
2018-08-18 17:05:29.388 7f06e5d30700 Info: Loading actions file: /etc/privoxy/default.action
2018-08-18 17:05:29.392 7f06e5d30700 Info: Loading actions file: /etc/privoxy/user.action
2018-08-18 17:05:29.393 7f06e5d30700 Info: Listening on port 8118 on IP address 0.0.0.0
2018-08-18 17:05:29.440 7f06e4500700 Request: play.google.com:443/
2018-08-18 17:05:31.147 7f06e30b0700 Request: api.twitter.com:443/
2018-08-18 17:05:31.148 7f06e28a0700 Request: twitter.com:443/
2018-08-18 17:05:34.164 7f06e2090700 Request: tweetdeck.twitter.com:443/
2018-08-18 17:05:39.442 7f06e38c0700 Request: ocsp.digicert.com/
127.0.0.1 - - [18/Aug/2018:17:05:44 +0900] "POST http://ocsp.digicert.com/ HTTP/1.1" 200 0
2018-08-18 17:05:50.232 7f06e38c0700 Request: pbs.twimg.com:443/

おおー取れてますね。
これで変なとこに投げていないか確認できますね。
ということはこのログを分析するツールも作らないといけないわけですね。

あとログローテートもしないとファイルが大きくなってしまうので後でやっておきます。

To prevent the logfile from growing indefinitely, it is recommended to periodically rotate or shorten it.

広告ブロック有効化

Arch Wikiの手順に沿ってやります。
Arch Wikiはいろんな機能の記事が豊富にあるので助かります。

普段FirefoxAdblockを使っているのでこのフィルタを使わせてもらいます。

Privoxy - ArchWiki

ツールをインストール

masashi@DESKTOP-986MNSO:~$ git clone https://github.com/Andrwe/privoxy-blocklist.git
Cloning into 'privoxy-blocklist'...
remote: Counting objects: 7, done.
remote: Total 7 (delta 0), reused 0 (delta 0), pack-reused 7
Unpacking objects: 100% (7/7), done.
Checking connectivity... done.
masashi@DESKTOP-986MNSO:~$
masashi@DESKTOP-986MNSO:~$ cd privoxy-blocklist/
masashi@DESKTOP-986MNSO:~/privoxy-blocklist$ ls
privoxy-blocklist.sh  privoxy-blocklist_test.sh  README.md
masashi@DESKTOP-986MNSO:~/privoxy-blocklist$ ./privoxy-blocklist.sh
Root privileges needed. Exit.

…

権限がない?のでsudoで

masashi@DESKTOP-986MNSO:~/privoxy-blocklist$ sudo ./privoxy-blocklist.sh
[sudo] password for masashi:
The config directory /etc/conf.d doesn't exist. Please either adjust the variable SCRIPTCONF in this script or create the directory.

今度はファイルがない…作ってくれないのか。

masashi@DESKTOP-986MNSO:~/privoxy-blocklist$ sudo ./privoxy-blocklist.sh
No config found in /etc/conf.d/privoxy-blacklist. Creating default one and exiting because you might have to adjust it.
masashi@DESKTOP-986MNSO:~/privoxy-blocklist$

ファイルができたようです。
手順に沿ってコメントインします。

12行目から3行をコメントイン

 12 PRIVOXY_USER="privoxy"
 13 PRIVOXY_GROUP="privoxy"
 14 PRIVOXY_CONF="/etc/privoxy/config"

インストールします

masashi@DESKTOP-986MNSO:~/privoxy-blocklist$ sudo ./privoxy-blocklist.sh
Processing https://easylist-downloads.adblockplus.org/easylistgermany.txt ...

Downloading https://easylist-downloads.adblockplus.org/easylistgermany.txt ...
.. downloading done.
install: invalid group ‘privoxy’

(略)

install: invalid group ‘privoxy’
... http://adblockplus.mozdev.org/easylist/easylist.txt installed successfully.

フィルターをダウンロードしてprivoxyのフォーマットに変換して書き込んでくれたようです。


訂正

上記スクリプトですが、上手く動いていませんでした。
成功するとeasylistgermany.script.xxxというファイルとconfigファイルに追記してくれます。
別の環境ですが、以下のようになります。

失敗
vagrant@vagrant:~/privoxy-blocklist$ sudo ./privoxy-blocklist.sh
Processing https://easylist-downloads.adblockplus.org/easylistgermany.txt ...

Downloading https://easylist-downloads.adblockplus.org/easylistgermany.txt ...
.. downloading done.
sed: character class syntax is [[:space:]], not [:space:]
install: invalid group ‘privoxy’
(略)

よく見るとグループ無効のメッセージが…

vagrant@vagrant:~/privoxy-blocklist$ diff -u /etc/privoxy/config ../config.old

configも変化なしです。

成功

スクリプトの中身に沿ってグループを作成します。(ユーザーはパッケージインストール時に作成済み)

vagrant@vagrant:~/privoxy-blocklist$ sudo groupadd privoxy
vagrant@vagrant:~/privoxy-blocklist$ sudo ./privoxy-blocklist.sh
Processing https://easylist-downloads.adblockplus.org/easylistgermany.txt ...

Downloading https://easylist-downloads.adblockplus.org/easylistgermany.txt ...
.. downloading done.
sed: character class syntax is [[:space:]], not [:space:]

Modifying /etc/privoxy/config ...
... modification done.

Installing new config ...
... installation done
(略)

invalid groupのメッセージが消えました。

vagrant@vagrant:~/privoxy-blocklist$ diff -u /etc/privoxy/config ../config.old
--- /etc/privoxy/config 2022-01-08 05:03:49.799406948 +0000
+++ ../config.old       2022-01-08 05:01:43.028048888 +0000
@@ -383,7 +383,6 @@
 #
 actionsfile match-all.action # Actions that are applied to all sites and maybe overruled later on.
 actionsfile default.action   # Main actions file
-actionsfile easylistgermany.script.action
 actionsfile user.action      # User customizations
 #
 #  2.6. filterfile

configファイルに追記されてます。

vagrant@vagrant:~/privoxy-blocklist$ ls -l /etc/privoxy/
total 332
-rwxr-xr-x 1 privoxy privoxy 74163 Jan  8 05:03 config
-rw-r--r-- 1 root    root    92760 Mar 18  2021 default.action
-rw-r--r-- 1 root    root    40764 Mar 18  2021 default.filter
-rwxr-xr-x 1 privoxy privoxy 53215 Jan  8 05:03 easylistgermany.script.action
-rwxr-xr-x 1 privoxy privoxy    54 Jan  8 05:03 easylistgermany.script.filter
-rw-r--r-- 1 privoxy root      827 Mar 18  2021 match-all.action
-rw-r--r-- 1 root    root    39828 Mar 18  2021 regression-tests.action
drwxr-xr-x 2 root    root     4096 Dec 31 04:19 templates
-rw-r--r-- 1 privoxy root     3646 Mar 18  2021 trust
-rw-r--r-- 1 privoxy root     8685 Mar 18  2021 user.action
-rw-r--r-- 1 root    root     3236 Mar 18  2021 user.filter

easylistgermany.script.xxxが作成されてます。


再起動して試してみます。 FirefoxAdblockを切って…

f:id:paloma69:20180818172353p:plain

効いているようです!
でもブロックログとかは出ないんですかね。
膨大になっちゃうか。

とりあえず動いたのでよし!
でも画面表示が1秒くらい遅くなった気がします。
この辺は支障がでてきたらキャッシュサーバも検討しようと思います。
というか読み込みが遅くなったらわざわざ広告カットした意味がないような(笑)
スマホとか見るときに見やすくなるからいいか。

ちなみにスマホからプロキシONにしたけどページが表示されませんでした。
デフォゲのルータのほう向いちゃってるのが悪いのかな?
ルータにリダイレクト入れればできるか…これは今度やってみます。

前回の宿題

WSLのubuntuはsystemdが無いって書きましたがissueに上がっていたようです。
中身まだ読めてません…。

https://github.com/Microsoft/WSL/issues/1579

参考サイト
https://blog.himanoa.net/entries/19

追記

広告ブロックスクリプトが実はうまくいっていなかったので訂正を追加しました。
このファイルがないのでブロックできていなかったことになりますが、uriのパターンで弾くものがいくつかあったので効果はありました。

広告ブロック機能がうまくいくかは再度デプロイしたものがありますのでこちらを運用してみて確かめます。

privoxyをdockerで作り直す 自分でbuild編 - paloma blog

WSLでProxyサーバを有効にしてみる

家のメイン機はWindows10を使っているのですが、WSLを動かして簡単なコマンド確認とかに使っています。

前からプロキシを導入したいと思っていたのでWSLでできるか試してみます。

今はUbuntu16.041つだけ入っていてこんな感じ。

masashi@DESKTOP-986MNSO:~$ cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=16.04
DISTRIB_CODENAME=xenial
DISTRIB_DESCRIPTION="Ubuntu 16.04.4 LTS"

masashi@DESKTOP-986MNSO:~$ uname -a
Linux DESKTOP-986MNSO 4.4.0-17134-Microsoft #137-Microsoft Thu Jun 14 18:46:00 PST 2018 x86_64 x86_64 x86_64 GNU/Linux

プロキシサーバはprivoxyを使います。
Privoxy - Home Page

squidしか知らなかったのですが、調べ物をしていてたまたま発見し、導入が簡単そうなので使ってみることにしました。
キャッシュ機能はなく、広告ブロックやTorとの連携ができるみたいです。

インストール

aptでいれます。

masashi@DESKTOP-986MNSO:~$ sudo apt install privoxy
masashi@DESKTOP-986MNSO:~$ dpkg -l | grep privoxy
ii  privoxy                          3.0.24-1                                   amd64        Privacy enhancing HTTP Proxy
masashi@DESKTOP-986MNSO:~$
masashi@DESKTOP-986MNSO:~$ privoxy --version
Privoxy version 3.0.24 (http://www.privoxy.org/)
masashi@DESKTOP-986MNSO:~$

サービス起動

systemctlで動かなかったのでinitで起動。
WSLのubuntuはsystemdじゃない?
後で調べよう。

masashi@DESKTOP-986MNSO:~$ sudo systemctl start proivoxy
Failed to connect to bus: No such file or directory
masashi@DESKTOP-986MNSO:~$
masashi@DESKTOP-986MNSO:~$ sudo /etc/init.d/privoxy start
 * Starting filtering proxy server privoxy                                                                       [ OK ]
masashi@DESKTOP-986MNSO:~$

起動確認

masashi@DESKTOP-986MNSO:~$ ss -lnt
State      Recv-Q Send-Q               Local Address:Port                              Peer Address:Port
Cannot open netlink socket: Protocol not supported
masashi@DESKTOP-986MNSO:~$
masashi@DESKTOP-986MNSO:~$
masashi@DESKTOP-986MNSO:~$ netstat -ant
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State
masashi@DESKTOP-986MNSO:~$

あれ?Listenしてない…

プロセスを見てみる。

masashi@DESKTOP-986MNSO:~$ ps aux
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.0  0.0   8304    56 ?        Ss   Jul16   0:00 /init ro
root         3  0.0  0.0   8304    52 tty1     Ss   Jul16   0:00 /init ro
masashi      4  0.0  0.0  15112  3328 tty1     S    Jul16   0:00 -bash
masashi   1253  0.0  0.0  12548  1100 tty1     R    13:41   0:00 script 20180815_134125.log
masashi   1254  0.0  0.0  15028  3716 pts/0    Ss   13:41   0:00 bash -i
privoxy   4067  0.0  0.0  12100  1272 ?        Ss   13:51   0:00 /usr/sbin/privoxy --pidfile /var/run/privoxy.pid --user
masashi   4073  0.0  0.0  15664  1852 pts/0    R    14:07   0:00 ps aux
masashi@DESKTOP-986MNSO:~$

動いてるよなー。

ぐぐったら気になるページを見つけました。

http://murkyideas.xsrv.jp/index.php?WSL%20on%20Windows10

sshdがソケットをLISTENしてもUbuntu側でnetstat -ant|grep LISTENとかやってもみえない(WSLのネットワーク周りとかユーザ周りは完全にWindows側のエミュレーションで動いていて、カーネルから何か読み出そうとしても失敗する、たとえばdmesgでさえ)

windows側でしかみえないのか? 確認してみます。
わかりやすいようにこっちはキャプチャで。

f:id:paloma69:20180815151904p:plain

ポートあがってますね。

プロセスも確認。

f:id:paloma69:20180815151945p:plain

privoxy見えてる。
これで動くのかな?

ブラウザで有効にする。

Firefoxをメインで使っているので、オプションから変更。

f:id:paloma69:20180815152243p:plain

検索してみます。

f:id:paloma69:20180815152417p:plain

一応ページは表示できるが動いているのか?
ログは何もでていません。

masashi@DESKTOP-986MNSO:~$ ls /var/log/privoxy/logfile -l
-rw-r--r-- 1 privoxy nogroup 0 Aug 15 13:45 /var/log/privoxy/logfile

というかHTTPSだとプロキシ側に証明書かまさないといけない気がする…。

今日はここまで

サービスは起動できましたが、動いているのかわかりませんでした。
今後はログの有効化、広告ブロック等の機能を有効にしていきたいと思います。
Torなんかも一回使ってみたいです。