rsyncによるディレクトリ同期を行う際、並列実行により高速化する手法


rsyncを高速化するために、分散して実行することにした。

全部を1つのスクリプトとしてもいいのだが、デバグがしやすいように分割して作業を行えるようにしている。

また、下記の記述はLinuxの/usrをコピーすることを想定している。環境に応じて書き換えること。

まず、/usr/xxx以下にあるファイルまでをコピーするために以下を実行する。

# rsync --archive -v --exclude="*/*/" /usr/ /mnt/vol/voltest

このexcludeオプションをつけている場合、「/usr/xxx/yyy」のファイルとシンボリックリンクはコピーされる。しかし「/usr/xxx/zzz/」のディレクトリはコピーされない。

次に、「/usr/xxx/zzz/」のディレクトリ一覧を取得する。

# find /usr -mindepth 2 -maxdepth 2 -type d -print

このディレクトリ一覧を下記のperlスクリプトに食わせる。(下記スクリプトは” find /usr -mindepth 2 -maxdepth 2 -type d -print > list.txt”で取得したlist.txtを使う想定)

#!/usr/bin/perl

use threads;
use Thread::Queue;

my $LOGDIR="/root/test";
my $MAXSESSION=5;

my $sourcepathbase="/usr";
my $destpathbase="/mnt/vol/voltest";

my $stream = Thread::Queue->new;

open(FILE,"list.txt");
while(my $tmp=<FILE>){
        $stream->enqueue("$tmp");

}
close(FILE);

sub SyncExecute{
        while(my $str = $stream->dequeue){
                # 改行削除
                $str =~ s/\n//ig;
                $str =~ s/\r//ig;
                # ログ出力用ファイル名
                my $filename=$str;
                $filename =~ s/\//-/ig;
                $filename =~ s/\.//ig;
                $filename =~ s/-$//ig;
                $filename =~ s/#//ig;
                $filename =~ s/^-//ig;
                $filename =~ s/ //ig;
                my $logfile="$LOGDIR/test-$filename.log";
                # rsync元と先の処理
                my $tmp,$st,$ed;
                my $sourcepath,$destpath;
                $tmp=substr($str,0,1);
                if($tmp eq "/"){
                        $sourcepath=$sourcepathbase.$str."/";
                        $destpath=$destpathbase.$str;
                }else{
                        $sourcepath=$sourcepathbase."/".$str."/";
                        $destpath=$destpathbase."/".$str;
                }
                `date >> $logfile`;
                print "rsync -v --archive $sourcepath $destpath >> $logfile 2>&1 \n";
                `rsync -v --archive $sourcepath $destpath >> $logfile 2>&1 `;
                `date >> $logfile`;
                #`sleep 5`;
        }
}


my @kids;
foreach(1..$MAXSESSION){
        my $kid = threads->new(\&SyncExecute,$stream);
        push(@kids,$kid);
        $stream->enqueue(undef);
}


print "wait\n";

foreach(@kids){
        my ($return) =$_ -> join;
}

このスクリプトは、rsyncの同時実行数5で、並列にrsyncを実行していくものになっている。

実行したサーバの負荷状況に応じて「my $MAXSESSION=5;」で設定している 同時実行数 を調整する。あまり大きくしすぎるとサーバからの応答が遅くなりすぎるのでほどほどに・・・


2020/03/10追記

上記で実行するrsyncコマンドはハードリンクの処理を行わないものとなっている。

このため、ハードリンクされているファイルがある場合、コピー先のファイルが1つではなく複数別個のものとしてコピーされる。

ハードリンクをそのままコピーしたい場合は「–hard-links」オプションを追加する必要があるのだが、ハードリンク処理の効力範囲は同一プロセス内で処理すること、という条件があるため、今回のような分割処理して高速化する、という場合には不適切となっている。

このため、ハードリンクファイルがある場合は、初回同期は分割処理で行い、2回目はディレクトリ全体を–hard-linksオプションをつけて1プロセスで処理してハードリンク処理を行わせる、という手法をとる必要がある。

なお、ハードリンク処理が完了したあと、分割処理の対象となった場合、すでにファイルが存在しているので再コピーされる、ということは発生しない。

mouseのLUV MACHINES mini LM-mini74B-W8を手に入れた


秋葉原のコンフルに行ったら、こんな感じで仕分け中のPCがあった。

画像

