メインコンテンツまでスキップ

「Network」タグの記事が4件件あります

全てのタグを見る

Raspberry Pi をサーバー代わりにしてサイトへ公開する

· 約2分
ひかり
Main bloger

Raspberry Pi で nginx をセットアップ

# nginx のインストールと有効化
sudo dnf install nginx

# /etc/nginx/nginx.conf の編集
# sudo nano /etc/nginx/nginx.conf

# nginx の開始と有効化
sudo systemctl start nginx
sudo systemctl enable nginx
sudo systemctl status nginx

/etc/nginx/nginx.conf の編集

http { server {} } 内に以下を追加

location / {
return 200 'Hello, world!';
add_header Content-Type text/plain;
}

CloudFlare の設定

  1. https://one.dash.cloudflare.com/ にアクセス。
  2. 「ネットワーク」→「Tunnels」を開く
  3. 「トンネルを追加する」を押す

CloudFlare Tunnels

  1. 「選択する Cloudflared」を押す

Select Cloudflared

  1. 「トンネル名」に適当な名前を入力して、「トンネルを保存」を押す

Save Tunnel Name for Cloudflare

cloudflared のインストール

# cloudflared.repo を /etc/yum.repos.d/ に追加
curl -fsSl https://pkg.cloudflare.com/cloudflared-ascii.repo | sudo tee /etc/yum.repos.d/cloudflared.repo

sudo dnf clean packages

# cloudflared のインストール
sudo dnf install -y cloudflared --nogpgcheck

cloudflared でサービスの起動

sudo cloudflared service install xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

トラフィックのルーティング

ホスト名のサブドメインとドメインと、サービスのタイプ、URL を設定。

alt text

「セットアップを完了する」を押す。

OpenLDAP の slappasswd で生成される SSHA とは

· 約1分
ひかり
Main bloger

slappasswd コマンドとは

slappasswd コマンドは OpenLDAP 用のパスワードを生成するコマンドで、 デフォルトでは SSHA を用いて、パスワードをハッシュ化する。

認証の仕組み

SSHA では生成されたハッシュの末尾 4 バイトがソルトとなっており、 入力されたパスワードと保存されているソルトからハッシュを生成し、 保存されているハッシュと一致するかどうかで認証を行う。

以下のプログラムでは、 適切なパスワード (例: admin) を与えると、元のハッシュと生成されたハッシュが一致する。

require 'base64'
require 'digest'

pass = 'admin'
ssha = '{SSHA}23AUBfRZytVFNpe7onuFhyCSJOHRzCWh'
ssha =~ /{.+}(.+)/
salt256s = Base64.decode64(Regexp.last_match(1)).unpack('C*')[-4..-1]

salt = salt256s.pack('C*')
b_ssha = Digest::SHA1.digest(pass + salt)
Base64.strict_encode64(
(b_ssha.unpack('C*') + salt256s).pack('C*')
)

WSL2 で DNS サーバーを設定する

· 約1分
ひかり
Main bloger

/etc/resolv.conf の自動生成の無効化

/etc/wsl.conf を以下のように編集する。

[network]
generateResolvConf = false

/etc/resolv.conf の作成

例えば、DNS サーバーが 1.1.1.1 のとき、/etc/resolv.conf は以下のように編集する。

nameserver 1.1.1.1

削除されないように

WSL2 を再起動すると /etc/resolv.conf が削除されるので、削除されないようにする。

sudo chattr +i /etc/resolv.conf

参考サイト

SSH トンネル

· 約2分
ひかり
Main bloger

ローカルポート転送

ssh -L [クライアントのポート]:[転送したいホスト]:[転送したいホストのポート]

クライアント A、SSH サーバー B、転送ホスト C があり C:8080 を A のポート 80 に転送したい場合。

ssh -L80:C:8080 B

この転送で、A から http://localhost へアクセスすると、 B の http://C:8080 と同じ内容が表示される。

まとめると、 A から C は見えなくても、A から B へ SSH が接続でき、 B から C が見える場合、B を経由して C のポートを A へ転送可能。

-g をつけると、A のホスト名で A のネットワークにあるパソコンから C:8080 へアクセスができる。

家のネットワーク上にあるポートを外部に転送したいとき、 とりあえず 22 番だけ外部に開放している状態であれば、 ssh 経由で家のネットワークにアクセス可能。

リモートポート転送

ssh -R [クライアントのポート]:[転送したいホスト]:[転送したいホストのポート]

ローカル転送と異なり、 接続先から見えるポートを転送するのではなくクライアント側から見える ポートを転送する。

クライアント B、SSH サーバー A、転送ホスト C があり C:8080 を A のポート 80 に転送したい場合。

ssh -R80:C:8080 A

この転送で、A から http://localhost へアクセスすると、 B の http://C:8080 と同じ内容が表示される。

B が外からアクセスできない場合でも、 B と A の接続を確立させれば、 C の内容を A に転送可能。 B を直接操作できない場合に使うことが多く、 B と A の接続が切れるトラブルが発生した場合、A から C へのアクセスが不可能になるので、B と A の接続が切断された場合に自動的に再接続するツール autossh が使われることが多い。