5555で接続する。
サーバー側のfirewallに穴を空けて設置した方が無難だ。SoftEtherは穴なしでも運用できる強力な透過性が一つのウリだが(NATトラバーサル機能),意外と接続できない場所もありそうだ。例えばANAの羽田空港ラウンジ(国際線)のWiFiからは,穴を空けてないサーバーには接続できなかった(言い換えると、VPN over UDP with NAT-Tだと不可。2017年8月)。また,iOSやAndroidから接続するにも穴を空ける必要がある(L2TP/IPsecになるから)。とりわけ中国から接続する(後述)には穴を空けておいた方が確実だろう。もともとNATトラバーサル機能はFWに穴を空けられない事情がある場合にこそ本領を発揮する。自分が管理するVPSなら穴を空けるのは特に問題ないだろう。
中国政府はVPNブロックを2018年2月1日から有効にする(中国政府、通信事業者にVPNの利用禁止を要求 | TechCrunch Japan2017年7月11日)と報じられているので,中国に行く前に5555を空けておいた方が無難だ。FWに穴を空けてないと,クライアントはSoftEther本体の管理サーバーにまず接続するのだと思うが,これが遮断される可能性が非常に高く,NATトラバーサル機能が機能しなくなるのではないか。また,992は「プロキシサーバーは通過できない場合が多い」(3.3 VPN Server 管理 - SoftEther VPN プロジェクト)。443を使うには自分のhttpsをあきらめる必要がある。
なお,接続先の個別の設定でNAT-Tを無効にできる。
中国でVPNが塞がれた場合に特に考える必要があるのは、スマホはSoftether標準プロトコルでは接続できないこと。一番簡単な対抗策はSoftEtherサーバーにOpenVPNクライアントで接続することかな。これならiOSアプリやAndroidアプリもある。ただしOpenVPNは著名なのでこれも塞がれる可能性が高そう。
他には,WiFiルーターを使うか,Windows10をWiFiルーター代わり(モバイルホットスポット)にする手もある。なお,モバイルホットスポット機能を使う場合,iPhone(子)は親の環境(親でVPN中)を完全には引き継がない。詳細はPC/Windows
自分で決めたホスト名で接続できる(ダイナミック DNS)。一つ注意すべきことは,一度確保した名前を別のマシンで継続使用する(サーバーの移転やSoftEtherの再インストールなどに伴い)には「ダイナミック DNS 秘密鍵」を事前にメモしておく必要がある。
Google Project Fiなど,米国IPがないと利用や申込ができないものがある。一般には公開proxyやVPN Gate 筑波大学による公開 VPN 中継サーバープロジェクトなどを使うのだろうけど,流行廃りがあるので頻繁に使っていない人はどれが最適か(安全で安定的か)分かりにくい。調べるだけ時間の無駄なので,米国のAmazon Lightsailに自前でSoftEtherを立てた。
偶にVPNサーバーに使うだけなら、普段はインスタンスを削除して維持費を低くすることもできる。スナップショットを保持すると課金されるが、インスタンスを維持するよりはかなり安くなる。偶にSoftEtherを使うだけなら、スナップショットなしに毎回ゼロからインスタンスを作っても1時間かからないだろう。
長いURLの代わりに短縮URLを使うとき,意味不明の文字列なので短くしたのになお記憶困難だったり,手打ちするには全然向かなかったりすることがある。リンクをクリックする用法のみ想定すればよいなら,意味不明の文字列でもよいが,それでは済まないこともある。自前サーバーがあればもっとスマートに短縮URLを用意できる。サブドメインとmod_rewriteを使えばよい。サブドメインを使わずにディレクトリで表現してもよいが,どちらがより他人に伝えやすいか,自分が覚えやすいか次第だ。
PATH="/root/perl5/bin${PATH:+:${PA... PERL5LIB="/root/perl5/lib/perl5${P... PERL_LOCAL_LIB_ROOT="/root/perl5${... PERL_MB_OPT="--install_base \"/roo... PERL_MM_OPT="INSTALL_BASE=/root/pe...
ウェブをIPv6で公開するのは非常に簡単だった。(自宅からIPv6で外部にアクセスできるようにするという意味ではない。インターネット上に持っているウェブサーバーに、世界中の人がIPv6でアクセスできるようにするという意味。)DNSにAAAAレコードを追加するだけだった。Apache側の設定変更や再起動(reload,restart)すら不要だった。従来からhttpd.confやvhost.confにIPアドレスを書いてなかったからだが、そもそも書いてない個人サーバーの方が多数派では。AAAAレコード追加の数時間後には、いままでのホスト名のままで、IPv6によるアクセスに切り替わった。IPv6であることを特に意識する場面はない。同じ名前で運用しているので、IPv4のみの環境で使っている人から見ても何も変わらない。
ただし、アクセス制御は見直す必要がある。非公開ページがいきなり公開になる痛いミスは、普通は起きないが(普通はOrder Deny,Allow;Deny from allで書いているはず)、逆の、限定公開ページが全て非公開になってしまう(自宅からのみアクセス可能としていたのが、自宅からでもアクセスできなくなる等)のは不可避だ。一つ一つ、限定公開の設定を追加する必要がある。
痛いのはホスト名による
Allow from .ppp.ocn.ne.jp
の類が効かない。IPv6では(いまのところ)逆引きできない。
外部から見える自分のIPアドレス(Apahceのログなどに残るもの)は、IPv4(の普通の環境)と違い、個々の端末(自分のパソコン)そのものになるので(パソコン一台一台にグローバルアドレスが割り当てられる)、そこから、「自宅のアドレス」に相当する部分を抜き出す。
Windowsのコマンドプロンプト画面でipconfigを実行し、「一時 IPv6 アドレス」(または「IPv6 アドレス」でも同じ)を見る。:で区切られた区分(フィールドという)を上から4区画分取り出す。末尾に「::/64」を付ける。それが自宅のアドレス表記になる。例えば、「一時 IPv6 アドレス」が
2001:db8:85a3:8d3:1319:8a2e:370:7348
なら、自宅を意味するアドレスは
2001:db8:85a3:8d3::/64
となる。これを
Allow from 2001:db8:85a3:8d3::/64
などの形でApacheに与える。
「一時 IPv6 アドレス」または「IPv6 アドレス」であり、「リンクローカル IPv6 アドレス」ではない。なお、プロバイダーから自宅に対して/64で来るプロバイダーもあれば、HGWまで/56で来る(そしてLAN側が/64になる)プロバイダーもあるようだ。いずれにせよ、IPv4が固定でないのと同じく、/64が固定であることも保証されないだろう。
なお、IPv4なら、外部から見えるアドレスは自宅のルーターの「WAN側」アドレスだったが、IPv6では「LAN側」のアドレスになる。これは上に書いたことと同義だが、IPv4との大きな変化であり新鮮だ。
LAN側 | |
IPアドレス/ネットマスク | 192.168.0.1/24 |
IPv6アドレス/プレフィックス長(グローバル) | 2001:db8:85a3:8d3:1319:8a2e:370:7348/64 (これが自宅ルーターのグローバルアドレス) |
IPv6アドレス/プレフィックス長(リンクローカル) | ユーザーには不要。無視。 |
WAN側 | |
IPアドレス/ネットマスク | 1.75.230.44 (IPv4の、外部から見えるグローバルアドレス) |
IPv6アドレス/プレフィックス長(リンクローカル) | ユーザーには不要。無視。 |
2.4からの書式Requireを使いホスト名を指定すると、IPv6のアクセスに際して次のエラーが出ることがある。
AH01753: access check of '....ne.jp' to /.../index.php failed, reason: unable to get the remote host name
自宅のホスト名(b1111.oskea120.ap.so-net.ne.jpの類)を書くと、おそらくほぼ全てのケースで出る。この種のホスト名はIPv6のホスト名がなく(AAAAレコードが空)、IPv6で正引きすらできない。(このホスト名はプロバイダーが自動設定したもので、IPv4では多くの場合、逆引きも可能。)
とりあえず2.2書式を使うことは出来るが、非推奨だ。いつ廃止されてもおかしくない。2.4なら、2.4から使える<If >ディレクティブを使えば当面対処できる。
<If "%{REMOTE_ADDR} =~ /\./"> あるいは <If "%{IPV6} != 'on'"> あるいは <If "! -T %{IPV6}"> Require host b1111.oskea120.ap.so-net.ne.jp </If>
アクセスログを分析するツールは色々あるが、単に直近のログを、時系列のまま、可読性を高めた形でさっと目を通したいだけの方が多い。URLエンコードを解除したり、(逆引きしていないのであれば)逆引きしたり、表示項目は数項目だけにして、ブラウザでテーブルの形式で見る簡単なビューワー。CGI。
. - - [07/May/2018:02:02:22 +0900] "GET /admin/index.php HTTP/1.1" 404 213 "-" "Python-urllib/3.4"
例えば、http://hoge.com/work/におけるworkディレクトリ内の.htaccessで設定する場合、
RewriteRule ^/work/ /work2/ や RewriteRule ^/work/(.*)$ /work2/$1
はworkしない。(.*の有無は関係ない。上記のような記述は、rewriteの最も基本的な用例として普通紹介されているが、それがworkしない。)次が正しい。
RewriteRule .* /work2/ や RewriteRule ^(.*)$ /work2/$1
URIに応じて、事実上、複数のDocumentRootを持つことができる。(事実上の条件的変更、割り振り。)
サブ的なURIに対してAliasディレクティブを使う。mod_alias - Apache HTTP サーバ バージョン 2.4
使用例
Alias /.well-known /var/www/html/public/.well-known
Alias /.well-known/acme-challenge /var/www/html/public階層がずれる。
php70-php-7.0.29-1.el6.remi.x86_64 (remi-safe) 要求: httpd-mmn = 20051115 インストール: httpd-2.4.33-1.x86_64 (@/httpd-2.4.33-1.x86_64) httpd-mmn = 20120211
>httpd -k instal
[Fri Oct 05 20:42:22.411234 2018] [mpm_winnt:error] [pid 16924:tid 544] (OS 2)指定されたファイルが見つかりません。 : AH00436: No installed service named "Apache2.4".
yum updateの結果、sshできなくなった。/usr/lib/firewalld/services/ssh.xmlの値が初期値に戻っていた。CentOS 7.5.1804。2018年10月 5日