聞いて見ると、HDD500GBモデルは1700円、SSD32GBはもうちょっと高い値段(忘れた)というではないですか。

2.5インチHDD500GBってジャンク1000円以上なのに、そこにDDR3 SO-DIMM4GBにパソコン本体がついて1700円とはお買い得すぎじゃね?ということで1台購入。

買ったのはLUV MACHINES mini LM-mini74B-W8というモデル。

画像

電源はなかったが、東芝/富士通のノートパソコンでよく使われる19Vのものが使えた。うちではType-Cから20Vを取り出す変換アダプタで代用している。

何かの裏側に貼り付けて使っていたようで、マジックテープが貼られていた。(全部はられていたけど、貼り方に差異があった)

画像

ちなみに、このマジックテープがあるせいで、絨毯の上に置くと面倒なことになるので注意が必要です。

シールが貼ってありますし、Windows8がプレインストールだったんだろう、ということで、Windows10のインストールを実施してみたところ、Windows10 Homeエディションが自動的に選択されてインストールされました。

画像

使用したWindows10インストールディスクのベースが1803だったせいか、いくつかのデバイスが△マークつきでした。

画像

まぁ、△マークのデバイスについて手動でドライバの更新かけるとちゃんと認識されましたけどね。

画像

BluetoothとWiFi(RTL8723BE)もちゃんと動作しました。

試しにドラクエXベンチマークを動かしてみたところ、スコアはやや重いの2876でした。

画像

WiFiは2.4GHzまでしか対応していないようなので交換できるのか中を開けてみます。

画像

シリアルシールが貼られている4箇所のネジをはずして

画像

VGAコネクタの両脇のネジと、LANコネクタの横のネジをはずし

画像

徐々に上に押し上げていくと

画像

蓋が外れます。

画像
画像

メモリとディスクは取り外ししやすい場所にありますが、WiFi/Bluetoothについては裏面にあるようで見えません。

マザーボード上に「BDW-P1」という文字が見えるので検索してみるとGeekbenchのサイトに「MouseComputer/81Pro BDW-P1」というCore i3-5010U(2.10GHz)モデルのベンチマーク結果が出てきます。

今回手に入れたLM-mini74B-W8のCPUは「インテル® Celeron® プロセッサー 3205U 2M キャッシュ、1.50 GHz」、Geekbench上のモデルのCPUは「インテル® Core™ i3-5010U プロセッサー 3M キャッシュ、2.10 GHz」で、どちらもBroadwell世代なので、CPU以外は同じということでしょうね。(Intel公式のCPU機能比較表)

クロック1.5GHz→2.4GHz、CPUキャッシュ2MB→3MB、ハイパースレッドなし→あり、GPU機能のクロック100~800MHz→300~900MHz、拡張命令セットSSE4.1/4.2→SSE4.1/4.2,AVX2、AESなし→あり、VTx/VTdはどちらもあり

まぁ、速度を追わなければ問題なさそうですね

OpenWRT(GL.iNet GL-MV1000)でBIGLOBEのIPoE(MAP-E)に接続した


2021/05/20追記

1年運用しましたが、結局のところGL.iNet純正firmwareはモバイルルーターとして使う分にはいいが、常設ルーターとして使うには不適切な作りでした。

また、openWRTの機能だけを使おうとしても、firmware 3.102でかなり不適切な状況にされてしまいました。

このため、素のopenWRTで使うしかなくなったのですがopenWRTの「GL.iNet GL-MV1000 (Brume)」ではopenWRT 19.07.7でサポートしたように書いてありますが https://downloads.openwrt.org/releases/19.07.7/targets/mvebu/cortexa53/ にはなく snapshotディレクトリだしと不安感しか感じないので選択肢から外れました

結局のところNanoPi R2SにopenWRTをいれて使っています。

詳細は「NanoPi R2S+openWRT 21.02.0RCでBIGLOBEのMAP-E接続」を参照のこと。


いままでずっと自宅の回線がNTT東 Bフレッツマンションタイプだと思っていて、実際BIGLOBE側の契約管理画面でもそう表示されていたんだけど、NTT東でBフレッツマンションタイプは自動的にフレッツ光ネクストマンションタイプに移行させられていたということが判明。

そんなわけで「Biglobe IPv6接続(IPoE方式)」が使える様になったみたいなのでチャレンジ。

既にIPv6オプションは設定済みだったのでIPv6網への接続は完了している。BIGLOBE側の契約追加は必要なさそうなので、OpenWRT側の設定を実施。

