(远èš:2022/04/06)ãååãããã³ã ããééããã£ãéããæ°ã¯ã©ã€ã¢ã³ããžã®ç§»è¡åŸåäœãããã確èªããŸããããéä¿¡å 容ã«å€åã¯ç¡ãã¿ãããªã®ã§ããã®ãŸãŸäœ¿çšããããšãã§ããŸããWEBã®æ¹ãããæŽæ°ã§ããã®ãç¢ºèªæžã¿ã§ãã
pi@test$ date && ./onamae_ddns
2022幎 4æ 6æ¥ æ°Žææ¥ 19:30:17 JST
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 12 100 12 0 0 54 0 --:--:-- --:--:-- --:--:-- 54
depth=2 OU = GlobalSign Root CA - R3, O = GlobalSign, CN = GlobalSign
verify return:1
depth=1 C = BE, O = GlobalSign nv-sa, CN = GlobalSign GCC R3 DV TLS CA 2020
verify return:1
depth=0 CN = *.onamae.com
verify return:1
000 COMMAND SUCCESSFUL
.
000 COMMAND SUCCESSFUL
.
000 COMMAND SUCCESSFUL
.
000 COMMAND SUCCESSFUL
.
14.10.60.34(远èšãããŸã§)
webãµãŒããã¡ãŒã«ãµãŒããšãã£ããµãŒãã®éçšã«ã¯æ¬ ãããªãDDNSã®èšå®ã«ã€ããŠã§ããç§ãæ®æ®µäœ¿ã£ãŠãããã¡ã€ã³ã¯ãååãããã³ã ã§ç®¡çããŠãããã®ã§ãã
Linuxã§ã®éå ¬åŒãªæŽæ°ã¯ä»¥äžã®ãããªæ¹æ³ã§è¡ãããŠããŸãã
- éä¿¡ã¯ããã¹ãããŒã¹ã§ãã
- opensslãçšããŠæ¥ç¶
- æ¥ç¶åŸã¯éããã«ã³ãã³ããå ¥åããªããšæ¥ç¶ãåãããã®ã§é«éã«ïŒèªååãã¹ãïŒ
ãšããããã§èªååãèããŸãããã£ãšèª¿ã¹ããšãRubyãPythonã䜿ã£ãŠããã°ã©ã ãã¹ã¯ãªãããæžãããŠããæ¹ãå€ãã§ãããopensslã¯Linuxã«ããã©ã«ãã§å ¥ã£ãŠããã®ã§ã远å ã§å¿ èŠãªããã±ãŒãžããªãã®ããµãŒãçã«Goodã§ãããªã®ã§ãä»åã¯Cèšèªã§æžããŠæéããã€å°ãã§ãã»ãã¥ãªãã£ãèããŠå¹³æã®ãã¹ã¯ãŒããIDãªã©ãæ®ããªãããã«ããŠããŸããŸãã
ãŸããååãããã³ã ãéžãã çç±ãäºåã«è¡ãã¹ãèšå®ã¯ãã¡ãã®èšäºã«ãããŸãã
ç§ã®å Žåã¯Raspberry Piã§åäœãããããšãç®çãšããŠäœè£œããŸããããæ®éã®AMD64ã¢ãŒããã¯ãã£ã§ãåé¡ãªãåäœããŸããåºæ¬çã«ã¯Linuxãªãäœã§ã倧äžå€«ã ãšæããŸãã
å°ãã ãæããšããã
ãããå人çãªããšã§ãããpythonãrubyã¯ããŸã奜ã¿ã§ã¯ãªãããšãããC++ãšãã®ãã€ãã£ãã§åãããã®ã倧奜ããªã®ã§ãã¡ãã§å®è£ ããŠã¿ãŸãããããšã¯ARMç³»SBCã¯ãŸã ãŸã éåãªã®ã§æ¬åœã«å°ãã§ãæ©ãåãããããšããã®ããããŸãã
ããšãã¹ã¯ãªãããã®ãŸãŸçœ®ããŠãããšæãæ°ãããŸããäœãã®æåã«ãã®ãã¡ã€ã«ãèªã¿åãããããããšããããèŠãã ãã§IDãšãã¹ã¯ãŒããããã£ãŠããŸããŸããããç°¡åã«ä¹ã£åããŠããŸããŸããC++ã§1åã³ã³ãã€ã«ããã°ãã±ã£ãšèŠã§ããããªãã®ã§ãã»ãã¥ãªãã£çã«ããããããšæããŸããã
ãã¡ãããè§£æããããçµãããªãã§ããã©ãããããªããšãèšãåºããŠãããããããããŸããã
äœè«ããã£ãããããããã«ããŠäœ¿ãæ¹ã説æããŠãããŸãã
ç®æ¬¡
- ã¯ããã«
- onamae_ddnsã®ã€ã³ã¹ããŒã«
- äœ¿ãæ¹
- ã¢ã³ã€ã³ã¹ããŒã«
- å®ã£ãŠã»ããããš
- ãæèŠããèŠæ
ã¯ããã«
ãã®ãœãããŠã§ã¢ãå©çšãããéã¯ä»¥äžã®ãœãããŠã§ã¢å©çšèŠçŽå¿ ããèªã¿ãã ãããå©çšãããå Žåã¯ãœãããŠã§ã¢å©çšèŠçŽã«åæãéµå®ãããã®ãšã¿ãªããŸãã
ãŸãæ¬ãœãããŠã§ã¢ã¯ãäœ¿ãæ¹ãã«æºããªãäœ¿ãæ¹ãæ³å®ããŠãããŸããããäœ¿ãæ¹ãã®é ç®ã«èšãããŠããªã䜿çšã«ã€ããŸããŠã¯äžåèªããŸããã
onamae_ddnsã®ã€ã³ã¹ããŒã«
ãŸãåãã«ã¬ããžããªããcloneããŸããä»åã®ã¬ããžããªã¯ããã§ãã
https://github.com/T-H-Un/onamae_ddns
远èšïŒïŒ2020/10/3ïŒ gitã³ãã³ããå°å ¥ããŠããªãå Žåã¯wgetãçšããŠå°å ¥ããããšãå¯èœã§ãããã¡ãã®éšåã«æ¹æ³ãèšè¿°ããŠãããŸããå¥éè§£åã®ããã«unzipã®ããã±ãŒãžãå¿ èŠã§ãã
gitãçšããå Žå
å§ãã«ä»¥äžã®ã³ãã³ããå®è¡ããŸãã
git clone https://github.com/T-H-Un/onamae_ddns.gitãã®ããšãœãŒã¹ã³ãŒãã«å€æŽãå ããå¿ èŠãããã®ã§gitãçšããå Žåã¯ä»¥äžã®wgetãçšããã€ã³ã¹ããŒã«ã®é ãé£ã°ããŠãã ããã
wgetãçšããã€ã³ã¹ããŒã«
wgetãçšããå Žåã¯ä»¥äžã®ã³ãã³ããå®è¡ããŸãã
wget https://github.com/T-H-Un/onamae_ddns/archive/master.zip
unzip master.zip
cd onamae_ddns-masterunzipãããããªãå Žåã¯ã€ã³ã¹ããŒã«ããããå¥ã®zipãã¡ã€ã«ãå±éã§ãããœãããå©çšããŠãã ããã
ãœãŒã¹ã³ãŒãã«å€æŽãå ãã
(2023/01/11:远èš)æ°ããŒãžã§ã³ããªãªãŒã¹ãããã倿Žç®æãå€ãããŸããã5-8è¡ç®ã®éšåã倿ŽããŸãã
const char* USER_ID= "xxxxxxxx";
const char* PASS= "Pass1234";
const char* HOSTNAME="hostname";
const char* DOMNAME="example.com";倿Žããã®ã¯ã”ãã§å²ãŸããéšåã§ãã以äžã®æ§ã«å€æŽããŸãã
| é ç® | å 容 |
| USER_ID | ãååãããã³ã ã®ãã°ã€ã³ID |
| PASS | ãååãããã³ã ã®ãã°ã€ã³ãã¹ã¯ãŒã |
| HOSTNAME | æŽæ°ãããã¡ã€ã³ã®ãã¹ãå |
| DOMNAME | æŽæ°ãããã¡ã€ã³ |
äœãäœã瀺ããŠãããã®çްããããšã¯äžã®æ¹ã«æžããŠããŸãã
以äžã®äœæ¥ã¯v0.03以åã®ç©ã§ãã確å®ã«æå°ç·šã®ã¡ã¢ãªã䜿ãããæ¹ã¯ä»¥åã®ããŒãžã§ã³ã䜿ã£ãŠãã ããã詳现ã¯ãã¡ãã®æŽæ°å±¥æŽãã©ããã
(远èšãããŸã§:以äžã¯v0.03以åã®ã³ãŒããå©çšããå Žå)
èšå®ãã¡ã€ã«ãªã©ã§èªã¿èŸŒã圢åŒã§ãããã£ãã®ã§ãããã»ãã¥ãªãã£ãå°ãã§ãèãããšããããšã§ãçŽæ¥ç·šéããŠã³ã³ãã€ã«ããŠããŸããŸãã
ãªã®ã§ãã£ãã奜ããªãšãã£ã¿ã§ddns.cppãéããŠãã ããããµã³ãã«ã§ã¯nanoãçšãããŸãã
nano onamae_ddns/ddns.cppéããŠããããšä»¥äžã®ããã«ãªã£ãŠããã®ã§ãä»ãã瀺ãéšåã倿ŽããŠãã ããã
#include <stdio.h>
#include <unistd.h>
#include <string.h>
int main(){
FILE *file;
char buffer[128];
char *pcmd;
file=popen("curl ifconfig.io -4","r");
if (file==NULL){
printf("ERROR!! Can't reach \"ifconfig.io\"\n");
return -1;
}
fgets(buffer, 128, file);
pclose(file);
buffer[strlen(buffer)-1]='\0';
file=popen("openssl s_client -connect ddnsclient.onamae.com:65010 -quiet","w");
sleep(1);
fprintf(file,"LOGIN\nUSERID:12345678\nPASSWORD:Pass1234\n.\n");
sleep(1);
fprintf(file,"MODIP\nHOSTNAME:hostname\nDOMNAME:example.com\nIPV4:%s\n.\n",buffer);
sleep(1);
fprintf(file,"LOGOUT\n.\n");
pclose(file);
printf("\n%s\n",buffer);
return 0;
}19è¡ç®ã®ãUSERID:12345678ãã®ã12345678ãã®éšåããèªèº«ã®å€æŽãéç¥ããããã¡ã€ã³ã®ããååIDãã«å€æŽããŠãã ãããåãè¡ã®ããPASSWORD:pass1234ãã®ãpass1234ãã®éšåãå ã»ã©å€æŽãããååIDã®ããã¹ã¯ãŒããã«å€æŽããŠãã ãããCèšèªãªã®ã§ãããããã¹ã¯ãŒãã«ã”ããªã©ã®ç¹æ®èšå·ãçšããŠããæ¹ã¯ãšã¹ã±ãŒãã·ãŒã±ã³ã¹ãããŠãã ããã
次ã«21è¡ç®ãç·šéããŸãããHOSTNAME:hostnameãã®ãhostnameãã®éšåããã¹ãå(wwwã¿ãããªãã€)ã«ããDOMNAME:example.comãã®ãexample.comãã®éšåã倿Žãéç¥ããããã¡ã€ã³åã«ããŠãã ããã
以äžã®4ãæã倿ŽããŸãããŸãšãããšä»¥äžã®4ãæã倿ŽããŠãã確èªããŠãã ãã
- 19è¡ç®ãUSERID:12345678
- 19è¡ç®ãPASSWORD:pass1234
- 21è¡ç®ãHOSTNAME:hostname
- 21è¡ç®ãDOMNAME:example.com
ããã倿Žãããä¿åããŠãã ããã
(v0.03以åã®èšå®ã¯ãããŸã§)
makeãè¡ã£ãŠããã®ã§ãã£ã¬ã¯ããªã«å ¥ããã€ã³ã¹ããŒã«ãããŠãããŸããç§ã¯Raspbianã®ç°å¢ã§makeãããŠããŸãããªã®ã§ãåããããªDebianç³»ã®ç°å¢ã§ããã°ãã®ãŸãŸmakeãéãããšæããŸãã
cd onamae_ddns
make
sudo make installã€ã³ã¹ããŒã«å ãªã©ãæ°ã«ããªã人ã¯å ã¯èªã¿é£ã°ããŠå€§äžå€«ã§ãã
ããŠãç§ã®å匷äžè¶³ãªé¢ããã£ãŠãã®Makefileã¯ãããŸã§ç§ã®ç°å¢ãªãåãããšããã ããªã®ã§ãå¥ã®å Žæãç°å¢ã§ãå©çšããããå Žåã¯ãææ°ã§ãããMakefileãæžãæããŠãã ãããMakefileã¯ä»¥äžã®ããã«ãªã£ãŠããŸãã
CC = gcc
CFLAGS = -O4 -Wall -I/usr/local/include
DEST = /usr/local/bin
LDFLAGS = -L/usr/local/lib
PROGRAM = onamae_ddns
$(PROGRAM) : ddns.o
gcc -o $(PROGRAM) ddns.o
ddns.o : ddns.cpp
gcc -c ddns.cpp
install : $(PROGRAM)
install -s $(PROGRAM) $(DEST)
clean :
rm -f *.o *~ $(PROGRAM)ãŸãç§ã¯ãoname_ddnsããšæã€ã ãã§ã³ãã³ããå®è¡ã§ããããã«ãããã£ãã ããªã®ã§ããããŠããŸãããã·ã³ãã«ãªãœããã§ã©ãã«ãããŠãåºæ¬çã«ã¯åããšæãã®ã§ãgccã䜿ã£ãŠã³ã³ãã€ã«ã ãããŠã倧äžå€«ã§ãã
ããã§ããã³ãã³ãèªäœã¯äœ¿ããã®ã§ãããäžèšã«ãæžããããã«ã»ãã¥ãªãã£ãå°ãã§ãé«ããã¹ããäžèŠãªãœãŒã¹ãã¡ã€ã«ã¯æ¶ããŠããŸããŸãããã
cd ../
rm -r oname_ddnsããã§ãã€ããªãã¡ã€ã«ã®ã¿ãã€ã³ã¹ããŒã«ãããŠããç¶æ ã§ãã
äœ¿ãæ¹
éåžžã«ã·ã³ãã«ã§ãã®ã³ãã³ãäžã€ã§æŽæ°éç¥ãã§ãã¡ãããŸãã
onamae_ddnsããã§ä»¥äžã®ãããªè¡šç€ºãæåŸã®ã»ãã«åºãŠããã°å€§äžå€«ã§ãã
000 COMMAND SUCCESSFUL
.
000 COMMAND SUCCESSFUL
.
000 COMMAND SUCCESSFUL
.
000 COMMAND SUCCESSFUL
.
123.456.789.110 //ãµãŒããŒã®ã°ããŒãã«IPãã4ååã衚瀺ãåºãŠããã®ããã€ã³ãã§ã3åã ã£ããã001 ERRORã¿ãããªã®ãåºãŠå ¥ãã°ããããddns.cppã®å€æŽãããšãããééã£ãŠããå¯èœæ§ãé«ãã®ã§ããäžåºŠæ»ã£ãŠç¢ºèªããŠã¿ãŠãã ãããããšãã¡ã€ã³ãååŸããã°ããã§ãããŸããããªããããããŸããã
ããšã¯ãããcronã«ç»é²ããã°å®æå®è¡ã§ããã®ã§ããããã§ããã¡ãªã¿ã«ãã®ã³ãŒãã¯IPãéç¥ããæ©èœãããªãã®ã§ãã°ããŒãã«IPãå€åãããã©ããã¯ç¢ºèªããŠãŸããããšããã®ãåãIPãéä¿¡ããŠãåé¡ãªãã§ãããå®éã«IPã®å€æŽã«ã©ããããæéããããã®ãã調ã¹ãŠã¿ããšãã15ïœ20åãããããã£ãŠãããããªã®ã§ããããŸã§å³å¯ã«ããªãã§ãããšæã£ã次第ã§ãã
ãšããããcrontabã«ç»é²ããŸããããããããªããé¢åã§ããã°ãã®ãŸãŸåãèšå®ã«ããã°å€§äžå€«ã§ãããã€ããªæ¬äœã®ã€ã³ã¹ããŒã«å Žæã¯ã/usr/local/bin/onamae_ddnsãã«ãªã£ãŠããŸãã
crontab -e*/15 * * * * /usr/local/bin/onamae_ddnsä»åã¯1æ¥1åå®è¡ãšãæå³ããªãã®ã§15åã«1åå®è¡ããããã«ããŸãããèšè¿°æ¹æ³ãããããªãã£ãŠæ¹ã¯ãcron èšè¿°ãããããã§èª¿ã¹ããšããã§ããã
ã¢ã³ã€ã³ã¹ããŒã«
ã¢ã³ã€ã³ã¹ããŒã«ããå Žåã¯ã€ã³ã¹ããŒã«å Žæã«æå®ããŠããã/usr/local/bin/onamae_ddnsãåé€ããå¿ èŠãããã®ã§ã以äžã®ã³ãã³ããå®è¡ããŸããïŒåœç¶ããã©ã«ãã®ã€ã³ã¹ããŒã«å ã®å Žåã®ã¿ïŒ
sudo rm /usr/local/bin/onamae_ddnsããšã¯crontabã®ç·šéãããŠå®æå®è¡ãæ¶ããŠããŸãã°çµããã§ãã以äžã®ã³ãã³ãã§crontabãç·šéããŸãã
crontab -eãèªèº«ã®ç°å¢ã«åãããŠæ¶ããŠããããã°ããã§ãããäŸã§æããç§ã®ç°å¢ã®å Žåã¯ãã®äžæãåé€ããŸãã
*/15 * * * * /usr/local/bin/onamae_ddns以äžã§ã¢ã³ã€ã³ã¹ããŒã«ã¯å®äºã§ãã
å®ã£ãŠã»ããããš
éå°ãªåæ°ãå®è¡ãããªã©ããªãã§ãã ããããµãŒãã«è² è·ããããã ãã§äœãåŸã¯ããŸããã15åã«1åããããªãããããšæã£ãŠç§ã¯ããããŠãŸãããå人çãªããšãèšãã®ã§ããã°ã1åã«1åã¯å®è¡ãããã ãšæããŸããDNSãµãŒããŒåŽã®æŽæ°ã«15ïœ20åãããã®ã§æ°é·ã«åŸ ã¡ãŸãããã
ãæèŠããææ³ãªã©
ã³ã¡ã³ãã¯éäžèŠãããŠããã ããŠããŸãããã°ããæ©èœè¿œå ãªã©ã¯GitHubã«ããŠããã ããã°å¯Ÿå¿ã§ããç¯å²ã§èããŸããå©ãã£ãã䟿å©ãªã©ã®ææ³ãã³ã¡ã³ãã§ããã ããã ãã§ããæŽ»åã«ãªããŸãã®ã§ãåŸ ã¡ããŠãããŸãã
Linuxãããã°ã©ã ãšãã«å匷äžã§è³ãã¬ãšãããããããšæããŸããããææããã ããã°ä¿®æ£ããããã䟿å©ã«ãªãã®ã§ãããããé¡ãããããŸãã
ãã®ããŒã«ãã玹ä»ããã ãæ©äŒãããããŸããããªã³ã¯ã¯ããã«é£ã°ããŠãããã®ã¯æè¿ããããŸããèš±å¯ãäžèŠã§ãã
THUN 2023.01.11 ver 1.00
æŽæ°å±¥æŽ
ver. 0.01 æåã®ãªãªãŒã¹
ver. 0.02 IPv6ç°å¢äžã«ããããifconfig.ioããã®è¿ãå€ãIPv4ã«ãªãããã«ä¿®æ£ïŒGitHubã§ãã«ãªã¯ãããã ããŸããïŒã
ver. 0.03 “system”ã䜿çšããŠããéšåã”popen”ã«å€æŽãäžèŠãªã³ãŒããåé€ãI/Oè² è·ã®ããããªè»œæžãšé«éåããããããŒã
ver. 0.04 äžéšããŒãžå ã®æèšãä¿®æ£ãæ°ã¯ã©ã€ã¢ã³ããžã®å¯Ÿå¿ç¶æ³ãèšè¿°ãã³ãŒãã«å€æŽãªãã䟿å®äžã®å€æŽãšãªãã
ver. 1.00 ã¡ãžã£ãŒã¢ããããŒããå©äŸ¿æ§ã®åäžã®ããconst char*åã§æ°ãã倿°ã远å ãåŸæ¥ãã䜿ãããããªããŸããããã ããã³ã³ãã€ã«ç°å¢ã«ãã£ãŠã¯æ°ãã€ãçšåºŠã¡ã¢ãªäœ¿çšéãå¢ããå¯èœæ§ããããããããŒã
ä»ã«ããããªããŒã«ãäœæããŸãããRaspberry Piãã䜿çšã®æ¹ã¯ãããããã°ããããã§ããããã