後期高齢者を隔離[edit]

後期高齢者が彼/彼女のパソコンで何かミスをしても,自宅LANの他のパソコンに及ぶ影響を最小限にするため,隔離したい。彼/彼女のパソコンからは,WAN(インターネット)には出て行けるが,自宅LAN内の他のパソコンにはアクセスできないようにするというわけだ。一番簡単なのは,無線LANルーターの「ネットワーク分離」機能を使うことだ。

有線でつないでいる場合であっても,いまは非常に手頃な費用で可能。VLAN対応の5ポートスイッチと呼ばれるものを買えばよい。amazon.co.jpで2,500円前後で買える。私が買ったのはTP-LINK TL-SG105E。他に,NETGEAR GS105E-200JPSも安く,同じことができる。VLANの解説ではないが,以下の記事が選択の役に立つ。

無線LANルーターまたはルーターが複数台あり,後期高齢者が接続しているのは2台目(内側)の場合は注意が必要だ。単純にネットワーク分離しても内側の内部でしか分離されない。ルーターが入れ子(二重ルーター)のとき,どこが隔離されるかを理解するには,ルーターはファイアーウォールの一種だと考えれば分かり易い。ファイアーウォールの内側が外側から隔離(保護)されるのであって,外側は内側から隔離(保護)されない。もし,1段目(外側)のパソコンを2段目(内側)から保護するなら,合計3台のルーターが必要だ。城の一番外側のルーター(親)の内部に,本丸と二の丸の2つの子ルーター領域を作る。

VPN[edit]

いまどきはVPSが安く使えるので,往年の「自宅サーバー」の効用はかなり小さくなったが,auひかりの新サービス「スマホで固定電話」を前にまた復活の兆しがある。詳細はNET/通信契約

使用機材[edit]

VPSを主環境として使っているが,自宅にもサーバーを置いている。自宅サーバーにはThinkPad X201を使っている。ノートパソコンの方が便利だ。画面とキーボードが付いている。X201はかなり古い機種だが,VPNサーバーとして使う上ではスループットで特に支障はない。しかも,SoftEtherを入れているのは,Windows10の上のVirtualBoxの上のCentOS。それでも遅さを全く感じないし,数値で見ても同様。

1万円前後のAtom系オンボードは勧めない。かなり古いノートパソコンよりも処理能力が低いのでコストパフォーマンスに劣る。AtomとCoreプロセッサーとでは大きな格差がある。

SoftEther[edit]

導入手順[edit]

  1. Windowsパソコンを一つ用意
  2. VirtualBoxをインストール
  3. VirtualBoxにLinux (CentOS 6.9)をインストール (ver 7でもよいが,ver 6の方が設定が簡単で,情報も圧倒的に多い。)
    • VirtualBox側のNIC設定はbridge。
    • Linux側のネット(eth0)設定は(1) CentOS側はDHCP割当にしてルーターでIPを固定するか,(2) CentOS側で固定するか。どちらでもよいが,ルーターでIPを固定の方が初心者向け。
    • /etc/sysctl.conf のnet.ipv4.ip_forward = 1は不要。
  4. 自宅LANの主ルーターで,VirtualBox上のLinuxに対してIPを固定割当。DHCPの項目。
  5. Linuxで,firewall設定
    • (1) SoftEther管理のためのポートと,(2) L2TP/IPsec接続のためのポートを開ける。
      • 当座はTCP 992, UDP 500, UDP 4500
    • NAT (MASQUERADE)は不要。
  6. SoftEtherをインストール
    • インストールから起動まではshell (sshクライアント)で行い,それ以降の設定(ポートその他一切の設定)はWindowsのサーバー管理マネジャーで行うのが簡単。
  7. SoftEtherのWindows版サーバー管理マネジャーから初期設定
    • eth0にbridge
    • 仮想NAT,仮想DHCPはいずれも不要。
    • L2TP/IPsecを設定
  8. VirtualBoxのLinux仮想マシンのNICの設定でプロミスキャスタモードを有効にする。 VPNFAQ004. VM においてローカルブリッジが正しく動作しない - SoftEther VPN プロジェクト
  9. 自宅LANに接続中のスマホから,ローカルIPのSoftEhterに対してL2TP/IPsecで接続できるか確認。
    • LAN内なので,グローバルIPやホスト名(...softehter.net)では接続できない。
  10. 自宅LANの主ルーターで,VirtualBox上のLinuxに対して,L2TP/IPsec接続のためのポートを転送。UDP 500, UDP 4500
    • インタネットに対してこれらポートを開放することを意味する。
  11. 自宅LAN外に接続中のスマホから,SoftEhterに対して,SoftEtherのダイナミックDNS ホスト名(...softether.net)で,L2TP/IPsecで接続できるか確認。

実際の運用では、仮想マシンをサービスとして自動起動するとよい

自分自身へのアクセス[edit]

SoftEtherサーバーが仮に192.168.0.10だとして,自宅LANにVPNした状態で,クライアントから192.168.0.10にアクセスしようとしてもできない(pingすらできない)。(自宅LAN内の他の機器へのアクセスには制限はない。)これはLinuxの仕様だそうだ。「Linux オペレーティングシステム内部での制限事項により、VPN 側 (仮想 HUB 側) からローカルブリッジしている LAN カードに割り当てられる IP アドレスに対して通信を行うことはできません。この制限は SoftEther VPN が原因ではなく、Linux の内部構造に原因があります。」3.6 ローカルブリッジ - SoftEther VPN プロジェクト

