电影中心 精品软件 联系我们

 找回密码
 立即注册

QQ登录

只需一步,快速开始

Close
查看: 574|回复: 0

简单五步设置群晖NAS绑定自有域名实现外网访问

[复制链接]
发表于 2019-9-17 20:24:15 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
1.注册阿里云账号。
, R3 n) j3 ]0 a" Q9 p2.注册一个域名。
+ s8 e+ E+ G) r/ k/ x& K! T1 B/ f/ [% l% B+ s, V. [
如果域名不在阿里云解析托管,需要先转过去,具体方法是联系域名提供商修改域名的DNS服务器,修改方式参考这里:https://help.aliyun.com/knowledge_detail/39844.html
$ }/ n6 W! F9 V! |然后去控制台找到云解析,将域名添加进去;
" d. p+ Z3 ~* N4 ?5 N; c3 S) g/ r' n
2 ^" O" u6 X, n/ Y* x( f- E
6 y5 b" L1 `1 |6 }( w5 s% `3.到阿里云控制中心找到access key和secret并保存下来(强烈建议遵循阿里云安全最佳实践的说明 ,使用RAM子用户的AccessKey);. R% n& f) a$ q/ q7 `4 [

# \3 `. S$ I: B
7 g+ J9 ^5 V# D% r( V4.到群晖控制中心找到任务计划新增一个计划。: M% K) f8 n6 T5 b7 B0 B
新增->计划的任务->用户自定义脚本& i# R2 u5 J; }% _; R
20190117191716771.jpg 1 t2 Z2 g" }/ W

+ n# Z" _2 Q5 g& s设置10分钟定时) M! Z3 u! D* h9 s6 A
, x; G1 D  i3 w' N0 V9 r
20190117191614507.jpg - Z% u/ a' |+ V" E4 L
0 N; ~: s' l" |. ]
复制以下内容,根据自己的情况修改中文部分并添加到任务设置自定义脚本
) ~1 _8 {# G4 P* }7 J( [; F
; B2 {. g0 d9 d) s
  1. #!/bin/sh
    " p9 U5 z2 \" `0 j1 M# a9 \+ c
  2. aliddns_name="你的域名前缀"+ B& Z. A3 n2 [) L3 k2 u/ G& m
  3. aliddns_domain="你的域名"
    1 f2 z1 }: {7 W8 Q# C. V! }# e) _
  4. aliddns_ak="你的AccessKeyId"
    & F( ]9 T+ W/ A1 F0 B) S
  5. aliddns_sk="你的AccessKeySecret", ]5 i) t4 Y2 ], F
  6. - s9 |% P6 ]0 u0 f- J
  7. aliddns_curl="curl -s whatismyip.akamai.com"2 B$ ]7 N& L, ~* c9 X; W
  8. aliddns_dns="8.8.8.8"/ ?- l7 P& U3 K5 V( [' ^
  9. aliddns_ttl="600"
    . d5 n2 q+ D6 G
  10. # \/ ^  n( Q9 k) P6 M7 M
  11. ip=`$aliddns_curl 2>&1`( D' h. l$ h7 r! V/ ]# k' x6 t$ r

  12. - ]" J* S9 r; |$ ?# k( j/ P3 u
  13. current_ip=`nslookup $aliddns_name.$aliddns_domain $aliddns_dns 2>&1`
    + r% o8 Z9 H* D5 B3 C
  14. 2 W- y! N& ?/ w" |; m; t
  15. if [ "$?" -eq "0" ]; V: w% y; b! E+ V( Q3 y
  16. then$ U! f' a" Q$ B7 e! g
  17.     current_ip=`echo "$current_ip" | grep 'Address 1' | tail -n1 | awk '{print $NF}'`! p+ t7 |  H# \" J/ B9 B/ x
  18.     if [ "$ip" = "$current_ip" ]/ S) C) i; X, \8 t& C
  19.     then
    + I" b# l3 ^8 M
  20.         exit 0  e5 n. K' {5 ?) F6 L5 v
  21.     fi 0 a7 C. Y" X/ K' D  O3 ^" ~
  22. fi
    # j2 \! H& h0 M7 s0 I7 ]- ]$ s
  23. # \0 }1 z3 n& C8 c2 o
  24. timestamp=`date -u "+%Y-%m-%dT%H%%3A%M%%3A%SZ"`3 I3 l8 @4 f! L3 P/ V3 o( E3 D$ l
  25. ) N, V/ C: I/ _, `2 `! ]
  26. urlencode() {
    , h) d+ w3 f9 h" A; e  S
  27.     # urlencode <string>
    4 F3 O' d" S5 \6 y+ b
  28.     out=""
    ; C; w! o: X# h
  29.     while read -n1 c4 t: ?( n) r% _4 O% C; z$ |
  30.     do
    / v; R& l; N: d2 ?
  31.         case $c in
    0 c2 R, Y; i, s. j# V
  32.             [a-zA-Z0-9._-]) out="$out$c" ;;
    ( }4 [5 ]  g4 u! {% L& ?, Q
  33.             *) out="$out`printf '%%%02X' "'$c"`" ;;
    # r( T; U, k% |0 g
  34.         esac( _: R; V& }! O0 }$ O' C
  35.     done
    1 A% n5 f" m  `  e, W4 _0 L
  36.     echo -n $out4 E0 k9 u- C7 y' K0 N
  37. }
    ; e" R* ~; m+ z$ I+ {3 V. ?
  38. enc() {
    . R: J# N/ c. I
  39.     echo -n "$1" | urlencode
    . E& _1 y3 U  d2 V
  40. }) t5 M! t( r! s
  41. send_request() {
    & e. X( X2 \1 O+ Y  X5 t0 X8 n) s
  42.     local args="AccessKeyId=$aliddns_ak&Action=$1&Format=json&$2&Version=2015-01-09"" j4 C2 h; \/ k+ _
  43.     local hash=$(echo -n "GET&%2F&$(enc "$args")" | openssl dgst -sha1 -hmac "$aliddns_sk&" -binary | openssl base64)& _7 H$ s& A# d3 w: D$ @& x; m
  44.     curl -s "http://alidns.aliyuncs.com/?$args&Signature=$(enc "$hash")"
    % o0 y& C" o. u- K* `
  45. }
    ) ~6 w2 R7 l  h* J" N: N; |
  46. get_recordid() {
    , e3 J' {3 A/ a$ p  H
  47.     grep -Eo '"RecordId":"[0-9]+"' | cut -d':' -f2 | tr -d '"'
    # a# D& t6 M/ C3 @- |
  48. }9 h- ~0 X! s" m% `1 n; b
  49. query_recordid() {& @9 i% [. Y# |6 S8 {. ?5 n$ }4 Z
  50.     send_request "DescribeSubDomainRecords" "SignatureMethod=HMAC-SHA1&SignatureNonce=$timestamp&SignatureVersion=1.0&SubDomain=$aliddns_name.$aliddns_domain&Timestamp=$timestamp"
    0 H: R$ ]* V6 L  Y6 W4 {/ F. Z  c
  51. }
    # h( d( W" s9 s! a& e
  52. update_record() {
    6 g* L; u, D$ P, v/ X
  53.     send_request "UpdateDomainRecord" "RR=$aliddns_name&RecordId=$1&SignatureMethod=HMAC-SHA1&SignatureNonce=$timestamp&SignatureVersion=1.0&TTL=$aliddns_ttl&Timestamp=$timestamp&Type=A&Value=$ip"$ F- |3 b# l' ~
  54. }( q( R. f# s+ Y  F
  55. add_record() {# q! e/ Q# }$ a) w$ \
  56.     send_request "AddDomainRecord&DomainName=$aliddns_domain" "RR=$aliddns_name&SignatureMethod=HMAC-SHA1&SignatureNonce=$timestamp&SignatureVersion=1.0&TTL=$aliddns_ttl&Timestamp=$timestamp&Type=A&Value=$ip"& G/ ^8 i+ T5 N# W9 n3 }
  57. }1 B, |* b/ T7 w# Y5 v- L
  58. if [ "$aliddns_record_id" = "" ]
    : N7 t4 p' i- }9 {( ]6 z/ U3 c" B
  59. then+ c  T( b0 V1 A$ B. k
  60.     aliddns_record_id=`query_recordid | get_recordid`
    8 C) `7 {0 B; M  [& E5 F* R8 q, Q
  61. fi
    + f' L6 q8 }3 r0 U% D, g& u
  62. if [ "$aliddns_record_id" = "" ]6 h7 Z/ ~' F# ], ~
  63. then/ h2 P0 a* U0 a# }# [5 B* r1 e
  64.     aliddns_record_id=`add_record | get_recordid`/ F' I" x6 l, T4 L) Z' z; b+ D* X
  65.     echo "added record $aliddns_record_id"$ {( l7 a. H( }' W6 J/ @4 E4 q
  66. else
    , i; z7 b* u. c) q( n* h
  67.     update_record $aliddns_record_id& L3 A3 Z+ Q; T" w, c- p  s( y' i
  68.     echo "updated record $aliddns_record_id") g0 [+ A3 q( m" N
  69. fi
复制代码
3 D# D2 H" r* X; l3 V  T
20190117191932194.jpg
9 [$ b: D1 I3 G9 B( P' p

: P9 A. _* E3 g2 a5.设置好端口转发。1 P: @* u, u  x6 N- ^

9 b0 C' u1 F5 P如何设置群晖端口转发请自行百度。
: J* a% G, Y# v- l" e* F0 C( o% Y
4 N. _. P$ I: D- p  O" S* n3 H" x7 f. j
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|手机版|Archiver|帮助|古城IT技术联盟 ( 鲁ICP备06030014号 )

GMT+8, 2024-6-26 21:22 , Processed in 0.153339 second(s), 8 queries , Gzip On, Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表