ページ「「OPEN IPv6 ダイナミック DNS for フレッツ・光ネクスト」の利用/ArchLinux」と「Sudoのインストール」の間の差分

提供: とある社畜の頭脳整理
(ページ間の差分)
ナビゲーションに移動 検索に移動
 
 
1行目: 1行目:
「外部からSSH接続したい」でも「IPアドレスが半固定」しかも「IPv6プラス」ってなると、なかなかIPv6に対応したDDNS(ダイナミックドメインネームサーバー)が見つからないです。<br/>今のところメジャーなのが「[https://i.open.ad.jp/ OPEN IPv6 ダイナミック DNS for フレッツ・光ネクスト]」みたいなので、これを利用して外部から接続できるようにしてみたいと思います。
+
= インストール =
 +
最新かと合わせて以下のコマンドを実行します。
 +
<syntaxhighlight lang="bash">pacman -Syu
 +
pacman -S sudo</syntaxhighlight>
  
== 現在のIPv6アドレスの確認 ==
+
= sudoを使用できるユーザーを指定する =
外部に公開したいサーバーのIPv6アドレスを調べます。<br/>googleで調べると「ifconfigで調べる」というのがたくさんヒットしますが、Debian9.9では「ifconfig」が非推奨になってしまったので、代わりに「ip」で調べます。(Raspbianは「ifconfig」で調べられます)
+
visudoで「/etc/sudoers」ファイルを編集します。<br/>
<syntaxhighlight lang="bash">ip a</syntaxhighlight>
+
以下の様に追加すれば「root」と同じ権限で実行できるようになります。
で、以下のような結果が得られるかと思います。
 
<syntaxhighlight lang="text">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]]
+
<syntaxhighlight lang="bash">visudo /etc/sudoers</syntaxhighlight>
  
* ホスト名:任意のホスト名を入力します
 
* 初期IPv6アドレス(オプション):前段で取得したIPv6アドレスを入力します
 
* メールアドレス:ホストキー(後述します)紛失時に使用します。(登録しておいたほうが安全です)
 
  
入力し終わったら「作成」ボタンをクリックします。<br/>「新しい DDNS ホスト 「example.i.open.ad.jp」 の作成が完了しました。」と表示されればOKです。<br/>「OK」ボタンをクリックします。
+
追記前
 +
<syntaxhighlight lang="text">##
 +
## User privilege specification
 +
##
 +
root ALL=(ALL) ALL</syntaxhighlight>
  
すると以下の様な一覧が表示されます。(横長ではみ出てますwww)<br/>
+
追記後
[[ファイル:Ddns-setting-002.png]]<br/>
+
<syntaxhighlight lang="text" highlight="5">##
* ホスト名(FQDN):IPアドレスの代わりに使うホスト名になります
+
## User privilege specification
* IPv6アドレス:上の画像では「::1」と表示されてしまっていますが、実際は現在のIPv6アドレスが表示されます
+
##
* ホストキー情報:ホストキーと合わせて、更新用の「ホスト名」「アドレス」「URL」が表示されています
+
root ALL=(ALL) ALL
* 登録メールアドレス:登録時に入力したメールアドレスが表示されています
+
[myuser] ALL=(ALL) ALL</syntaxhighlight>
* クエリ回数~操作:省略
+
([myuser]は自分のユーザーIDに置き換えてください)
  
