■ 12/1
ブラウザを使っていると、位置情報を要求されることがある。Firefox の場合。
Opera の場合。
これって、html レベルでどうやって実現しているのか調べてみた。HTML 5 で
規定された Geolocation API を使っていて、javascript から呼び出すみたい。
さっそく簡単な html を書いてやってみた。こんな感じ。
<html><head>
<script language="javascript" type="text/javascript">
<!--
navigator.geolocation.getCurrentPosition(dummy);
function dummy(){}
-->
</script>
</head><body></body></html> |
ファイルをローカルに置いて実験してみると、Firefox では位置情報を確認する
ウィンドウが出てきたけど、Opera では出てこない。
アドレスの左側に位置アイコンがあるので、クリックしてみるとアクセス拒否の
表示が出てきた。「この設定をクリア」のボタンをクリックしても何も起こらず。
web サーバに置いてやってみると、Opera でも出てきた。
気になったので chrome でも実験してみたら、やっぱりローカルに置いたファイル
には反応しない。サーバに置いた場合だとちゃんと出てきた。
PC 自体に位置情報を取得するデバイスがないので、許可しようがしまいが情報は
取得できないため、今はどうでも良い。しかし、この Geolocation API を使った
html を書く場合は、ローカルで反応するかどうかは重要になって来るので、気に
なると言えば、気になるな。
■ 12/2
台所で使っているキッチンタイマーの電池が切れた。実際には、音は出るけど、
液晶の表示が見えない状態。決められた時間を予測でセットして、音を出すことは
できるけど、残り何秒とかがわからない感じ。このキッチンタイマーが使っている
電池は単四電池で、家にあった電池のストックは無線マウスの電池として使った
ために残っていない。どうしたものかと考えて、
・無線マウスで使っている電池をキッチンタイマーに入れる
・この前買ったニッケル水素電池を無線マウスで使い始める
ということにした。液晶が見えなくなったキッチンタイマーに入っていた電池の
電圧を測ると 1.05V だった。11/15 から使い始めたマウスの電池は 1.21V まで
落ちていた。
これでニッケル水素電池がどのぐらいもつのか、楽しみだ。
■ 12/3
たまに手元のサーバを外からアクセスしたいときがある。そんなときは ssh で
外のサーバに入って、w3m や lynx で確認をする。が、たまに javascript とか
動かしてみたいときもあるので、自分のためのプロキシを作ろうかと。
外にプロキシを置くので、オープンプロキシにならないように制限をかけないと
いけないが、プロキシの認証をかけた場合、単なる basic 認証や digest 認証に
なるような気がして。そうすると、ネットワーク上にパスワードのハッシュ等が
流れてしまうので、気分が良くない。
まず、プロキシの認証ってどんなやりとりになるのかを確認するために、手元の
サーバに squid を入れて実験してみることに。
[toyota@mygeeto ~]$ cd /tmp
[toyota@mygeeto tmp]$ wget http://www.squid-cache.org/Versions/v3/3.5/squid-3.5
.13.tar.bz2
[toyota@mygeeto tmp]$ tar xfj squid-3.5.13.tar.bz2
[toyota@mygeeto tmp]$ cd squid-3.5.13/
[toyota@mygeeto squid-3.5.13]$ ./configure --help
(snip)
--enable-auth Build global support for authentication. The list of
schemes and helpers to be enabled is defined
elsewhere
--enable-auth-basic="list of helpers"
Enable the basic authentication scheme, and build
the specified helpers. Not providing an explicit
list of helpers will attempt build of all possible
helpers. Default is to do so. To disable the basic
authentication scheme, use --disable-auth-basic. To
enable but build no helpers, specify "none". To see
available helpers, see the helpers/basic_auth
directory.
--enable-auth-digest="list of helpers"
Enable the Digest authentication scheme, and build
the specified helpers. Not providing an explicit
list of helpers will attempt build of all possible
helpers. Default is to do so. To disable the Digest
authentication scheme, use --disable-auth-digest. To
enable but build no helpers, specify "none". To see
available helpers, see the helpers/digest_auth
directory.
--enable-auth-negotiate="list of helpers"
Enable the Negotiate authentication scheme, and
build the specified helpers. Not providing an
explicit list of helpers will attempt build of all
possible helpers. Default is to do so. To disable
the Negotiate authentication scheme, use
--disable-auth-negotiate. To enable but build no
helpers, specify "none". To see available helpers,
see the helpers/negotiate_auth directory.
--enable-auth-ntlm="list of helpers"
Enable the NTLM authentication scheme, and build the
specified helpers. Not providing an explicit list of
helpers will attempt build of all possible helpers.
Default is to do so. To disable the NTLM
authentication scheme, use --disable-auth-ntlm. To
enable but build no helpers, specify "none". To see
available helpers, see the helpers/ntlm_auth
directory.
(snip)
あ、basic 認証とか digest 認証以外に、rfc4559 の negotiate とか NTLM も
対応しているのか。さすがに rfc5849 の OAuth は対応してないようだけど。
昨年、じゃなくて一昨年に更新された HTTP/1.1 で認証関係は rfc7235 で規定
されているようなのだけど、rfc4559 も含めたブラウザの対応ってどうなって
いるのか調べたことがないな。
rfc4559 の negotiate を使う前提で、コンパイルしてみる。
[toyota@mygeeto squid-3.5.13]$ ./configure --prefix=/tmp/squid --enable-auth
--disable-auth-basic --disable-auth-digest --enable-auth-negotiate
--disable-auth-ntlm --disable-icmp --disable-snmp --disable-eui --disable-htcp
--disable-ipv6
configure の途中で止まると思っていたけど、予想に反して完走した。make して
みる。
[toyota@mygeeto squid-3.5.13]$ make
Making all in compat
make[1]: Entering directory `/tmp/squid-3.5.13/compat'
source='assert.cc' object='assert.lo' libtool=yes \
DEPDIR=.deps depmode=none /bin/sh ../cfgaux/depcomp \
(snip)
../libtool: line 1125: g++: command not found
make[1]: *** [assert.lo] Error 1
make[1]: Leaving directory `/tmp/squid-3.5.13/compat'
make: *** [all-recursive] Error 1
まさかの原因だな。まさかの原因すぎて configure でチェックしてなかったの
だろうか。gcc は rpm で入れた記憶があるので、確認。
[toyota@mygeeto squid-3.5.13]$ cd /tmp
[toyota@mygeeto tmp]$ cat /etc/redhat-release
CentOS Linux release 7.1.1503 (Core)
[toyota@mygeeto tmp]$ rpm -qa | grep gcc
libgcc-4.8.3-9.el7.x86_64
gcc-4.8.3-9.el7.x86_64
CentOS の web ページで確認すると、gcc-c++-4.8.5-4.el7.x86_64.rpm が最新で、
このまま入れると gcc との整合性がないので問題がおきるかもな。gcc は rpm
から入れたのか、yum で入れたのか記憶がないので、自分のページを検索した。
6/8 に rpm で入れていた。まずは、gcc のアップデートから。
[toyota@mygeeto tmp]$ wget -q http://mirror.centos.org/centos/7/os/x86_64/Packa
ges/gcc-4.8.5-4.el7.x86_64.rpm
[toyota@mygeeto tmp]$ wget -q http://mirror.centos.org/centos/7/os/x86_64/Packa
ges/libgcc-4.8.5-4.el7.x86_64.rpm
[toyota@mygeeto tmp]$ wget -q http://mirror.centos.org/centos/7/os/x86_64/Packa
ges/gcc-c++-4.8.5-4.el7.x86_64.rpm
[toyota@mygeeto tmp]$ su
[root@mygeeto tmp]# rpm -U gcc-4.8.5-4.el7.x86_64.rpm
warning: gcc-4.8.5-4.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID f4a
80eb5: NOKEY
error: Failed dependencies:
cpp = 4.8.5-4.el7 is needed by gcc-4.8.5-4.el7.x86_64
libgomp = 4.8.5-4.el7 is needed by gcc-4.8.5-4.el7.x86_64
ちょっと足りないみたいなので、さらに rpm をダウンロード。
[root@mygeeto tmp]# wget -q http://mirror.centos.org/centos/7/os/x86_64/Package
s/libgomp-4.8.5-4.el7.x86_64.rpm
[root@mygeeto tmp]# wget -q http://mirror.centos.org/centos/7/os/x86_64/Package
s/cpp-4.8.5-4.el7.x86_64.rpm
[root@mygeeto tmp]# rpm -U libgomp-4.8.5-4.el7.x86_64.rpm
warning: libgomp-4.8.5-4.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID
f4a80eb5: NOKEY
error: Failed dependencies:
libgomp = 4.8.3-9.el7 is needed by (installed) gcc-4.8.3-9.el7.x86_64
[root@mygeeto tmp]# rpm -U cpp-4.8.5-4.el7.x86_64.rpm
warning: cpp-4.8.5-4.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID f4a
80eb5: NOKEY
error: Failed dependencies:
cpp = 4.8.3-9.el7 is needed by (installed) gcc-4.8.3-9.el7.x86_64
お互いが依存しているので、まとめてインストールする必要があるのかな。やって
みる。
[root@mygeeto tmp]# rpm -U cpp-4.8.5-4.el7.x86_64.rpm libgomp-4.8.5-4.el7.x86_6
4.rpm gcc-4.8.5-4.el7.x86_64.rpm
warning: cpp-4.8.5-4.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID f4a
80eb5: NOKEY
[root@mygeeto tmp]# rpm -U gcc-c++-4.8.5-4.el7.x86_64.rpm
warning: gcc-c++-4.8.5-4.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID
f4a80eb5: NOKEY
error: Failed dependencies:
libstdc++ = 4.8.5-4.el7 is needed by gcc-c++-4.8.5-4.el7.x86_64
libstdc++-devel = 4.8.5-4.el7 is needed by gcc-c++-4.8.5-4.el7.x86_64
gcc のライブラリも必要みたいなので、入れて。
[root@mygeeto tmp]# wget -q http://mirror.centos.org/centos/7/os/x86_64/Package
s/libstdc++-4.8.5-4.el7.x86_64.rpm
[root@mygeeto tmp]# wget -q http://mirror.centos.org/centos/7/os/x86_64/Package
s/libstdc++-devel-4.8.5-4.el7.x86_64.rpm
[root@mygeeto tmp]# rpm -U libstdc++-4.8.5-4.el7.x86_64.rpm libstdc++-devel-4.8
.5-4.el7.x86_64.rpm gcc-c++-4.8.5-4.el7.x86_64.rpm
warning: libstdc++-4.8.5-4.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key
ID f4a80eb5: NOKEY
ようやく入ったので make する。
[toyota@mygeeto squid-3.5.13]$ make
Making all in compat
make[1]: Entering directory `/tmp/squid-3.5.13/compat'
source='assert.cc' object='assert.lo' libtool=yes \
DEPDIR=.deps depmode=none /bin/sh ../cfgaux/depcomp \
/bin/sh ../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I.. -I../
include -I../lib -I../src -I../include -I../libltdl -c -o assert.lo assert
.cc
libtool: compile: g++ -DHAVE_CONFIG_H -I.. -I../include -I../lib -I../src -I..
/include -I../libltdl -c assert.cc -o .libs/assert.o
In file included from ../compat/compat.h:70:0,
from ../include/squid.h:43,
from assert.cc:9:
../compat/types.h:139:2: error: #error size_t is not 32-bit or 64-bit
#error size_t is not 32-bit or 64-bit
^
In file included from ../compat/compat.h:100:0,
from ../include/squid.h:43,
from assert.cc:9:
../compat/compat_shared.h:105:20: error: field 'ru_stime' has incomplete type
struct timeval ru_stime;
^
../compat/compat_shared.h:106:20: error: field 'ru_utime' has incomplete type
struct timeval ru_utime;
^
In file included from ../include/squid.h:12:0,
from assert.cc:9:
../include/autoconf.h:1588:16: error: duplicate 'unsigned'
#define size_t unsigned int
^
../include/autoconf.h:1588:25: error: multiple types in one declaration
#define size_t unsigned int
^
../include/autoconf.h:1588:25: error: declaration does not declare anything [-f
permissive]
../include/autoconf.h:1585:15: error: multiple types in one declaration
#define pid_t int
^
../include/autoconf.h:1585:15: error: declaration does not declare anything [-f
permissive]
../include/autoconf.h:1594:15: error: multiple types in one declaration
#define uid_t int
^
../include/autoconf.h:1594:15: error: declaration does not declare anything [-f
permissive]
In file included from ../compat/compat_shared.h:231:0,
from ../compat/compat.h:100,
from ../include/squid.h:43,
from assert.cc:9:
../compat/strtoll.h:22:14: error: 'int64_t' does not name a type
SQUIDCEXTERN int64_t strtoll(const char *nptr, char **endptr, int base);
^
In file included from ../include/squid.h:12:0,
from assert.cc:9:
../include/autoconf.h:1582:20: error: multiple types in one declaration
#define off_t long int
^
../include/autoconf.h:1582:20: error: declaration does not declare anything [-f
permissive]
../include/autoconf.h:1591:17: error: multiple types in one declaration
#define ssize_t int
^
../include/autoconf.h:1591:17: error: declaration does not declare anything [-f
permissive]
assert.cc: In function 'void xassert(char*, char*, int)':
assert.cc:13:74: warning: deprecated conversion from string constant to 'char*'
[-Wwrite-strings]
fprintf(stderr, "assertion failed: %s:%d: \"%s\"\n", file, line, expr);
^
assert.cc:14:11: error: 'abort' was not declared in this scope
abort();
^
make[1]: *** [assert.lo] Error 1
make[1]: Leaving directory `/tmp/squid-3.5.13/compat'
make: *** [all-recursive] Error 1
何が悪いのだろうかと少し考える。g++ が入ったんで configure からやり直す
必要があるのかなと思って、configure を再実行してから make したらエラーが
なくなった。続けて make install も問題なく。続きは明日。
■ 12/4
昨日の続き。設定ファイルを編集して、squid の起動をさせる。その前に /tmp の
容量確認。
[toyota@mygeeto squid-3.5.13]$ df -k
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/mmcblk0p4 55526788 1564964 51141168 3% /
devtmpfs 962104 0 962104 0% /dev
tmpfs 969728 0 969728 0% /dev/shm
tmpfs 969728 8548 961180 1% /run
tmpfs 969728 0 969728 0% /sys/fs/cgroup
tmpfs 969728 4836 964892 1% /var
tmpfs 969728 483868 485860 50% /tmp
/dev/mmcblk0p2 495844 93320 376924 20% /boot
/dev/mmcblk0p1 204580 9992 194588 5% /boot/efi
50% になっているでちょっと心配。ソースファイルは使うかもしれないけど、
使う必要が出たらまた解凍すれば良いということで、ソースファイルを削除を
して 7% まで減った。squid 起動のための設定ファイルの編集。
[toyota@mygeeto tmp]$ cd squid/etc
[toyota@mygeeto etc]$ vi squid.conf
[toyota@mygeeto etc]$ diff squid.conf squid.conf.default
59c59
< http_port 8128
---
> http_port 3128
特に変更しなくても動きそうだったので、待ち受けポートのみの変更にして、
そのままの設定で動かしてみることにした。
[toyota@mygeeto etc]$ cd ../sbin
[toyota@mygeeto sbin]$ ls -l
total 50072
-rwxr-xr-x 1 toyota toyota 51272232 Dec 4 19:48 squid
サイズが 50MB もあるのか。でかくないか。strip されているのか確認をして
みると、されてないので strip してみる。
[toyota@mygeeto sbin]$ file squid
squid: ELF 64-bit LSB executable, x86-64, version 1 (GNU/Linux), dynamically li
nked (uses shared libs), for GNU/Linux 2.6.32, BuildID[sha1]=0xc7cb643ed0950ae0
7427a568a8efed404621e748, not stripped
[toyota@mygeeto sbin]$ strip squid
[toyota@mygeeto sbin]$ ls -l
total 4832
-rwxr-xr-x 1 toyota toyota 4947072 Dec 4 19:50 squid
サイズが 1/10 になった。設定ファイルに問題がないかチェックをしてみる。
squid -h で確認してから。
[toyota@mygeeto sbin]$ ./squid -k parse
2015/12/04 19:52:27| Startup: Initializing Authentication Schemes ...
2015/12/04 19:52:27| Startup: Initialized Authentication Scheme 'negotiate'
2015/12/04 19:52:27| Startup: Initialized Authentication.
2015/12/04 19:52:27| Processing Configuration File: /tmp/squid/etc/squid.conf (
depth 0)
2015/12/04 19:52:27| Processing: acl localnet src 10.0.0.0/8 # RFC1918 possi
ble internal network
2015/12/04 19:52:27| Processing: acl localnet src 172.16.0.0/12 # RFC1918 possi
ble internal network
2015/12/04 19:52:27| Processing: acl localnet src 192.168.0.0/16 # RFC19
18 possible internal network
2015/12/04 19:52:27| Processing: acl localnet src fc00::/7 # RFC 4193 loc
al private network range
2015/12/04 19:52:27| aclIpParseIpData: IPv6 has not been enabled.
2015/12/04 19:52:27| Processing: acl localnet src fe80::/10 # RFC 4291 lin
k-local (directly plugged) machines
2015/12/04 19:52:27| aclIpParseIpData: IPv6 has not been enabled.
2015/12/04 19:52:27| Processing: acl SSL_ports port 443
2015/12/04 19:52:27| Processing: acl Safe_ports port 80 # http
2015/12/04 19:52:27| Processing: acl Safe_ports port 21 # ftp
2015/12/04 19:52:27| Processing: acl Safe_ports port 443 # https
2015/12/04 19:52:27| Processing: acl Safe_ports port 70 # gopher
2015/12/04 19:52:27| Processing: acl Safe_ports port 210 # wais
2015/12/04 19:52:27| Processing: acl Safe_ports port 1025-65535 # unregistered
ports
2015/12/04 19:52:27| Processing: acl Safe_ports port 280 # http-
mgmt
2015/12/04 19:52:27| Processing: acl Safe_ports port 488 # gss-h
ttp
2015/12/04 19:52:27| Processing: acl Safe_ports port 591 # filem
aker
2015/12/04 19:52:27| Processing: acl Safe_ports port 777 # multi
ling http
2015/12/04 19:52:27| Processing: acl CONNECT method CONNECT
2015/12/04 19:52:27| Processing: http_access deny !Safe_ports
2015/12/04 19:52:27| Processing: http_access deny CONNECT !SSL_ports
2015/12/04 19:52:27| Processing: http_access allow localhost manager
2015/12/04 19:52:27| Processing: http_access deny manager
2015/12/04 19:52:27| Processing: http_access allow localnet
2015/12/04 19:52:27| Processing: http_access allow localhost
2015/12/04 19:52:27| Processing: http_access deny all
2015/12/04 19:52:27| Processing: http_port 8128
2015/12/04 19:52:27| Processing: coredump_dir /tmp/squid/var/cache/squid
2015/12/04 19:52:27| Processing: refresh_pattern ^ftp: 1440 20%
10080
2015/12/04 19:52:27| Processing: refresh_pattern ^gopher: 1440 0%
1440
2015/12/04 19:52:27| Processing: refresh_pattern -i (/cgi-bin/|\?) 0 0%
0
2015/12/04 19:52:27| Processing: refresh_pattern . 0 20%
4320
2015/12/04 19:52:27| WARNING: 'mygeeto.tatsuyoshi.net' rDNS test failed: (0) No
error.
2015/12/04 19:52:27| WARNING: Could not determine this machines public hostname
. Please configure one or set 'visible_hostname'.
2015/12/04 19:52:27| WARNING: 'mygeeto.tatsuyoshi.net' rDNS test failed: (0) No
error.
2015/12/04 19:52:27| WARNING: Could not determine this machines public hostname
. Please configure one or set 'visible_hostname'.
2015/12/04 19:52:27| WARNING: 'mygeeto.tatsuyoshi.net' rDNS test failed: (0) No
error.
2015/12/04 19:52:27| WARNING: Could not determine this machines public hostname
. Please configure one or set 'visible_hostname'.
なんとか大丈夫そうなので、起動してみた。
[toyota@mygeeto sbin]$ ./squid
2015/12/04 19:54:07| WARNING: Could not determine this machines public hostname
. Please configure one or set 'visible_hostname'.
2015/12/04 19:54:07| WARNING: Could not determine this machines public hostname
. Please configure one or set 'visible_hostname'.
2015/12/04 19:54:07| WARNING: Could not determine this machines public hostname
. Please configure one or set 'visible_hostname'.
ローカルホストからアクセスしてみた。
[toyota@mygeeto sbin]$ telnet localhost 8128
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
GET http://www.tatsuyoshi.net/toyota/cgi-bin/env.cgi HTTP/1.0
Host: www.tatsuyoshi.net
HTTP/1.1 200 OK
Date: Fri, 04 Dec 2016 10:57:48 GMT
Server: Apache/1.3.29 (Unix)
version: 5
Content-Type: text/html
X-Cache: MISS from localhost
Via: 1.1 localhost (squid/3.5.13)
Connection: close
SERVER_SIGNATURE=<ADDRESS>Apache/1.3.29 Server at www.tatsuyoshi.net Port 80</A
DDRESS>
SCRIPT_FILENAME=/home/toyota/cgi-bin/env.cgi
SERVER_NAME=www.tatsuyoshi.net
HTTP_CONNECTION=keep-alive
HTTP_CACHE_CONTROL=max-age=259200
REMOTE_ADDR=(省略)
HTTP_X_FORWARDED_FOR=127.0.0.1
REQUEST_URI=/toyota/cgi-bin/env.cgi
TERM=dumb
HOSTTYPE=i386
PATH=/usr/bin:/bin:/usr/sbin:/sbin
HTTP_HOST=www.tatsuyoshi.net
REMOTE_PORT=46091
REQUEST_METHOD=GET
SHELL=/bin/false
GATEWAY_INTERFACE=CGI/1.1
QUERY_STRING=
SERVER_ADDR=192.168.0.109
SERVER_SOFTWARE=Apache/1.3.29 (Unix)
HTTP_VIA=1.0 localhost (squid/3.5.13)
SERVER_PROTOCOL=HTTP/1.1
REMOTE_HOST=(省略).bbtec.net
SERVER_PORT=80
DOCUMENT_ROOT=/usr/local/apache/html
OSTYPE=Linux
SCRIPT_NAME=/toyota/cgi-bin/env.cgi
SHLVL=1
SERVER_ADMIN=(省略)
_=/usr/bin/env
Connection closed by foreign host.
あっさり動いていたけど、PROXY 丸出し。別な PC から繋いでみた。
$ telnet 192.168.1.3 8128
応答が返ってこない。サーバ側の制限がかかってる気がする。続きは明日。
■ 12/5
昨日の続き。まずは、サーバの接続制限を外す。firewalld の設定をすれば良いが
現在の状況を確認。
[root@mygeeto toyota]# firewall-cmd --list-all
public (default, active)
interfaces: enp3s0
sources:
services: dhcpv6-client http ssh
ports:
masquerade: no
forward-ports:
icmp-blocks:
rich rules:
サービスとして dhcpv6-client http ssh の3つが登録されている。ここに squid
を追加すればよいが、dhcpv6-client って何やっているのか気になったので確認
してみる。この辺りは8月2日に少しオペレーションしたので、それを見ながら。
[root@mygeeto toyota]# cd /usr/lib/firewalld/services/
[root@mygeeto services]# cat dhcpv6-client.xml
<?xml version="1.0" encoding="utf-8"?>
<service>
<short>DHCPv6 Client</short>
<description>This option allows a DHCP for IPv6 (DHCPv6) client to obtain add
resses and other IPv6 settings from DHCPv6 server.</description>
<port protocol="udp" port="546"/>
<destination ipv6="fe80::/64"/>
<service>
IPv4 にも影響があるかと思ったが、v6 専用なので設定を削除する。そもそも
今動いている kernel は IPv6 の機能全部落としたし。
[root@mygeeto tmp]# firewall-cmd --remove-service=dhcpv6-client
success
これで確認してみる。firewall-cmd --list-all の結果では出てこなくなったが
firewall-cmd --list-all-zones だとまだ home, internal, work に残っている
ので、さらに削除。
[root@mygeeto tmp]# firewall-cmd --remove-service=dhcpv6-client --zone=home
success
[root@mygeeto tmp]# firewall-cmd --remove-service=dhcpv6-client --zone=internal
success
[root@mygeeto tmp]# firewall-cmd --remove-service=dhcpv6-client --zone=work
success
気になったので、他のサービスも確認。
[root@mygeeto services]# firewall-cmd --list-all-zones
結果が長くなったので、各 zone の services だけまとめると。
block
services:
dmz
services: ssh
drop
services:
external
services: ssh
home
services: ipp-client mdns samba-client ssh
internal
services: ipp-client mdns samba-client ssh
public (default, active)
services: http ssh
trusted
services:
work
services: ipp-client ssh
他のゾーンは active じゃなくてデバイスも指定されてないし、IPv6 のように
完全に使えないわけでもないので、放置しておく。
目的を忘れかけたが、squid のサービスを public に追加したい。現在登録が
できる services の確認。
[root@mygeeto tmp]# firewall-cmd --get-services
RH-Satellite-6 amanda-client bacula bacula-client dhcp dhcpv6 dhcpv6-client dns
ftp high-availability http https imaps ipp ipp-client ipsec kerberos kpasswd l
dap ldaps libvirt libvirt-tls mdns mountd ms-wbt mysql nfs ntp openvpn pmcd pmp
roxy pmwebapi pmwebapis pop3s postgresql proxy-dhcp radius rpc-bind samba samba
-client smtp ssh telnet tftp tftp-client transmission-client vnc-server wbem-ht
tps
http proxy は無いので、登録せにゃならんのか。サービスを追加するときは、
/usr/lib/firewalld/services ではなく /etc/firewalld/services にファイルを
追加するみたい。/etc/firewalld の下を眺めてみたら、/etc/firewalld/zones の
public.xml に dhcpv6-client が残っていた。削除するときに --permanent を
追加しないといけないみたい。やり直し。
[root@mygeeto zones]# firewall-cmd --permanent --remove-service=dhcpv6-client
success
[root@mygeeto zones]# firewall-cmd --permanent --remove-service=dhcpv6-client
--zone=home
success
[root@mygeeto zones]# firewall-cmd --permanent --remove-service=dhcpv6-client
--zone=internal
success
[root@mygeeto zones]# firewall-cmd --permanent --remove-service=dhcpv6-client
--zone=work
success
これで再起動したときに、設定が戻ることはないと。戻って、サービスファイルの
追加を。
[root@mygeeto zones]# cd /etc/firewalld/services/
[root@mygeeto services]# cp /usr/lib/firewalld/services/http.xml squid.xml
[root@mygeeto services]# vi squid.xml
[root@mygeeto services]# cat squid.xml
<?xml version="1.0" encoding="utf-8"?>
<service>
<short>PROXY (HTTP)</short>
<description>HTTP proxy for squid</description>
<port protocol="tcp" port="8128"/>
</service>
[root@mygeeto services]# firewall-cmd --add-service=squid --zone=public
Error: INVALID_SERVICE: squid
見つからないと。どうしたものかと調べてみると、firewalld が新しいファイルを
認識してないみたいなので、reload すると良いとか。やってみる。
[root@mygeeto services]# firewall-cmd --reload
success
[root@mygeeto services]# firewall-cmd --add-service=squid --zone=public
success
これで完了。Windows PC でプロキシの設定を変更して接続できるようになった。
あとは、squid の設定を変更して認証を入れてみる。続きは明日。
■ 12/6
squid で認証を入れるための設定をする。squid.conf.documented を確認して
みると、認証の設定は以下のように書いてあった。
# === Example Configuration ===
#
# This configuration displays the recommended authentication scheme
# order from most to least secure with recommended minimum configuration
# settings for each scheme:
#
##auth_param negotiate program <uncomment and complete this line to activate>
##auth_param negotiate children 20 startup=0 idle=1
##auth_param negotiate keep_alive on
##
##auth_param digest program <uncomment and complete this line to activate>
##auth_param digest children 20 startup=0 idle=1
##auth_param digest realm Squid proxy-caching web server
##auth_param digest nonce_garbage_interval 5 minutes
##auth_param digest nonce_max_duration 30 minutes
##auth_param digest nonce_max_count 50
##
##auth_param ntlm program <uncomment and complete this line to activate>
##auth_param ntlm children 20 startup=0 idle=1
##auth_param ntlm keep_alive on
##
##auth_param basic program <uncomment and complete this line>
##auth_param basic children 5 startup=5 idle=1
##auth_param basic realm Squid proxy-caching web server
##auth_param basic credentialsttl 2 hours
#Default:
# none
negotiate での認証をしたいので、auth_param negotiate にすれば良いのだろう
けど、program が必要で。調べると、negotiate では NTLM か kerberos での
認証になると。kerberos サーバを作るのか、先が長そうだな。
まず、kerberos のサーバを rpm で入れるか、一時的な実験としてソースから
入れて tmp にインストールして消すか。ソースから入れても、依存するものが
多そうだし、ディスクの容量はまだ余裕があるので、rpm で入れることにした。
[root@mygeeto tmp]# wget -q http://mirror.centos.org/centos/7/os/x86_64/Package
s/krb5-server-1.13.2-10.el7.x86_64.rpm
[root@mygeeto tmp]# rpm -i krb5-server-1.13.2-10.el7.x86_64.rpm
warning: krb5-server-1.13.2-10.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature,
key ID f4a80eb5: NOKEY
error: Failed dependencies:
krb5-libs(x86-64) = 1.13.2-10.el7 is needed by krb5-server-1.13.2-10.el
7.x86_64
libkdb5.so.8()(64bit) is needed by krb5-server-1.13.2-10.el7.x86_64
libkdb5.so.8(kdb5_8_MIT)(64bit) is needed by krb5-server-1.13.2-10.el7.
x86_64
libverto-module-base is needed by krb5-server-1.13.2-10.el7.x86_64
そんなに素直に入るとは思ってなかったけど、思ったより依存関係が少なかった。
[root@mygeeto tmp]# wget -q http://mirror.centos.org/centos/7/os/x86_64/Package
s/libverto-0.2.5-4.el7.x86_64.rpm
[root@mygeeto tmp]# rpm -i libverto-0.2.5-4.el7.x86_64.rpm
warning: libverto-0.2.5-4.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key I
D f4a80eb5: NOKEY
package libverto-0.2.5-4.el7.x86_64 is already installed
既に入っているだと。
[root@mygeeto tmp]# wget -q http://mirror.centos.org/centos/7/os/x86_64/Package
s/krb5-libs-1.13.2-10.el7.x86_64.rpm
[root@mygeeto tmp]# rpm -i krb5-libs-1.13.2-10.el7.x86_64.rpm
warning: krb5-libs-1.13.2-10.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, ke
y ID f4a80eb5: NOKEY
file /usr/lib64/krb5/plugins/kdb/db2.so from install of krb5-libs-1.13.
2-10.el7.x86_64 conflicts with file from package krb5-libs-1.12.2-14.el7.x86_64
file /usr/lib64/krb5/plugins/tls/k5tls.so from install of krb5-libs-1.1
3.2-10.el7.x86_64 conflicts with file from package krb5-libs-1.12.2-14.el7.x86_
64
file /usr/lib64/libgssapi_krb5.so.2.2 from install of krb5-libs-1.13.2-
10.el7.x86_64 conflicts with file from package krb5-libs-1.12.2-14.el7.x86_64
file /usr/lib64/libgssrpc.so.4.2 from install of krb5-libs-1.13.2-10.el
7.x86_64 conflicts with file from package krb5-libs-1.12.2-14.el7.x86_64
file /usr/lib64/libk5crypto.so.3.1 from install of krb5-libs-1.13.2-10.
el7.x86_64 conflicts with file from package krb5-libs-1.12.2-14.el7.x86_64
file /usr/lib64/libkadm5clnt_mit.so.8.0 from install of krb5-libs-1.13.
2-10.el7.x86_64 conflicts with file from package krb5-libs-1.12.2-14.el7.x86_64
file /usr/lib64/libkadm5srv_mit.so.9.0 from install of krb5-libs-1.13.2
-10.el7.x86_64 conflicts with file from package krb5-libs-1.12.2-14.el7.x86_64
file /usr/lib64/libkrad.so.0.0 from install of krb5-libs-1.13.2-10.el7.
x86_64 conflicts with file from package krb5-libs-1.12.2-14.el7.x86_64
file /usr/lib64/libkrb5.so.3.3 from install of krb5-libs-1.13.2-10.el7.
x86_64 conflicts with file from package krb5-libs-1.12.2-14.el7.x86_64
file /usr/lib64/libkrb5support.so.0.1 from install of krb5-libs-1.13.2-
10.el7.x86_64 conflicts with file from package krb5-libs-1.12.2-14.el7.x86_64
file /usr/share/man/man5/k5identity.5.gz from install of krb5-libs-1.13
.2-10.el7.x86_64 conflicts with file from package krb5-libs-1.12.2-14.el7.x86_6
4
file /usr/share/man/man5/k5login.5.gz from install of krb5-libs-1.13.2-
10.el7.x86_64 conflicts with file from package krb5-libs-1.12.2-14.el7.x86_64
file /usr/share/man/man5/krb5.conf.5.gz from install of krb5-libs-1.13.
2-10.el7.x86_64 conflicts with file from package krb5-libs-1.12.2-14.el7.x86_64
入っているので、アップデートかまさないといけないのか。
[root@mygeeto tmp]# rpm -U krb5-libs-1.13.2-10.el7.x86_64.rpm
warning: krb5-libs-1.13.2-10.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, ke
y ID f4a80eb5: NOKEY
error: Failed dependencies:
krb5-libs(x86-64) = 1.12.2-14.el7 is needed by (installed) krb5-devel-1
.12.2-14.el7.x86_64
libkdb5.so.7()(64bit) is needed by (installed) krb5-devel-1.12.2-14.el7
.x86_64
[root@mygeeto tmp]# wget -q http://mirror.centos.org/centos/7/os/x86_64/Package
s/krb5-devel-1.13.2-10.el7.x86_64.rpm
[root@mygeeto tmp]# rpm -i krb5-devel-1.13.2-10.el7.x86_64.rpm
warning: krb5-devel-1.13.2-10.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, k
ey ID f4a80eb5: NOKEY
error: Failed dependencies:
krb5-libs(x86-64) = 1.13.2-10.el7 is needed by krb5-devel-1.13.2-10.el7
.x86_64
libkdb5.so.8()(64bit) is needed by krb5-devel-1.13.2-10.el7.x86_64
同時にインストールする必要があるみたい。
[root@mygeeto tmp]# rpm -U krb5-devel-1.13.2-10.el7.x86_64.rpm krb5-libs-1.13.2
-10.el7.x86_64.rpm
warning: krb5-devel-1.13.2-10.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, k
ey ID f4a80eb5: NOKEY
[root@mygeeto tmp]# rpm -U krb5-server-1.13.2-10.el7.x86_64.rpm
warning: krb5-server-1.13.2-10.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature,
key ID f4a80eb5: NOKEY
ようやく入った。
眠くなったので、続きは明日。
■ 12/7
kerberos5 のサーバを起動しないといけない。使ったことがないので、前調べを
してから、設定ファイルの中を確認。
[root@mygeeto tmp]# cat /etc/krb5.conf
[logging]
default = FILE:/var/log/krb5libs.log
kdc = FILE:/var/log/krb5kdc.log
admin_server = FILE:/var/log/kadmind.log
[libdefaults]
dns_lookup_realm = false
ticket_lifetime = 24h
renew_lifetime = 7d
forwardable = true
rdns = false
# default_realm = EXAMPLE.COM
default_ccache_name = KEYRING:persistent:%{uid}
[realms]
# EXAMPLE.COM = {
# kdc = kerberos.example.com
# admin_server = kerberos.example.com
# }
[domain_realm]
# .example.com = EXAMPLE.COM
# example.com = EXAMPLE.COM
KDC の設定ではなく、これはクライアントと言うかその KDC を使う側の設定だな。
KDC の設定は /var/kerberos/krb5kdc にあった。とは言っても、squid で使う
からには、/etc/krb5.conf の設定が必要なのかな。MIT の web ページなんかを
見ながら適当に編集。
[root@mygeeto tmp]# hostname
mygeeto.tatsuyoshi.net
[root@mygeeto tmp]# vit /etc/krb5.conf
[root@mygeeto tmp]# cat /etc/krb5.conf
[logging]
default = FILE:/var/log/krb5libs.log
kdc = FILE:/var/log/krb5kdc.log
admin_server = FILE:/var/log/kadmind.log
[libdefaults]
dns_lookup_realm = false
ticket_lifetime = 24h
renew_lifetime = 7d
forwardable = true
rdns = false
default_realm = TATSUYOSHI.NET
default_ccache_name = KEYRING:persistent:%{uid}
[realms]
TATSUYOSHI.NET = {
kdc = mygeeto.tatsuyoshi.net
admin_server = mygeeto.tatsuyoshi.net
}
[domain_realm]
.tatsuyoshi.net = TATSUYOSHI.NET
tatsuyoshi.net = TATSUYOSHI.NET
同様に MIT の web ページを参考に、KDC の設定。
[root@mygeeto tmp]# vi /var/kerberos/krb5kdc/kadm5.acl
[root@mygeeto tmp]# vi /var/kerberos/krb5kdc/kdc.conf
[root@mygeeto tmp]# cat /var/kerberos/krb5kdc/kadm5.acl
*/admin@TATSUYOSHI.NET *
[root@mygeeto tmp]# cat /var/kerberos/krb5kdc/kdc.conf
[kdcdefaults]
kdc_ports = 88
kdc_tcp_ports = 88
[realms]
TATSUYOSHI.NET = {
#master_key_type = aes256-cts
acl_file = /var/kerberos/krb5kdc/kadm5.acl
dict_file = /usr/share/dict/words
admin_keytab = /var/kerberos/krb5kdc/kadm5.keytab
supported_enctypes = aes256-cts:normal aes128-cts:normal des3-hmac-sha1:norma
l arcfour-hmac:normal camellia256-cts:normal camellia128-cts:normal des-hmac-sh
a1:normal des-cbc-md5:normal des-cbc-crc:normal
}
データベースの作成をする。
[root@mygeeto tmp]# kdb5_util create -r TATSUYOSHI.NET -s
30分待っても終わる気配がない。続きは明日。
■ 12/8
昨日の続き。朝起きたら master key の入力待ちになっていた。適当に入力を
するも。
[root@mygeeto tmp]# kdb5_util create -r TATSUYOSHI.NET -s
Loading random data
Initializing database '/var/kerberos/krb5kdc/principal' for realm 'TATSUYOSHI.N
ET',
master key name 'K/M@TATSUYOSHI.NET'
You will be prompted for the database Master Password.
It is important that you NOT FORGET this password.
Enter KDC database master key:
Re-enter KDC database master key to verify:
getaddrinfo(mygeeto.tatsuyoshi.net): Name or service not known
getaddrinfo でこのホストがひけないと駄目みたい。状況の確認。
[root@mygeeto tmp]# ping mygeeto.tatsuyoshi.net
ping: unknown host mygeeto.tatsuyoshi.net
[root@mygeeto tmp]# hostname
mygeeto.tatsuyoshi.net
[root@mygeeto tmp]# grep hosts /etc/nsswitch.conf
#hosts: db files nisplus nis dns
hosts: files dns
[root@mygeeto tmp]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
lookup は /etc/hosts からひくので、/etc/hosts の編集。後で使うかもしれない
ので、別なサーバも入れておいた。
[root@mygeeto tmp]# vi /etc/hosts
[root@mygeeto tmp]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain mygeeto mygeeto.tatsuyoshi.net
192.168.1.2 felucia felucia.tatsuyoshi.net
192.168.1.4 falleen falleen.tatsuyoshi.net
192.168.1.17 takodana takodana.tatsuyoshi.net
192.168.1.18 jakku jakku.tatsuyoshi.net
192.168.1.19 ahch-to ahch-to.tatsuyoshi.net
ping の応答は返ってくるようになったので、kdb5_util の再実行。家に戻ったら
master key 入力待ちになっていた。適当に入力。
[root@mygeeto tmp]# kdb5_util create -r TATSUYOSHI.NET -s
Loading random data
Initializing database '/var/kerberos/krb5kdc/principal' for realm 'TATSUYOSHI.N
ET',
master key name 'K/M@TATSUYOSHI.NET'
You will be prompted for the database Master Password.
It is important that you NOT FORGET this password.
Enter KDC database master key:
Re-enter KDC database master key to verify:
kdb5_util: File exists while creating database '/var/kerberos/krb5kdc/principal
'
どうやら getaddrinfo でエラーが起きたが、ファイルの作成はしていたようで、
既にあると言われる。ちょっと気持ち悪い感じなので、krb5_util で作成したと
思われるファイルを削除して、再実行することにした。
[root@mygeeto tmp]# rm -f /var/kerberos/krb5kdc/principal*
[root@mygeeto tmp]# kdb5_util create -r TATSUYOSHI.NET -s
Loading random data
Initializing database '/var/kerberos/krb5kdc/principal' for realm 'TATSUYOSHI.N
ET',
master key name 'K/M@TATSUYOSHI.NET'
You will be prompted for the database Master Password.
It is important that you NOT FORGET this password.
Enter KDC database master key:
Re-enter KDC database master key to verify:
2時間弱で master key 入力になり、今回は問題なく終了した。それにしても、
何でこんなに長く待たされるのだろう。
次の手順は acl に管理者を追加するとかで。
[root@mygeeto tmp]# file /var/kerberos/krb5kdc/kadm5.acl
/var/kerberos/krb5kdc/kadm5.acl: ASCII text
[root@mygeeto tmp]# cat /var/kerberos/krb5kdc/kadm5.acl
*/admin@TATSUYOSHI.NET *
既にファイルもあるし、admin がいるので大丈夫そうだけど。問題があったら、
後から追加することにして、Kerberos データベースに管理者の追加。kadmin.logal
は対話式のコマンドみたい。
[root@mygeeto tmp]# kadmin.local
Authenticating as principal toyota/admin@TATSUYOSHI.NET with password.
kadmin.local: addprinc admin/admin@TATSUYOSHI.NET
WARNING: no policy specified for admin/admin@TATSUYOSHI.NET; defaulting to no p
olicy
Enter password for principal "admin/admin@TATSUYOSHI.NET":
Re-enter password for principal "admin/admin@TATSUYOSHI.NET":
Principal "admin/admin@TATSUYOSHI.NET" created.
kadmin.local: exit
これで、デーモンを起動する。
[root@mygeeto tmp]# krb5kdc
[root@mygeeto tmp]# kadmind
あっさり起動。kinit で動作チェック。
[root@mygeeto tmp]# kinit admin/admin@TATSUYOSHI.NET
bash: kinit: command not found
まさかのコマンドがないと。調べてみたら、krb5-workstation の RPM に入って
いるとのことなので、インストール。
[root@mygeeto tmp]# wget -q http://mirror.centos.org/centos/7/os/x86_64/Package
s/krb5-workstation-1.13.2-10.el7.x86_64.rpm
[root@mygeeto tmp]# rpm -i krb5-workstation-1.13.2-10.el7.x86_64.rpm
warning: krb5-workstation-1.13.2-10.el7.x86_64.rpm: Header V3 RSA/SHA256 Signat
ure, key ID f4a80eb5: NOKEY
kinit コマンドが入ったようなので、kinit を実行。
[root@mygeeto tmp]# kinit admin/admin@TATSUYOSHI.NET
Password for admin/admin@TATSUYOSHI.NET:
パスワードを入れたら何もなく終了したけど、これで良いのかな。ようやく krb5
が動作した。続きは明日。
■ 12/9
昨日の続き。squid で negotiate 認証をするテスト。squid の wiki を参考に
して、keytab の作成をする。
msktutil -c -b "CN=COMPUTERS" -s HTTP/<fqdn> -h <fqdn> -k /etc/squid/HTTP.keyta
b --computer-name squid-http --upn HTTP/<fqdn> --server <domain controller> --v
erbose
を実行するとあって、--server オプションでドメインコントローラの指定をする。
そんなもの無いし使わないし。man で確認しようとしたら、そんな man がないと。
嫌な予感。
[toyota@mygeeto tmp]$ msktutil
-bash: msktutil: command not found
CentOS の rpm には、msktutil が含まれているものがなさそうだし、そのため
だけに Samba を入れて net コマンドを使うのも面倒だし。squid の wiki を
見ると、kadmin コマンドでもできるとある。man kadmin で確認してみるが、
keytab の作成のオプションは無さそう。困った。
目的は認証が暗号化されているかどうかなので、この際なので認証の成功とか
失敗は無視して、squid.conf の設定をすることに。kerberos 認証の際に仕様
するコマンドの確認。wiki にもあるように negotiate_kerberos_auth を使えば
良さそう。
[root@mygeeto tmp]# ls /tmp/squid/libexec/
cachemgr.cgi ext_session_acl negotiate_kerberos_auth
cert_tool ext_sql_session_acl negotiate_kerberos_auth_test
diskd ext_time_quota_acl negotiate_wrapper_auth
ext_delayer_acl ext_unix_group_acl storeid_file_rewrite
ext_edirectory_userip_acl ext_wbinfo_group_acl unlinkd
ext_file_userip_acl helper-mux.pl url_fake_rewrite
ext_kerberos_ldap_group_acl log_db_daemon url_fake_rewrite.sh
ext_ldap_group_acl log_file_daemon
[toyota@mygeeto tmp]$ cd squid/libexec/
[toyota@mygeeto libexec]$ ./negotiate_kerberos_auth_test -h
Token: YIID3gYGKwYBBQUCoIID0jCCA86gCjAIBgYrBgEFAgWiggO+BIIDumCCA7YGBisGAQUCBQUB
(省略)
[toyota@mygeeto libexec]$ ./negotiate_kerberos_auth_test
2015/12/09 20:38:50| negotiate_kerberos_auth_test: Error: No proxy server name given
[toyota@mygeeto libexec]$ ./negotiate_kerberos_auth -h
./negotiate_kerberos_auth: invalid option -- 'h'
Usage:
squid_kerb_auth [-d] [-i] [-s SPN] [-k keytab] [-c rcdir] [-t rctype]
-d full debug
-i informational messages
-r remove realm from username
-s service principal name
-k keytab name
-c replay cache directory
-t replay cache type
The SPN can be set to GSS_C_NO_NAME to allow any entry from keytab
default SPN is HTTP/fqdn@DEFAULT_REALM
negotiate_kerberos_auth_test というコマンドがあって、これでテストできるの
だろうか。オプションで、proxy server の名前を指定するようなので、やって
みた。
[toyota@mygeeto libexec]$ vi /tmp/squid/etc/squid.conf
[toyota@mygeeto libexec]$ tail -10 /tmp/squid/etc/squid.conf
# for negoyiate authentication
auth_param negotiate program /tmp/squid/libexec/negotiate_kerberos_auth_test my
geeto.tatsuyoshi.net
auth_param negotiate children 20 startup=0 idle=1
auth_param negotiate keep_alive on
acl auth proxy_auth REQUIRED
http_access deny !auth
http_access allow auth
これで squid を起動したら、エラーも出さずに起動した。うまく動いていない
気もするけど、別の PC から wireshark で受けながらプロキシに対して接続して
みた。ブラウザの方は、認証もなくあっさり表示された。wireshark で確認しても
やっぱり認証がない。
squid の wiki を見てみると、Step by Step Overview のところで動作の解説が
あって、まず Desktop は Active Directory にログインしている。その後 squid
にアクセスして、Proxy-Authenticate: Negotiate を受け取り、さらに Desktop は
service ticket を kdc からもらっている。
つまり、ログインの仕組みから必要になって、さらに squid は透過的に kerberos
の kdc に認証をしてくれるわけではなく、既に認証されたかどうかを確認する
だけのようで。
もう1つ書かれているのが、squid_kerb_ldap が使われる場合で、Active Directory
が必要とある。
proxy の認証のやりとりを平文や hash 以外の暗号化されたもので行いたいだけ
なのだけど、ちょっと kerberos サーバを作って何とかできる訳じゃなさそう。
こうなってくると、VPN の方が現実的な気がする。何か他の方法がないか、もう
少しやってみる。
■ 12/10
ドン・キホーテが「ワリキリPC」なるものを出したみたいで。ふーんと記事を
斜め読みしていたら、気になることが書いてあった。
ITmedia - ドンキ、1万9800円のWindows 10搭載PC「ワリキリPC」発売
13時間連続で駆動するバッテリーも内蔵と書いてある。私からしたら、UPS を
内蔵しているということなので魅力的に映る。他のスペック的には、メモリが
4GB だったら文句がないのだけど。OS 無しで良いからあと5000円ぐらい安いと
買ってしまいそう。
■ 12/11
昨日の続き。ドン・キホーテには PC を作る能力がないだろうから「ワリキリPC」
はどこが作ったものだろうかと調べてみたら、サードウェーブデジノスという
ところの Diginnos DG-M01IW という製品で、ドスパラで夏発売したものだった。
Diginnos DG-M01IW
色々なところでレビューもしていて、悪くはなさそう。型落ちが安く売られて
いたら、値段によっては手を出そう。
■ 12/12
車に乗ろうとしたら、リモコンでドアが開かない。嫌な予感をしながら鍵で中に
入ってエンジンをかけようとしたら、かからない。ライトのスイッチを見てみると
点けっぱなしだったみたいで、前回乗ったのはいつだったか思い出してみる。
2週間前か、1週間前か、そのぐらい。バッテリーが空になっているだろうから、
外して充電してみる。バッテリーを外して電圧を測ってみる。
まさかの 179mV で、目を疑ってしまった。何度測ってもほとんど変わらずで。
バッテリーが完全に死んだ可能性があるなと、頭の中でどこでバッテリーを入手
しようかと考えながら、充電してみるだけしてみることにした。
■ 12/13
昨日の続き。昨日からずっと 2A ぐらいかけて定電流充電(と言っても手動)で
充電しているが、24時間以上充電しても、12.7V ぐらいにしか上がらない状態。
12V 近くまでは比較的早く上がったけど、その後がなかなか上がらず、ちょっと
出かけなければいけないので、充電の続きは後日となった。やっぱり、新しいのを
買わないと駄目かもな。
明日から3日ほど更新はありません。
■ 12/17
エアバス A330-300 に乗ったのだけど、前のモニタに見慣れた表示が出ていた。
何だか古そうな感じ。
表示は。
RedBoot(tm) bootstrap and debug environment [RAM]
(Panasonic Avionics Corporation) release, version ("560328-212" (見えず)
") - built 11:09:26, Oct 16 2009
Platform: SM-02 (I386)
Copyright (C) 2000, 2001, 2002, Red Hat, Inc.
RAM: 0x00000000-0x000a0000, 0x00100000-0x01000000 available
Current Boot Count is 5
メモリは 16M っぽい。5秒の待ちとか起動中の Unknown symbol の連続とか、
何とかなると思うんだけど、みっともないな。
■ 12/18
13日と17日と充電して、ようやく充電電圧を 14.8V ぐらいまで上げることができる
ようになった。そろそろ大丈夫かなということで、充電器を外してバッテリーの
電圧を測ってみた。
14.03V だった。1V 以下だったことを考えると、充電できない可能性もあったが、
なんとかなるもんだ。これを車に積んでエンジンを掛けてみる。掛かるまでセル
モーターが2秒ほど動作して少し回転が弱くなったとこころでエンジンがかかった。
ちょっと危なかったかも。エンジンがかかったので、少し充電がてら走ってみる。
ECU のリセットは気にならない感じ。このバッテリーいつまで持つかな。明日の
夜に乗る用事があるので、まずはそこまでもつかどうか。
■ 12/19
自動二輪車を調べたりする関係で中国語の web ページを見るときがある。その際
フォントがちぐはぐしていて、非常に見辛い。簡体字のページで書いてみるた。
<html><head>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
</head><body>建设雅马哈 天剑</body></html> |
これを各ブラウザで表示してみた。
何故こんなことが起きるのか調べてみた。「天剑」で言うと UTF-8 の文字コードは
天 [E5 A4 A9]
剑 [E5 89 91]
となっている。この「天」に関しては日本語と共通ということで、フォントを指定
していないときのデフォルトのフォント「MS P ゴシック」で表示される。「剑」は
日本語のフォントに含まれないので、「MS P ゴシック」が使われずに別の中国語
フォントを使う。そのため統一感が無くなってしまうみたい。これは utf-8 と
言うか unicode の功罪だな。ブラウザからしたら文字コードが utf-8 だとしたら
日本語なのか中国語なのか混在なのか知らないよ、という感じだし。
じゃ、日本語と簡体字を含むフォントがあれば、解決するかなということで PC に
入っている簡体字のフォントを出してみた。Photoshop だと言語ごとに出るので
それを参考にすると。
日本語と共通のフォントはなさそうな、見たことがないフォントばかりだな。
何か良いフォントがないか web から探してみることに。2014年7月に Adobe や
Google などが日中韓のオープンソースのフォントを出したようで。
Adobe、日中韓対応のオープンソースフォント「Source Han Sans」を無償公開
この Google 版である Noto Fonts をダウンロードしようとしたら、サイズが
全部で 471MB もある。
個別のダウンロードを見ても、えらいファイルサイズがあるな。
仕方ないが「Noto Sans CJK JP」をダウンロードすることにした。時間がかかる
ので、続きは明日に。
■ 12/20
昨日の続き。ダウンロードしてきたファイルの中身を確認してみた。フォントの
作成日は今年の6月みたい。
全部は大きいので、NotoSansCJKjp-Medium.otf だけ解凍してインストールして
みた。
中国語の web ページを見るブラウザは主に Opera なので、Opera からフォント
変更のアドレス browser://settings/fonts で、インストールしたフォントを
選ぼうとしたが見つからない。再起動する必要があるみたい。
Opera を再起動したら、フォントが出て来た。Noto Sans CJK JP Medium を指定
した。
これで、昨日のページを表示させてみた。
ちぐはぐな感じは無くなった。日本語のものだけをダウンロードしたので、他の
言語のものもダウンロードする必要があるかとも思ったけどいらないみたい。
普段使うにはちょっと文字が太いかな。
■ 12/21
tableタグを使って、グループをまとめたような枠が作れないかと。こんな感じで、
出来れば角を丸めて。
frame属性を使ってできないかと見てみたりしたが、できなさそう。border-left と
border-right と border-bottom を使って左右と下の線を引くことはできたけど、
目的のものとはだいぶかけ離れている。
セルごとに色々とやってみたけど、パッとしない。
CSS が出る前に良くやっていた、画像を用意しての表を作らないと駄目かな。
なんだか歯がゆい。
■ 12/22
昨日の続きで。画像を使って実現してみた。作った画像は3つ。
角の画像は1つだけ作って、使うときに transform: rotate で回して使う。早速
やってみた。
なんだか色々と美しくないな。もっと良い方法がないかと調べていたら、fieldset
タグを見つけた。HTML 4.01 から使えるものらしく、すっかり存在を知らなかった。
やってみる。
角が丸くなるし、書く量は少ないし、気が付かなかったのが恥ずかしいぐらい。
横幅が目いっぱいになるので、サイズを指定しようと思ったのだけど、display
プロパティを inline にすれば自動的に調整してくれるらしいので、やってみた。
背景色を付けたとき、legend がどうなるのかやってみた。
下半分に色が付く感じになった。ちょっと違和感があるけど、この辺りは legend の
background-color で変更できそうなので、何とかなりそうだな。それにしても、
fieldset タグであっさりできてしまった。頭の中が HTML 2.0 で止まっている
ので、色々と勉強し直さないとな。
■ 12/23
昨日は冬至ということで、一番日が短いらしく。ただ、周回軌道が楕円だからか、
地軸が関係しているのか、日の出が一番遅くて日の入りが一番早いというわけ
ではないようで。CASIO の ke!san サイトで出してみた。
CASIO - ke!san 日の出日の入り計算
横浜に住んでいるので、横浜市役所の場所で計算しようと思ったが、家は横浜の
南で鎌倉市役所の方が近いので、鎌倉市役所の緯度経度標高で計算してみた。
北緯 139.5467
東経 35.3192
標高 17.8m
CASIO のサイトは地球の球の歪みについて、どうやって計算しているのか良く
わからないけど、出て来た時間から日の出ている時間を引き算で出した。
日付 | 日の出 | 日の入 | 昼の時間 |
12月1日 | 6:30:29 | 16:30:25 | 9:59:56 |
12月2日 | 6:31:23 | 16:30:17 | 9:58:54 |
12月3日 | 6:32:16 | 16:30:10 | 9:57:54 |
12月4日 | 6:33:09 | 16:30:05 | 9:56:56 |
12月5日 | 6:34:00 | 16:30:03 | 9:56:03 |
12月6日 | 6:34:51 | 16:30:02 | 9:55:11 |
12月7日 | 6:35:41 | 16:30:03 | 9:54:22 |
12月8日 | 6:36:30 | 16:30:07 | 9:53:37 |
12月9日 | 6:37:18 | 16:30:12 | 9:52:54 |
12月10日 | 6:38:05 | 16:30:19 | 9:52:14 |
12月11日 | 6:38:51 | 16:30:28 | 9:51:37 |
12月12日 | 6:39:36 | 16:30:40 | 9:51:04 |
12月13日 | 6:40:20 | 16:30:53 | 9:50:33 |
12月14日 | 6:41:02 | 16:31:08 | 9:50:06 |
12月15日 | 6:41:44 | 16:31:24 | 9:49:40 |
12月16日 | 6:42:24 | 16:31:43 | 9:49:19 |
12月17日 | 6:43:02 | 16:32:03 | 9:49:01 |
12月18日 | 6:43:39 | 16:32:26 | 9:48:47 |
12月19日 | 6:44:15 | 16:32:50 | 9:48:35 |
12月20日 | 6:44:49 | 16:33:15 | 9:48:26 |
12月21日 | 6:45:22 | 16:33:43 | 9:48:21 |
12月22日 | 6:45:53 | 16:34:12 | 9:48:19 |
12月23日 | 6:46:22 | 16:34:43 | 9:48:21 |
12月24日 | 6:46:50 | 16:35:15 | 9:48:25 |
12月25日 | 6:47:16 | 16:35:49 | 9:48:33 |
12月26日 | 6:47:40 | 16:36:25 | 9:48:45 |
12月27日 | 6:48:03 | 16:37:02 | 9:48:59 |
12月28日 | 6:48:24 | 16:37:40 | 9:49:16 |
12月29日 | 6:48:43 | 16:38:20 | 9:49:37 |
12月30日 | 6:49:01 | 16:39:02 | 9:50:01 |
12月31日 | 6:49:17 | 16:39:45 | 9:50:28 |
1月1日 | 6:49:30 | 16:40:29 | 9:50:59 |
1月2日 | 6:49:42 | 16:41:14 | 9:51:32 |
1月3日 | 6:49:53 | 16:42:01 | 9:52:08 |
1月4日 | 6:50:01 | 16:42:49 | 9:52:48 |
1月5日 | 6:50:07 | 16:43:38 | 9:53:31 |
1月6日 | 6:50:12 | 16:44:28 | 9:54:16 |
1月7日 | 6:50:14 | 16:45:19 | 9:55:05 |
1月8日 | 6:50:15 | 16:46:11 | 9:55:56 |
1月9日 | 6:50:14 | 16:47:04 | 9:56:50 |
1月10日 | 6:50:11 | 16:47:58 | 9:57:47 |
日の出が一番遅いのは1月5日、日の出が一番早いのは12月6日だった。どちらも
半月ぐらいずれるのか。
冬至って1年のうちで一番昼の時間が短いという定義のようだけど、色々考えて
いたら、冬至とか夏至って時差があるので北半球上のすべての場所で同じ日では
ないのじゃないのかと気が付いた。さっそく wikipedia の冬至のページを見て
みると、中国と日本の冬至日一覧があって、1988年では1日ずれている。同様に
夏至のページでも1990年でずれている。やっぱり冬至や夏至は時差の関係で、
必ずしも地球上で同じ日というわけじゃないみたい。なんだか勉強になった。
■ 12/24
昨日は表を描いたが、そのときの様子を。まず、ke!san のページに対して投げて
いるパラメタを確認し、GET にしてパラメタを投げてみたが、結果は得られな
かった。
http://keisan.casio.jp/exec/system/1184726771?lang=&charset=Shift_JIS&(省略)
仕方ないので curl コマンドを使って POST で投げてみた。
$ curl -d 'var_%83%C9=139.5467' -d 'var_%83%D3=35.3192' -d 'var_H=17.8' \
-d 'var_I=9' -d 'var_Y=2015' -d 'var_M=12' -d 'var_D=1' -d 'var_rem1=0' \
http://keisan.casio.jp/exec/system/1184726771
この結果から、欲しい行だけ grep したら。
バイナリファイル (標準入力) に一致しました
だと。ke!san の web サイトには英語版もあるのでアクセスしてみた。
CASIO - ke!san Sunrise and sunset times (location) Calculator
入力してみたところ、時分までの結果で、秒の単位が出ない。仕方ない、grep は
-a オプションを付けることにした。cut と tr を組み合わせて。
$ curl -d 'var_%83%C9=139.5467' -d 'var_%83%D3=35.3192' -d 'var_H=17.8' \
-d 'var_I=9' -d 'var_Y=2015' -d 'var_M=12' -d 'var_D=1' -d 'var_rem1=0' \
http://keisan.casio.jp/exec/system/1184726771 | grep -a 'answaku' | \
cut -d'>' -f3 | cut -d'<' -f1 | tr '\n' ',' >> result
これでスクリプトを書いて結果のファイルを見てみたら、改行が入っていない。
区切りがわからなくなっている。
$ cat result
06:30:29,11:30:34,16:30:25,06:31:23,11:30:56,16:30:17,(省略)
出力ファイルを再加工するのも面倒だし。日付も欲しかったので、実行させる
スクリプトに echo を入れて凌いだ。出て来た結果をエディタで加工して表が
完成した感じ。
■ 12/25
数日前、Firefox が自動更新されたようだけど、特に理由もないので再起動を
しないで放置していた。今日、Photoshop で作業をしていたら、メモリが足りない
とか出たので、Firefox を一度落とすことにした。Photoshop が終わってから、
Firefox を起動し直すと、一部のアドオンが無効化されていますとか。
バージョンを確認してみたら、43.0.1 と出たが、さらに更新が入ったようで、
再起動が必要と出ている。
アドオンの件は後回しにして、再起動してみた。
ようやく最新版になった。アドオンの件は、アドオンに署名が必須になり、その
影響で出たみたい。about:config から設定を変更したら使えるようになるみたい
なのだけど、その前に Firefox の 64bit 版が出たとのことなので、まずそれを
入れることにした。時間がかかりそうなので、続きは明日に。
■ 12/26
昨日の続き。64bit 版の Firefox をインストールした。バージョンを確認して
みると、32bit 版と同じ 43.0.2 だった。
問題のアドオンの件。使っているアドオンを確認したら、普段使っているアドオン
だったので、about:config から xpinstall.signatures.required を false に
変更して動作するようになった。
しばらく使っているが、問題無さそうと言うか違いがわからないぐらいなので、
32bit 版の方はアンインストールした。
■ 12/27
ちょっとネットワークの実験をしようと、旅行で使っている EeePC X101CH を
出してきた。外に繋ぐ予定はなかったけど、一度繋いで windows update をして
おくことにした。それが失敗だった。ダウンロードに1時間ぐらい、さらに更新が
2時間経っても 26/42 ぐらいで、まだ終わる気配がない。
仕方ない、続きは明日だな。
■ 12/28
昨日の続きで。朝起きたら windows の更新は終わっていた。念のためもう一度
windows update をしてみたら、昨日よりも数が増えた感じ。朝、ダウンロードを
させて、夜再起動させて更新したが、やっぱり2時間経っても 29/50 ぐらい。
結局、3時間ちょっとかかった。実験は明日だな。
■ 12/29
朝起きたら昨日の更新は終わっていたので、無事に実験も終わった。しかし、
この PC の遅さにイライラしてしまう。メモリが 1GB なので仕方ないのだけど。
タスクトレイに Windows10 にアップデートできるアイコンがあって、この PC を
Windows10 にしたら早くなるのか検索してみた。メモリが 1GB でアップデート
した人のページを見る限り、少し早くなる程度みたい。少しでも早くなるならと
アップデートしてみた。
Intel Graphics Media Accelerator 3600 Series の問題でアップデートできない
とか。この 3600 Series と Windows10 で検索してみたら、アップデートはできる
ことはできるみたいだけど、解像度が変更できない等の問題があるとのことで。
アップデートは一旦お預けにした。
■ 12/30
Windows 8.1 を使っているのだけど、たまに右から黒いメニューのようなものと
時計が出てくる。
これって意図的に出したことがないけど、どうやって出すのだろうとやってみた。
マウスを画面の右上か右下にもってきて1秒ぐらいで出てくる、もしくはマウスを
右上から下に移動するか、右下から上に移動すると出てきた。そもそも、これは
何と言う名前か調べたら、「チャーム」と呼ばれるものらしい。
これまで使ったことはないし、これからも使うことはないので、表示しないように
変更してみる。コントロールパネルから「デスクトップのカスタマイズ」を選び、
さらに「ナビゲーションのプロパティ」を選ぶと画面が出てきた。この設定を
する「タスクバーとナビゲーションのプロパティ」では右上を無効にすることは
できるけど、右下は設定できない。
右下も無効にできないか検索してみたら、「PC設定」から「PCとデバイス」を
選び、さらに「画面の操作」を選ぶと設定画面でもできるとか。やってみた。
やっぱり右上だけだな。右下はレジストリをいじる必要があるみたい。それほど
困ってないので、右下は良しとするか。
■ 12/31
今年も1年ありがとうございました。今日は写真の整理をしていて、今年撮った
写真の枚数を数えてみたら、8174枚だった。スマートフォンで撮ったのは除外
しているので、合わせたら8200枚ぐらいかな。写真1枚で 2MB ぐらいはあるので
単純計算で 16GB 以上もあるのか。Picasa の容量が足りなくなるわけだな。
|