まず、先行事例として参考になった記述は下記2つ。

OpenWrtでv6プラス (MAP-E) での IPv6 / IPv4 接続と、IPv4 PPPoEでのサーバー公開を両立する
OpenWrtでv6プラス(MAP-E)接続する手順

また、BIGLOBEで使われる DMR サーバのIPv6アドレスについては「biglobeのIPv4 over IPv6でハマった話 (RTX830)」に書かれている「https://api.enabler.ne.jp/6a4a89a8639b7546793041643f5da608/get_rules?callback=v6plus」で取得出来るJSONデータ内の「dmr」の値を参照した。(2404:9200:225:100::64だった)

まぁ、So-net事例と同じ値でしたけどね。

/lib/netifd/proto/map.shを編集して「# export LEGACY=1 」のコメントを外す必要あるし、ルーター再起動しないと駄目だったし、接続すると「MAP rule is invalid」で接続するとエラーになったのでwan6(IPv6)のAdvance Settingsの「Custom delegated IPv6-prefix」に値を設定しました。

「option encaplimit ‘ignore’」をつけないとRXがカウントされていない、という話については、現象は起こっていないので未設定です。

ニチバンのサイトにアクセスするとちゃんと表示されない問題はこちらでも発生中です。


2020/01/26追記

showroom-live.com で配信を見てると頻繁に接続できなくなる事態が発生。現状のshowroom-liveは映像配信についてはIPv6対応だが、ユーザアバターなどはIPv4のみという状況。これはもしや同時セッション数の問題?

OpenWrtでv6プラス(MAP-E)接続する手順」の「SNATを240ポート使えるように調整」(および元ネタの「 OpenWrt map-e (JPNE v6plus) において、割当ポート240個をちゃんと使わせるための設定 」)を実施。

すると期待通りに動作するようになった。

ニチバンのWebについてもスムーズに開けるようになった。

しかし、同時にアクセスするタブを増やしていったところアクセス障害が発生。どうやら240ポートを使い切ると発生している模様。ここらへんのポート利用のタイミング調整がどこになるのかがよく分からない・・・


2020/02/01追記

Nintendo SwitchとWiiUで対戦ゲームがプレイできないというクレームが・・・

調べたらMAP-E非対応だそうで。(NATタイプC判定)

かといってIPv4 PPPoEに戻すのはなーと考えた結果、VDSLモデムの次にスイッチングハブを入れて2つのルータを繋ぐことにして対応しました。


2020/06/01追記

GL-MV1000のfirmwareがバージョンアップしたので適用したところ

その1:map-eパッケージが削除されたのでMAP-Eで接続されなくなった(パッケージを再インストールする、という選択肢を選んだのに!)

その2:map-eパッケージを再インストールするとmap.shが再作成されるので、map.shへの修正を再度実施する必要がある

その3:SNATを240ポート設定も吹っ飛んだ

という事象が発生した。要注意。map-eパッケージをダウンロードするためにはIPv4 PPPoE接続をする必要があるので面倒だった。

上記で参照しているサイトが消えてもいいように重要な点を下記に記載。

map.shへの修正内容

まず、「# export LEGACY=1」のコメントを削除して「export LEGACY=1」とした後に下記の修正を追加

#$ diff -c /lib/netifd/proto/map.sh.orig /lib/netifd/proto/map.sh

*** /lib/netifd/proto/map.sh.orig	2017-05-30 02:45:19.000000000 +0900
--- /lib/netifd/proto/map.sh	2017-05-30 02:45:18.000000000 +0900
***************
*** 135,140 ****
--- 135,141 ----
  	      json_add_string snat_ip $(eval "echo \$RULE_${k}_IPV4ADDR")
  	    json_close_object
  	  else
+     	local mark=10
  	    for portset in $(eval "echo \$RULE_${k}_PORTSETS"); do
                for proto in icmp tcp udp; do
  	        json_add_object ""
***************
*** 142,152 ****
--- 143,155 ----
  	          json_add_string target SNAT
  	          json_add_string family inet
  	          json_add_string proto "$proto"
+ 	          json_add_string mark "$mark"
                    json_add_boolean connlimit_ports 1
                    json_add_string snat_ip $(eval "echo \$RULE_${k}_IPV4ADDR")
                    json_add_string snat_port "$portset"
  	                json_close_object
              done