ちなみに、登録したWEBブラウザで「[https://i.open.ad.jp/ OPEN IPv6 ダイナミック DNS for フレッツ・光ネクスト]」を開くと登録したホスト一覧が表示されるのですが、別のWEBブラウザで開くとホスト一覧が表示されません…。<br/>そんなときは、「過去に作成した DDNS ホストをリストに追加」機能を利用して、表示させたい「ホストキー」を入力するとこで表示できるようになります。
+
= sudoにプロキシ設定を引き継ぐ =
 +
sudoしたら外部にアクセスできなくなったとかあるかと思います。<br/>
 +
sudoにプロキシ設定が引き継がれないために、外部にアクセスできなくなっています。<br/>
 +
なので、プロキシ設定を引き継ぐ設定をします。
  
また、その下の更新用「ホスト名」「アドレス」「URL」ですが、公開したいサーバーのIPv6アドレスが変わってしまったときに、公開したいサーバーから「ホスト名」「アドレス」にpingや「URL」にアクセスするとIPv6アドレスが最新の情報に更新されます。<br/>(ルーターからやっちゃダメですよ…ルーターのIPv6アドレスに書き換わっちゃうので…私はしばらくルーターからやってましたwww)
+
ファイルを開く
 +
<syntaxhighlight lang="bash">visudo /etc/sudoers</syntaxhighlight>
  
登録は以上です。
+
ファイルの最後に以下を追記します。
 
+
<syntaxhighlight lang="bash">Defaults env_keep += "http_proxy https_proxy ftp_proxy HTTP_PROXY HTTPS_PROXY FTP_PROXY"</syntaxhighlight>
== 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="text">[Unit]
 
Description=ddns ipv6 update
 
 
 
[Service]
 
Type=simple
 
ExecStart=/bin/ping -c 1 [更新用IPv6アドレス]</syntaxhighlight>
 
[更新用IPv6アドレス]は先程の一覧の「更新用アドレス」に置き換えてください。<br/>上記の一覧の例を反映すると…
 
<syntaxhighlight lang="text">[Unit]
 
Description=ddns ipv6 update
 
 
 
[Service]
 
Type=simple
 
ExecStart=/bin/ping -c 1 2409:11:c0e0:468:6b16:a7eb:503e:c23b</syntaxhighlight>
 
となります。
 
 
 
「-c 1」は1回実行という意味です。<br/>「Description」は好きな内容に変更しても大丈夫です。
 
 
 
次にこれを一定間隔で起動するタイマーを作成します。<br/>以下のコマンドを入力してください。
 
<syntaxhighlight lang="bash">sudo nano /etc/systemd/system/ddns-update.timer</syntaxhighlight>
 
これも新規作成です。<br/>
 
内容は以下の様にします。
 
<syntaxhighlight lang="text">[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」は好きな内容に変更しても大丈夫です。
 
 
 
準備ができたので、動かしてみます。<br/>動かすときは以下のコマンドを実行します。
 
<syntaxhighlight lang="bash">sudo systemctl start ddns-update.timer</syntaxhighlight>
 
エラーが出なければOKです。<br/>エラーが出たときは内容を確認してください。<br/>内容が合っているのにエラーになるときは…「nano」上で改行をし直してみてください。<br/>(私は改行コードの違いでエラーが出ていることに気づくまで、結構時間がかかってしまいました)
 
 
 
正常に動いたなら、今度は起動時に動くようにします。<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」ファイルを探しに行きます。
 
 
 
== ルーターの設定 ==
 
「[[「OPEN IPv6 ダイナミック DNS for フレッツ・光ネクスト」の利用/ArchLinux#ルーターの設定 | PiVPNによるOpenVPNのインストール#ルーターの設定]]」に書いているので、そちらを参照してください。<br/>
 
sshのデフォルトポートを開放したいなら22番ポートを開放してください(22番ポートを開放するのは危険だと思いますが…)
 
  
 
= 参考サイト =
 
= 参考サイト =
[https://i.open.ad.jp/ OPEN IPv6 ダイナミック DNS for フレッツ・光ネクスト]
+
[https://wiki.archlinux.jp/index.php/%E3%83%97%E3%83%AD%E3%82%AD%E3%82%B7%E8%A8%AD%E5%AE%9A#sudo_.E3.81.A7.E3.82.82.E3.83.97.E3.83.AD.E3.82.AD.E3.82.B7.E3.82.92.E4.BD.BF.E3.81.86 プロキシ設定 - ArchWiki]<br/>
  
 
[[Category:ArchLinux]]
 
[[Category:ArchLinux]]
[[Category:DDNS]]
+
[[Category:ssh]]
 +
{{DISPLAYTITLE:sudoのインストール}}

2019年7月26日 (金) 05:35時点における版

インストール

最新かと合わせて以下のコマンドを実行します。

pacman -Syu
pacman -S sudo

sudoを使用できるユーザーを指定する

visudoで「/etc/sudoers」ファイルを編集します。
以下の様に追加すれば「root」と同じ権限で実行できるようになります。

ファイルを開く

visudo /etc/sudoers


追記前

##
## User privilege specification
##
root ALL=(ALL) ALL

追記後

##
## User privilege specification
##
root ALL=(ALL) ALL
[myuser] ALL=(ALL) ALL

([myuser]は自分のユーザーIDに置き換えてください)

sudoにプロキシ設定を引き継ぐ

sudoしたら外部にアクセスできなくなったとかあるかと思います。
sudoにプロキシ設定が引き継がれないために、外部にアクセスできなくなっています。
なので、プロキシ設定を引き継ぐ設定をします。

ファイルを開く

visudo /etc/sudoers

ファイルの最後に以下を追記します。

Defaults env_keep += "http_proxy https_proxy ftp_proxy HTTP_PROXY HTTPS_PROXY FTP_PROXY"

参考サイト

プロキシ設定 - ArchWiki