このままでも(VPNサーバーとして使う上では)特に困ることはないが,この仮想マシンでウェブサーバーを立てているなど,アクセスしたい場合は,VirtualBoxに仮想NICを追加すれば解消できる。幸い物理NICと違って追加は簡単だ。

  1. VirtulaBox側でNICを追加。MACアドレスをメモ。
  2. CentOS側でネットワーク設定。IPは0.0.0.0
    vi /etc/sysconfig/network-scripts/ifcfg-eth1
    
    DEVICE=eth1
    ONBOOT=yes
    BOOTPROTO=none
    HWADDR=08:00:... 先ほどのMACアドレス
    IPADDR=0.0.0.0
    USERCTL=no
    TYPE=Ethernet
    IPV6INIT=no
    
    /etc/init.d/network restart
    
  3. SoftEtherサーバーマネージャーで,eth1にブリッジを設定。
    • hubを選んでeth1へのブリッジを追加。既存のhubでよい。hubを選ばないとブリッジを追加できない。

自宅サーバー管理[edit]

自宅IPの確認手段[edit]

Windows[edit]

上記のように、サーバーはWindows 10上のVirtualBox上のCentOS 7を使っている。(最近、CentOS 6から更新。)土台のWindowsの状態を遠隔から把握するのに以下のスクリプトを使っている。別途、Apache httpd(Windowsにインストール)とPerl(Active Perl, Windows版)が必要。状態把握のやりかたはいろいろあり、普通はWindowsの管理ツールを使うはずだが、それらは個人的になじみがないので、代わりに使い慣れた道具立てを使っている。

#!/usr/bin/perl
use utf8;
open(STDERR, ">&STDOUT");
#open(STDERR, ">>error.log");
use strict;
use warnings;

use CGI qw(:cgi);
my $q = CGI->new;
{
	my $title = 'WMIC PROCESS';
	print $q->header();
	print $q->start_html(
		-title=>$title,
		-style => { -verbatim => 'td:nth-child(4), td:nth-child(6) {text-align: right;}' },
	);
}

my $wmic = 'wmic path Win32_PerfFormattedData_PerfProc_Process get Name,PercentProcessorTime,WorkingSet,WorkingSetPeak /format:csv';
my @wmic = qx($wmic);
my @lines = ();
my %workingSet = ();
shift @wmic; # 1行目は空
my @head = map {$_ =~ s/\s+$//; $_} map {split(',')} shift @wmic;
push(@head,'rate');

for (@wmic) {
	chomp;
	my @headers = @head;
	my %line = ();
	my @cols = split(',');
	for my $key (@headers) {
		$line{$key} = shift @cols // 0;
		$line{$key} =~ s/\s+$//; # ゴミ取り
	}
	push @lines, {%line};
	$workingSet{$line{'Name'}} = $line{'WorkingSet'}; # rate計算用
}

# 配列の順序を入れ替え
@head[4,5] = @head[5,4];

print qq(<table border>\n);
# ソート列を変えて2回呼ぶ。
&sort_print('PercentProcessorTime');
&sort_print('WorkingSet');
print qq(</table>\n);
exit;
# -----------------------------------終わり


sub sort_print {
	my ($sortKey) = $_[0];

	my @lines = sort { $b->{$sortKey} <=> $a->{$sortKey} } @lines;
	# spliceで原本を壊さないようmyを使う。
	splice(@lines,10);
	print qq(<tr>);
	map {printf qq(<td>%s),$_} (@head);
	print qq(</tr>\n);
	
	for (@lines) {
		my %line = %{$_}; 
		next if $sortKey eq 'PercentProcessorTime' && $line{'PercentProcessorTime'} ==0; # 0の項目の順序は無意味なので削除。
		print qq(<tr>);
		$line{'rate'} = sprintf q(%.2f%%), $line{'WorkingSet'}/$workingSet{'_Total'}*100;
		if ($line{'Name'} eq '_Total') {
			$line{'rate'} = '';
		}
		for (@head) {
			$line{$_} =~ s/\s$//; # ゴミ取り
			if ($line{$_} !~ /\D/) {
				# 数字なら桁取り。
				$line{$_} =~ s/(\d)(?=(\d\d\d)+(?!\d))/$1,/g;
			}
			printf qq(<td>%s),$line{$_};
		}

		print qq(</tr>\n);
	}
}

IPv6[edit]

インターネット上のサーバーに「自宅からのみアクセス可」のような設定をしている場合に、IPv6で「自宅」はどのように表記するか

WAN[edit]

Wake On LAN[edit]

塩田さんのスクリプト(Windows 10 Wake On LAN(WoL)入門:WoLでPCを起動 - @IT)を使うと、Windows 10から簡単にWake On LANができるのだが、PowerShellをほとんど使わない僕は少し手間取った。「このシステムではスクリプトの実行が無効になっているため、...」に初めて対面した。PowerShellスクリプトを簡単実行 - Qiitaを参考に、やりたいことを実現できた。

WakeDell3020.ps1の中には、直接塩田さんのスクリプト(関数の定義に当たる)を書いてその次の行で呼び出してもよいし、塩田さんのスクリプト自体は汎用的に使うなら、もう一つ別のps1を介在させる。例えば


トップ   編集 凍結 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2021-04-30 (金) 10:34:07