メモ[edit]

VPNできないときの対応[edit]

5555で接続する。

VPN[edit]

SoftEther[edit]

サーバー側のfirewallに穴を空けて設置した方が無難だ。SoftEtherは穴なしでも運用できる強力な透過性が一つのウリだが(NATトラバーサル機能),意外と接続できない場所もありそうだ。例えばANAの羽田空港ラウンジ(国際線)のWiFiからは,穴を空けてないサーバーには接続できなかった(言い換えると、VPN over UDP with NAT-Tだと不可。2017年8月)。また,iOSやAndroidから接続するにも穴を空ける必要がある(L2TP/IPsecになるから)。とりわけ中国から接続する(後述)には穴を空けておいた方が確実だろう。もともとNATトラバーサル機能はFWに穴を空けられない事情がある場合にこそ本領を発揮する。自分が管理するVPSなら穴を空けるのは特に問題ないだろう。

中国[edit]

中国政府は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

ホスト名[edit]

自分で決めたホスト名で接続できる(ダイナミック DNS)。一つ注意すべきことは,一度確保した名前を別のマシンで継続使用する(サーバーの移転やSoftEtherの再インストールなどに伴い)には「ダイナミック DNS 秘密鍵」を事前にメモしておく必要がある。

Amazon Lightsail[edit]

Google Project Fiなど,米国IPがないと利用や申込ができないものがある。一般には公開proxyやVPN Gate 筑波大学による公開 VPN 中継サーバープロジェクトなどを使うのだろうけど,流行廃りがあるので頻繁に使っていない人はどれが最適か(安全で安定的か)分かりにくい。調べるだけ時間の無駄なので,米国のAmazon Lightsailに自前でSoftEtherを立てた。

偶にVPNサーバーに使うだけなら、普段はインスタンスを削除して維持費を低くすることもできる。スナップショットを保持すると課金されるが、インスタンスを維持するよりはかなり安くなる。偶にSoftEtherを使うだけなら、スナップショットなしに毎回ゼロからインスタンスを作っても1時間かからないだろう。

サブドメイン[edit]

DNS[edit]

短縮URL[edit]

長いURLの代わりに短縮URLを使うとき,意味不明の文字列なので短くしたのになお記憶困難だったり,手打ちするには全然向かなかったりすることがある。リンクをクリックする用法のみ想定すればよいなら,意味不明の文字列でもよいが,それでは済まないこともある。自前サーバーがあればもっとスマートに短縮URLを用意できる。サブドメインとmod_rewriteを使えばよい。サブドメインを使わずにディレクトリで表現してもよいが,どちらがより他人に伝えやすいか,自分が覚えやすいか次第だ。

httpd[edit]

異常対応[edit]

仕様[edit]

IPv6[edit]

ウェブを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アドレス」[edit]

外部から見える自分の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との大きな変化であり新鮮だ。

Require hostがエラーを吐く[edit]

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>

なぜIPv4?[edit]

アクセスログのビューワー[edit]

アクセスログを分析するツールは色々あるが、単に直近のログを、時系列のまま、可読性を高めた形でさっと目を通したいだけの方が多い。URLエンコードを解除したり、(逆引きしていないのであれば)逆引きしたり、表示項目は数項目だけにして、ブラウザでテーブルの形式で見る簡単なビューワー。CGI。

apachelogviwer.jpg

メモ[edit]

mod_rewrite[edit]

.htaccessで[edit]

例えば、http://hoge.com/work/におけるworkディレクトリ内の.htaccessで設定する場合、

RewriteRule ^/work/ /work2/
や
RewriteRule ^/work/(.*)$ /work2/$1

はworkしない。(.*の有無は関係ない。上記のような記述は、rewriteの最も基本的な用例として普通紹介されているが、それがworkしない。)次が正しい。

RewriteRule .* /work2/
や
RewriteRule ^(.*)$ /work2/$1

DocumentRootを複数持ちたい[edit]

URIに応じて、事実上、複数のDocumentRootを持つことができる。(事実上の条件的変更、割り振り。)

サブ的なURIに対してAliasディレクティブを使う。mod_alias - Apache HTTP サーバ バージョン 2.4

使用例

Apache 2.4[edit]

PHP[edit]

Windows[edit]

ssh[edit]

yum updateの結果、sshできなくなった。/usr/lib/firewalld/services/ssh.xmlの値が初期値に戻っていた。CentOS 7.5.1804。2018年10月 5日

自宅サーバーの新たな効用[edit]

NET/自宅LAN/VPN

メモ[edit]


添付ファイル: fileapachelogviwer.jpg 602件 [詳細]

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