ページ「ReadyMedia(旧名 MiniDLNA) のインストール」と「「OPEN IPv6 ダイナミック DNS for フレッツ・光ネクスト」の利用/Debian9.9 or Raspbian Stretch」の間の差分
Rin-scrooge (トーク | 投稿記録) タグ: モバイルウェブ編集、モバイル編集 |
Rin-scrooge (トーク | 投稿記録) タグ: モバイルウェブ編集、モバイル編集 |
||
1行目: | 1行目: | ||
− | + | 「外部からSSH接続したい」でも「IPアドレスが半固定」しかも「IPv6プラス」ってなると、なかなかIPv6に対応したDDNS(ダイナミックドメインネームサーバー)が見つからないです。<br/>今のところメジャーなのが「[https://i.open.ad.jp/ OPEN IPv6 ダイナミック DNS for フレッツ・光ネクスト]」みたいなので、これを利用して外部から接続できるようにしてみたいと思います。 | |
− | |||
− | < | ||
− | = | + | == 現在のIPv6アドレスの確認 == |
− | + | 外部に公開したいサーバーのIPv6アドレスを調べます。<br/>googleで調べると「ifconfigで調べる」というのがたくさんヒットしますが、Debian9.9では「ifconfig」が非推奨になってしまったので、代わりに「ip」で調べます。(Raspbianは「ifconfig」で調べられます) | |
− | + | <syntaxhighlight lang="bash">ip a</syntaxhighlight> | |
− | + | で、以下のような結果が得られるかと思います。 | |
− | <syntaxhighlight lang="bash"> | + | <syntaxhighlight lang="bash">1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1 |
− | + | link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 | |
− | + | inet 127.0.0.1/8 scope host lo | |
− | + | valid_lft forever preferred_lft forever | |
− | + | inet6 ::1/128 scope host | |
+ | valid_lft forever preferred_lft forever | ||
+ | 2: enxAABBCCDDEEFF: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 | ||
+ | link/ether AA:BB:CC:DD:EE:FF brd ff:ff:ff:ff:ff:ff | ||
+ | inet 192.168.1.2/24 brd 192.168.1.255 scope global enxAABBCCDDEEFF | ||
+ | valid_lft forever preferred_lft forever | ||
+ | inet6 HHHH:IIII:JJJJ:KKKK:LLLL:MMMM:NNNN:OOOO/64 scope global noprefixroute dynamic | ||
+ | valid_lft 86398sec preferred_lft 14398sec | ||
+ | inet6 PPPP:QQQQ:RRRR:SSSS:TTTT:UUUU/64 scope link | ||
+ | valid_lft forever preferred_lft forever | ||
+ | </syntaxhighlight> | ||
+ | 「inet6」の「scope global」となっている「HHHH:IIII:JJJJ:KKKK:LLLL:MMMM:NNNN:OOOO」がグローバルIPv6アドレスとなります。<br/> | ||
+ | (セキュリティ的には危険ですが、試しにルーターの設定を「パススルーを許可する」にして、このアドレスにSSH接続してみると接続できるかと思います。もちろんアドレスが変わってしまえば接続できなくなりますが…) | ||
− | + | == 「OPEN IPv6 ダイナミック DNS for フレッツ・光ネクスト」に登録 == | |
− | < | + | 次に「OPEN IPv6 ダイナミック DNS for フレッツ・光ネクスト」に登録していきます。<br/>まずは「[https://i.open.ad.jp/ OPEN IPv6 ダイナミック DNS for フレッツ・光ネクスト]」にアクセスします。<br/>すると、画面下部に以下のような項目があるかと思いますので、入力していきます。<br/>[[ファイル:Ddns-setting-001.png | 400px]] |
− | |||
− | |||
− | |||
− | + | * ホスト名:任意のホスト名を入力します | |
− | + | * 初期IPv6アドレス(オプション):前段で取得したIPv6アドレスを入力します | |
− | + | * メールアドレス:ホストキー(後述します)紛失時に使用します。(登録しておいたほうが安全です) | |
− | + | 入力し終わったら「作成」ボタンをクリックします。<br/>「新しい DDNS ホスト 「example.i.open.ad.jp」 の作成が完了しました。」と表示されればOKです。<br/>「OK」ボタンをクリックします。 | |
− | |||
− | |||
− | < | ||
− | + | すると以下の様な一覧が表示されます。(横長ではみ出てますwww)<br/> | |
− | + | [[ファイル:Ddns-setting-002.png]]<br/> | |
− | < | + | * ホスト名(FQDN):IPアドレスの代わりに使うホスト名になります |
+ | * IPv6アドレス:上の画像では「::1」と表示されてしまっていますが、実際は現在のIPv6アドレスが表示されます | ||
+ | * ホストキー情報:ホストキーと合わせて、更新用の「ホスト名」「アドレス」「URL」が表示されています | ||
+ | * 登録メールアドレス:登録時に入力したメールアドレスが表示されています | ||
+ | * クエリ回数~操作:省略 | ||
− | + | ちなみに、登録したWEBブラウザで「[https://i.open.ad.jp/ OPEN IPv6 ダイナミック DNS for フレッツ・光ネクスト]」を開くと登録したホスト一覧が表示されるのですが、別のWEBブラウザで開くとホスト一覧が表示されません…。<br/>そんなときは、「過去に作成した DDNS ホストをリストに追加」機能を利用して、表示させたい「ホストキー」を入力するとこで表示できるようになります。 | |
− | |||
− | |||
− | + | また、その下の更新用「ホスト名」「アドレス」「URL」ですが、公開したいサーバーのIPv6アドレスが変わってしまったときに、公開したいサーバーから「ホスト名」「アドレス」にpingや「URL」にアクセスするとIPv6アドレスが最新の情報に更新されます。<br/>(ルーターからやっちゃダメですよ…ルーターのIPv6アドレスに書き換わっちゃうので…私はしばらくルーターからやってましたwww) | |
− | |||
− | |||
− | + | 登録は以上です。 | |
− | |||
− | |||
− | |||
− | |||
− | |||
+ | == systemdでIPv6の更新をする == | ||
+ | systemdを使用して、一定間隔で「アドレス」にpingをするようにしてみます。<br/>先ずは、公開したいサーバーにログインして、以下のコマンドを実行します。 | ||
+ | <syntaxhighlight lang="bash">sudo nano /etc/systemd/system/ddns-update.service</syntaxhighlight> | ||
+ | 新しくファイルを作成しているので、中身はなにもないはずです。<br/>ちなみに「/etc/systemd/system」ディレクトリは「systemd」で動かすサービスファイル置き場みたいです。<br/>つまり今回は「ddns-update」サービスを作成していきます。 | ||
− | + | 次にファイルの中身ですが、以下の様にします。 | |
− | + | <syntaxhighlight lang="bash">[Unit] | |
− | < | + | Description=ddns ipv6 update |
− | |||
− | |||
− | |||
+ | [Service] | ||
+ | Type=simple | ||
+ | ExecStart=/bin/ping6 -c 1 [更新用IPv6アドレス]</syntaxhighlight> | ||
+ | [更新用IPv6アドレス]は先程の一覧の「更新用アドレス」に置き換えてください。<br/>上記の一覧の例を反映すると… | ||
+ | <syntaxhighlight lang="bash">[Unit] | ||
+ | Description=ddns ipv6 update | ||
− | + | [Service] | |
− | + | Type=simple | |
− | + | ExecStart=/bin/ping6 -c 1 2409:11:c0e0:468:6b16:a7eb:503e:c23b</syntaxhighlight> | |
+ | となります。 | ||
+ | ちなみに「ping6」はIPv6用のpingコマンド、「-c 1」は1回実行という意味です。<br/>「Description」は好きな内容に変更しても大丈夫です。 | ||
− | + | 次にこれを一定間隔で起動するタイマーを作成します。<br/>以下のコマンドを入力してください。 | |
− | + | <syntaxhighlight lang="bash">sudo nano /etc/systemd/system/ddns-update.timer</syntaxhighlight> | |
− | <syntaxhighlight lang="bash"> | + | これも新規作成です。<br/> |
+ | 内容は以下の様にします。 | ||
+ | <syntaxhighlight lang="bash">[Unit] | ||
+ | Description=ddns ipv6 update timer | ||
+ | [Timer] | ||
+ | OnCalendar=*-*-* *:00:00 | ||
− | = | + | [Install] |
− | + | WantedBy=timers.target</syntaxhighlight> | |
− | + | 内容的には「ddns-update.serviceを毎時0分0秒に起動する」と言って感じです。<br/>「ddns-update.service」ファイルと同様に「Description」は好きな内容に変更しても大丈夫です。 | |
− | <syntaxhighlight lang="bash">sudo / | + | |
− | + | 準備ができたので、動かしてみます。<br/>動かすときは以下のコマンドを実行します。 | |
− | <syntaxhighlight lang="bash">sudo | + | <syntaxhighlight lang="bash">sudo systemctl start ddns-update.timer</syntaxhighlight> |
− | + | エラーが出なければOKです。<br/>エラーが出たときは内容を確認してください。<br/>内容が合っているのにエラーになるときは…「nano」上で改行をし直してみてください。<br/>(私は改行コードの違いでエラーが出ていることに気づくまで、結構時間がかかってしまいました) | |
− | <syntaxhighlight lang="bash">sudo / | + | |
+ | 正常に動いたなら、今度は起動時に動くようにします。<br/>以下のコマンドで起動時に動くようになります。 | ||
+ | <syntaxhighlight lang="bash">sudo systemctl enable ddns-update.timer</syntaxhighlight> | ||
+ | |||
+ | ちなみに、止めたいときは… | ||
+ | <syntaxhighlight lang="bash">sudo systemctl stop ddns-update.timer</syntaxhighlight> | ||
+ | |||
+ | 起動時に動かないようにするには… | ||
+ | <syntaxhighlight lang="bash">sudo systemctl disable ddns-update.timer</syntaxhighlight> | ||
+ | |||
+ | です。 | ||
+ | |||
+ | |||
+ | ここで少し疑問に思う人がいるかも知れません…<br/>「ddns-update.service」と「ddns-update.timer」と実行コマンドの「sudo systemctl start ddns-update」の3つを関連付ける設定をしていません。<br/>実は単純な話で、ファイル名だけで関連付いています。<br/>「ddns-update.service」と「ddns-update.timer」は「ddns-update」が同じになっています。<br/>これで「*.service」ファイルと「*.timer」ファイルはセットだと認識しています。<br/>また実行コマンドは「ddns-update.timer」と指定するだけで「*.service」ファイルを探しに行きます。 | ||
+ | |||
+ | == ルーターの設定 == | ||
+ | 「[[PiVPNによるOpenVPNのインストール#ルーターの設定]]」に書いているので、そちらを参照してください。<br/> | ||
+ | sshのデフォルトポートを開放したいなら22番ポートを開放してください(22番ポートを開放するのは危険だと思いますが…) | ||
= 参考サイト = | = 参考サイト = | ||
− | [ | + | [https://i.open.ad.jp/ OPEN IPv6 ダイナミック DNS for フレッツ・光ネクスト] |
− | |||
− | |||
[[Category:Debian]] | [[Category:Debian]] | ||
[[Category:Raspbian]] | [[Category:Raspbian]] | ||
[[Category:Raspberry Pi]] | [[Category:Raspberry Pi]] | ||
− | [[Category: | + | [[Category:DDNS]] |
2019年7月23日 (火) 05:55時点における版
「外部からSSH接続したい」でも「IPアドレスが半固定」しかも「IPv6プラス」ってなると、なかなかIPv6に対応したDDNS(ダイナミックドメインネームサーバー)が見つからないです。
今のところメジャーなのが「OPEN IPv6 ダイナミック DNS for フレッツ・光ネクスト」みたいなので、これを利用して外部から接続できるようにしてみたいと思います。
目次
現在のIPv6アドレスの確認
外部に公開したいサーバーのIPv6アドレスを調べます。
googleで調べると「ifconfigで調べる」というのがたくさんヒットしますが、Debian9.9では「ifconfig」が非推奨になってしまったので、代わりに「ip」で調べます。(Raspbianは「ifconfig」で調べられます)
ip a
で、以下のような結果が得られるかと思います。
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: enxAABBCCDDEEFF: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether AA:BB:CC:DD:EE:FF brd ff:ff:ff:ff:ff:ff
inet 192.168.1.2/24 brd 192.168.1.255 scope global enxAABBCCDDEEFF
valid_lft forever preferred_lft forever
inet6 HHHH:IIII:JJJJ:KKKK:LLLL:MMMM:NNNN:OOOO/64 scope global noprefixroute dynamic
valid_lft 86398sec preferred_lft 14398sec
inet6 PPPP:QQQQ:RRRR:SSSS:TTTT:UUUU/64 scope link
valid_lft forever preferred_lft forever
「inet6」の「scope global」となっている「HHHH:IIII:JJJJ:KKKK:LLLL:MMMM:NNNN:OOOO」がグローバルIPv6アドレスとなります。
(セキュリティ的には危険ですが、試しにルーターの設定を「パススルーを許可する」にして、このアドレスにSSH接続してみると接続できるかと思います。もちろんアドレスが変わってしまえば接続できなくなりますが…)
「OPEN IPv6 ダイナミック DNS for フレッツ・光ネクスト」に登録
次に「OPEN IPv6 ダイナミック DNS for フレッツ・光ネクスト」に登録していきます。
まずは「OPEN IPv6 ダイナミック DNS for フレッツ・光ネクスト」にアクセスします。
すると、画面下部に以下のような項目があるかと思いますので、入力していきます。
- ホスト名:任意のホスト名を入力します
- 初期IPv6アドレス(オプション):前段で取得したIPv6アドレスを入力します
- メールアドレス:ホストキー(後述します)紛失時に使用します。(登録しておいたほうが安全です)
入力し終わったら「作成」ボタンをクリックします。
「新しい DDNS ホスト 「example.i.open.ad.jp」 の作成が完了しました。」と表示されればOKです。
「OK」ボタンをクリックします。
すると以下の様な一覧が表示されます。(横長ではみ出てますwww)
- ホスト名(FQDN):IPアドレスの代わりに使うホスト名になります
- IPv6アドレス:上の画像では「::1」と表示されてしまっていますが、実際は現在のIPv6アドレスが表示されます
- ホストキー情報:ホストキーと合わせて、更新用の「ホスト名」「アドレス」「URL」が表示されています
- 登録メールアドレス:登録時に入力したメールアドレスが表示されています
- クエリ回数~操作:省略
ちなみに、登録したWEBブラウザで「OPEN IPv6 ダイナミック DNS for フレッツ・光ネクスト」を開くと登録したホスト一覧が表示されるのですが、別のWEBブラウザで開くとホスト一覧が表示されません…。
そんなときは、「過去に作成した DDNS ホストをリストに追加」機能を利用して、表示させたい「ホストキー」を入力するとこで表示できるようになります。
また、その下の更新用「ホスト名」「アドレス」「URL」ですが、公開したいサーバーのIPv6アドレスが変わってしまったときに、公開したいサーバーから「ホスト名」「アドレス」にpingや「URL」にアクセスするとIPv6アドレスが最新の情報に更新されます。
(ルーターからやっちゃダメですよ…ルーターのIPv6アドレスに書き換わっちゃうので…私はしばらくルーターからやってましたwww)
登録は以上です。
systemdでIPv6の更新をする
systemdを使用して、一定間隔で「アドレス」にpingをするようにしてみます。
先ずは、公開したいサーバーにログインして、以下のコマンドを実行します。
sudo nano /etc/systemd/system/ddns-update.service
新しくファイルを作成しているので、中身はなにもないはずです。
ちなみに「/etc/systemd/system」ディレクトリは「systemd」で動かすサービスファイル置き場みたいです。
つまり今回は「ddns-update」サービスを作成していきます。
次にファイルの中身ですが、以下の様にします。
[Unit]
Description=ddns ipv6 update
[Service]
Type=simple
ExecStart=/bin/ping6 -c 1 [更新用IPv6アドレス]
[更新用IPv6アドレス]は先程の一覧の「更新用アドレス」に置き換えてください。
上記の一覧の例を反映すると…
[Unit]
Description=ddns ipv6 update
[Service]
Type=simple
ExecStart=/bin/ping6 -c 1 2409:11:c0e0:468:6b16:a7eb:503e:c23b
となります。
ちなみに「ping6」はIPv6用のpingコマンド、「-c 1」は1回実行という意味です。
「Description」は好きな内容に変更しても大丈夫です。
次にこれを一定間隔で起動するタイマーを作成します。
以下のコマンドを入力してください。
sudo nano /etc/systemd/system/ddns-update.timer
これも新規作成です。
内容は以下の様にします。
[Unit]
Description=ddns ipv6 update timer
[Timer]
OnCalendar=*-*-* *:00:00
[Install]
WantedBy=timers.target
内容的には「ddns-update.serviceを毎時0分0秒に起動する」と言って感じです。
「ddns-update.service」ファイルと同様に「Description」は好きな内容に変更しても大丈夫です。
準備ができたので、動かしてみます。
動かすときは以下のコマンドを実行します。
sudo systemctl start ddns-update.timer
エラーが出なければOKです。
エラーが出たときは内容を確認してください。
内容が合っているのにエラーになるときは…「nano」上で改行をし直してみてください。
(私は改行コードの違いでエラーが出ていることに気づくまで、結構時間がかかってしまいました)
正常に動いたなら、今度は起動時に動くようにします。
以下のコマンドで起動時に動くようになります。
sudo systemctl enable ddns-update.timer
ちなみに、止めたいときは…
sudo systemctl stop ddns-update.timer
起動時に動かないようにするには…
sudo systemctl disable ddns-update.timer
です。
ここで少し疑問に思う人がいるかも知れません…
「ddns-update.service」と「ddns-update.timer」と実行コマンドの「sudo systemctl start ddns-update」の3つを関連付ける設定をしていません。
実は単純な話で、ファイル名だけで関連付いています。
「ddns-update.service」と「ddns-update.timer」は「ddns-update」が同じになっています。
これで「*.service」ファイルと「*.timer」ファイルはセットだと認識しています。
また実行コマンドは「ddns-update.timer」と指定するだけで「*.service」ファイルを探しに行きます。
ルーターの設定
「PiVPNによるOpenVPNのインストール#ルーターの設定」に書いているので、そちらを参照してください。
sshのデフォルトポートを開放したいなら22番ポートを開放してください(22番ポートを開放するのは危険だと思いますが…)