+             mark=`expr $mark + 1`
  	    done
  	  fi
  	  if [ "$type" = "map-t" ]; then

firewall設定

Firewall – Custom Rulesとして以下を追加

iptables -t nat -A PREROUTING -m statistic --mode nth --every 15 --packet  0 -j MARK --set-mark 10
iptables -t nat -A PREROUTING -m statistic --mode nth --every 15 --packet  1 -j MARK --set-mark 11
iptables -t nat -A PREROUTING -m statistic --mode nth --every 15 --packet  2 -j MARK --set-mark 12
iptables -t nat -A PREROUTING -m statistic --mode nth --every 15 --packet  3 -j MARK --set-mark 13
iptables -t nat -A PREROUTING -m statistic --mode nth --every 15 --packet  4 -j MARK --set-mark 14
iptables -t nat -A PREROUTING -m statistic --mode nth --every 15 --packet  5 -j MARK --set-mark 15
iptables -t nat -A PREROUTING -m statistic --mode nth --every 15 --packet  6 -j MARK --set-mark 16
iptables -t nat -A PREROUTING -m statistic --mode nth --every 15 --packet  7 -j MARK --set-mark 17
iptables -t nat -A PREROUTING -m statistic --mode nth --every 15 --packet  8 -j MARK --set-mark 18
iptables -t nat -A PREROUTING -m statistic --mode nth --every 15 --packet  9 -j MARK --set-mark 19
iptables -t nat -A PREROUTING -m statistic --mode nth --every 15 --packet 10 -j MARK --set-mark 20
iptables -t nat -A PREROUTING -m statistic --mode nth --every 15 --packet 11 -j MARK --set-mark 21
iptables -t nat -A PREROUTING -m statistic --mode nth --every 15 --packet 12 -j MARK --set-mark 22
iptables -t nat -A PREROUTING -m statistic --mode nth --every 15 --packet 13 -j MARK --set-mark 23
iptables -t nat -A PREROUTING -m statistic --mode nth --every 15 --packet 14 -j MARK --set-mark 24

iptables -t nat -A OUTPUT -m statistic --mode nth --every 15 --packet  0 -j MARK --set-mark 10
iptables -t nat -A OUTPUT -m statistic --mode nth --every 15 --packet  1 -j MARK --set-mark 11
iptables -t nat -A OUTPUT -m statistic --mode nth --every 15 --packet  2 -j MARK --set-mark 12
iptables -t nat -A OUTPUT -m statistic --mode nth --every 15 --packet  3 -j MARK --set-mark 13
iptables -t nat -A OUTPUT -m statistic --mode nth --every 15 --packet  4 -j MARK --set-mark 14
iptables -t nat -A OUTPUT -m statistic --mode nth --every 15 --packet  5 -j MARK --set-mark 15
iptables -t nat -A OUTPUT -m statistic --mode nth --every 15 --packet  6 -j MARK --set-mark 16
iptables -t nat -A OUTPUT -m statistic --mode nth --every 15 --packet  7 -j MARK --set-mark 17
iptables -t nat -A OUTPUT -m statistic --mode nth --every 15 --packet  8 -j MARK --set-mark 18
iptables -t nat -A OUTPUT -m statistic --mode nth --every 15 --packet  9 -j MARK --set-mark 19
iptables -t nat -A OUTPUT -m statistic --mode nth --every 15 --packet 10 -j MARK --set-mark 20
iptables -t nat -A OUTPUT -m statistic --mode nth --every 15 --packet 11 -j MARK --set-mark 21
iptables -t nat -A OUTPUT -m statistic --mode nth --every 15 --packet 12 -j MARK --set-mark 22
iptables -t nat -A OUTPUT -m statistic --mode nth --every 15 --packet 13 -j MARK --set-mark 23
iptables -t nat -A OUTPUT -m statistic --mode nth --every 15 --packet 14 -j MARK --set-mark 24

2020/09/25追記

2020年8月リリースのfirmware 3.104では「Disabled ipv6」というとんでもないアップデートが…そう、IPv6通信が使えなくなりました。

GL製の管理GUI上の問題かと思ったら、全体的に使用不可にされていました。

GL-MV1000以外のページのリリースノートを見てみると「Disabled ipv6 function by default due to leak problem.」とメモリリークしてるのでデフォルト無効にしてる、と書いてあるんですが、GL-MV1000の場合どうやったら有効化できるのかわかりませんでしたし、リリースノートにも「Disabled ipv6」としか書いてないので本当に使えないのでしょう…

GLには1月に日本語訳を送ったりしているのですが、部分的に採用されたりするものの無視して中国人的日本語訳を続けているところもあったりで、ほんと、どうにもならんです・・・

GL-MV1000も退役検討中です。


2020/11/13 追記

OpenWrt map-e (JPNE v6plus) において、割当ポート240個をちゃんと使わせるための設定。」のコメントに、この設定 firewall3の設定ファイル解釈バグで修正されたやつを使えば 標準のmap.shで問題ないけど、修正されていないfirewall3の場合はmap.shの「json_add_boolean connlimit_ports 1」を「json_add_boolean connlimit_ports “1”」と書き換えればOK、という書き込みが。

そこでやってみたところ、確かにshowroom-liveでの問題がなくなった

ただ、「iptables -t nat -L -v」でポートの使用状況を確認すると、最初の3つしか使ってないという・・・なので、両方使っている。


2020/12/17 追記

v3.105がリリースされたのでアップデートしてみましたが、相変わらずIPv6が使えません。

なので、v3.102に戻して使用中です。


2021/05/16追記

v3.102ではIPv6が有効化されたものの、詳細設定可能なluciがインストールされていない状態となり、またGL.iNET UI側でIPv6設定を有効にしたあとにluci側で操作する必要があるなど、とてつもなく面倒な事態になりました。

このため、NanoPi R2S+openWRT 21.02.0RCでBIGLOBEのMAP-E接続 に切り替えました。

RD TC66Cのfirmwareをアップデート


うちにはUSB Type-Cの電圧電流計RD TC66Cが2種類ある。

そういや、新しいfirmwareがあるのかな?とRuiDengUSBMeterを起動してみると下記の様なダイアログが表示された。

[Download URL]
http://www.ruidengkeji.com/rdupdate/software/RuiDengUSBMeter/RuidengUSBMeter_V1.0.0.6.rar

2019.12.06 Version Number:V1.0.0.6
1.Change the software to installation free
2.Fix the bug of exporting data to excel

2019.12.06 版本号:V1.0.0.6

1.软件改为免安装使用

2.修复数据导出到Excel异常bug

あたらしいRuiDengUSBMeterソフトウェアが出たようなので「http://www.ruidengkeji.com/rdupdate/software/RuiDengUSBMeter/RuidengUSBMeter_V1.0.0.6.rar」からダウンロードして起動。

1111セールで買ったTC66はv1.14と最新だった。

以前からあるやつはv1.12と古い。

まず、TC66を1回外してから書き換えモードにする必要があります。

書き換えモードにしたあとRuiDengUSBMeterのFirmware Updateから「Update now」を実行

無事v1.14にアップデートされました。

ちなみに書き換えモードにしないでUpdate nowすると、下記の様なエラーとなります。

GL.iNet GL-MV1000でDynamic DNSが動かない


GL.iNet GL-MV1000のlcuiの方でdyn.comのDynamic DNSを設定したのだが、再起動時に自動実行してくれない。

設定画面としては下記の様になっている。

Enabledにチェックが入っているので、自動起動してもよさそうなのだがしていない。

とりあえず起動の仕組みをさぐるため、ルータにrootでログイン。

とりあえず「/etc/init.d」にはどんなファイルがあるのか確認してみると「ddns」というソレっぽいファイルが。

root@GL-MV1000:~# ls /etc/init.d
boot              firewall          gl_s2s            initswitch        openvpn           sysctl            usbmode
bootcount         firewall_gl       gl_tertf          led               qosswitch         sysfixtime        vpn-service
clear_flag        gl_fixdomain      gl_udp_server     lighttpd          relayd            sysntpd           wireguard
cron              gl_init           glcrond           log               rpcd              system            wireguard_server
ddns              gl_monitor        glfw              modem-init        samba             ucitrack
dnsmasq           gl_mqtt           glqos             mwan3             smstools3         uhttpd
done              gl_mv1000         gpio_switch       network           startvpn          umount
dropbear          gl_route_policy   haveged           odhcpd            stubby            urandom_seed
root@GL-MV1000:~#

/etc/rc.dには「S95ddns」と「K10ddns」(どちらも/etc/init.d/ddnsへのシンボリックリンク)

root@GL-MV1000:~# ls /etc/rc.d
K10ddns              S00sysfixtime        S19dnsmasq           S50glfw              S95ddns              S99lighttpd
K10gpio_switch       S10boot              S19dropbear          S50stubby            S95done              S99startvpn
K50dropbear          S10gl_mv1000         S19firewall          S60samba             S96led               S99urandom_seed
K51stubby            S10system            S19mwan3             S70modem-init        S98sysntpd           S99wireguard
K85odhcpd            S11sysctl            S20network           S80gl_tertf          S99bootcount         S99wireguard_server
K89log               S12log               S20usbmode           S80relayd            S99gl_monitor
K90network           S12rpcd              S21initswitch        S80ucitrack          S99gl_mqtt
K90sysfixtime        S13haveged           S35odhcpd            S90vpn-service       S99gl_route_policy
K98boot              S15gl_fixdomain      S50cron              S94gpio_switch       S99gl_s2s
K99umount            S18firewall_gl       S50glcrond           S94smstools3         S99gl_udp_server
root@GL-MV1000:~#

すでに/etc/rc.d/S95ddnsがあるので起動時から動作していても良さそうなのにしていない、ということはスクリプトの中で何らかの処理を行っているはず、ということで中身を確認。

root@GL-MV1000:~# cat /etc/init.d/ddns
#!/bin/sh /etc/rc.common
START=95
STOP=10
boot() {
return 0
}
reload() {
/usr/lib/ddns/dynamic_dns_updater.sh -- reload
return 0
}
restart() {
/usr/lib/ddns/dynamic_dns_updater.sh -- stop
sleep 1
enable=`uci -q get ddns.glddns.enabled`
if [ "$enable" = 1 ];then
        /usr/lib/ddns/dynamic_dns_updater.sh -- start
fi
}
start() {
enable=`uci -q get ddns.glddns.enabled`
if [ "$enable" = 1 ];then
        /usr/lib/ddns/dynamic_dns_updater.sh -- start
fi
}
stop() {
/usr/lib/ddns/dynamic_dns_updater.sh -- stop
return 0
}
root@GL-MV1000:~#

「start()」で「uci -q get ddns.glddns.enabled」の値を確認している。

root@GL-MV1000:~# uci -q get ddns.glddns.enabled
root@GL-MV1000:~#

現状は値が設定されていないため、起動していないようだ。

uciのパラメータを全部確認する場合は「uci -q show」で確認できるので、「uci -q show|grep dns.」を実行してみた。

root@GL-MV1000:~# uci -q show|grep dns.
ddns.global=ddns
ddns.global.ddns_dateformat='%F %R'
ddns.global.ddns_loglines='250'
ddns.global.upd_privateip='0'
ddns.myddns_ipv4=service
ddns.myddns_ipv4.lookup_host='yourhost.example.com'
ddns.myddns_ipv4.domain='yourhost.example.com'
ddns.myddns_ipv4.username='your_username'
ddns.myddns_ipv4.password='your_password'
ddns.myddns_ipv4.interface='wan'
ddns.myddns_ipv4.ip_source='network'
ddns.myddns_ipv4.ip_network='wan'
ddns.myddns_ipv4.service_name='dyn.com'
ddns.myddns_ipv4.enabled='0'
ddns.myddns_ipv6=service
ddns.myddns_ipv6.update_url='http://[USERNAME]:[PASSWORD]@your.provider.net/nic/update?hostname=[DOMAIN]&myip=[IP]'
ddns.myddns_ipv6.lookup_host='yourhost.example.com'
ddns.myddns_ipv6.domain='yourhost.example.com'
ddns.myddns_ipv6.username='your_username'
ddns.myddns_ipv6.password='your_password'
ddns.myddns_ipv6.use_ipv6='1'
ddns.myddns_ipv6.interface='wan6'
ddns.myddns_ipv6.ip_source='network'
ddns.myddns_ipv6.ip_network='wan6'
ddns.myddns_ipv6.enabled='0'
ddns.osakana=service
ddns.osakana.enabled='1'
ddns.osakana.lookup_host='********************'
ddns.osakana.service_name='dyn.com'
ddns.osakana.domain='********************'
ddns.osakana.username='********************'
ddns.osakana.password='********************'
dhcp.@dnsmasq[0]=dnsmasq
dhcp.@dnsmasq[0].domainneeded='1'
dhcp.@dnsmasq[0].boguspriv='1'
dhcp.@dnsmasq[0].filterwin2k='0'
dhcp.@dnsmasq[0].localise_queries='1'
dhcp.@dnsmasq[0].rebind_protection='1'
dhcp.@dnsmasq[0].rebind_localhost='1'
dhcp.@dnsmasq[0].local='/lan/'
dhcp.@dnsmasq[0].domain='lan'
dhcp.@dnsmasq[0].expandhosts='1'
dhcp.@dnsmasq[0].nonegcache='0'
dhcp.@dnsmasq[0].authoritative='1'
dhcp.@dnsmasq[0].readethers='1'
dhcp.@dnsmasq[0].leasefile='/tmp/dhcp.leases'
dhcp.@dnsmasq[0].resolvfile='/tmp/resolv.conf.auto'
dhcp.@dnsmasq[0].nonwildcard='1'
dhcp.@dnsmasq[0].localservice='1'
glconfig.ddns=service
glconfig.ddns.enabled='0'
luci.diag.dns='openwrt.org'
ucitrack.@dhcp[0].init='dnsmasq'
root@GL-MV1000:~#

ん?

「glconfig.ddns.enabled=’0’」?

もしかして、GL.iNet Admin Panelの方にある???

[アプリケーション]-[リモートアクセス]に「ダイナミックDNS」がありました。

有効化をしてみます

これにより「uci -q show|grep dns.」に大きな変化が・・・

root@GL-MV1000:~# uci -q show|grep dns.
ddns.global=ddns
ddns.global.ddns_dateformat='%F %R'
ddns.global.ddns_loglines='250'
ddns.global.upd_privateip='0'
ddns.global.use_curl='1'
ddns.osakana=service
ddns.osakana.enabled='1'
ddns.osakana.lookup_host='*******************'
ddns.osakana.service_name='dyn.com'
ddns.osakana.domain='*******************'
ddns.osakana.username='*******************'
ddns.osakana.password='*******************'
ddns.glddns=service
ddns.glddns.interface='wan'
ddns.glddns.check_interval='10'
ddns.glddns.check_unit='minutes'
ddns.glddns.force_interval='60'
ddns.glddns.force_unit='minutes'
ddns.glddns.ip_url='http://checkip.dyndns.com'
ddns.glddns.ip_source='web'
ddns.glddns.password='*******************'
ddns.glddns.username='*******************'
ddns.glddns.domain='cx0f702.glddns.com'
ddns.glddns.param_enc='cx0f702'
ddns.glddns.lookup_host='cx0f702.glddns.com'
ddns.glddns.service_name='glddns.com'
ddns.glddns.update_url='http://[USERNAME]:[PASSWORD]@ddns.glddns.com/nic/update?hostname=[PARAMENC]&myip=[IP]'
ddns.glddns.enabled='1'
dhcp.@dnsmasq[0]=dnsmasq
dhcp.@dnsmasq[0].domainneeded='1'
dhcp.@dnsmasq[0].boguspriv='1'
dhcp.@dnsmasq[0].filterwin2k='0'
dhcp.@dnsmasq[0].localise_queries='1'
dhcp.@dnsmasq[0].rebind_protection='1'
dhcp.@dnsmasq[0].rebind_localhost='1'
dhcp.@dnsmasq[0].local='/lan/'
dhcp.@dnsmasq[0].domain='lan'
dhcp.@dnsmasq[0].expandhosts='1'
dhcp.@dnsmasq[0].nonegcache='0'
dhcp.@dnsmasq[0].authoritative='1'
dhcp.@dnsmasq[0].readethers='1'
dhcp.@dnsmasq[0].leasefile='/tmp/dhcp.leases'
dhcp.@dnsmasq[0].resolvfile='/tmp/resolv.conf.auto'
dhcp.@dnsmasq[0].nonwildcard='1'
dhcp.@dnsmasq[0].localservice='1'
glconfig.ddns=service
glconfig.ddns.enabled='0'
glconfig.ddns.check_status='1'
glconfig.ddns.ddns_enabled='1'
glconfig.ddns.http_enabled='0'
glconfig.ddns.https_enabled='0'
glconfig.ddns.ssh_enabled='0'
luci.diag.dns='openwrt.org'
ucitrack.@dhcp[0].init='dnsmasq'
root@GL-MV1000:~#

そして、luciの方も無事Dynamic DNSが起動している状態となりました。

また、GL.iNetの提供するDynamic DNS(glddns)もあわせて有効になっています。