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

 找回密码
 立即注册

QQ登录

只需一步,快速开始

Close
查看: 553|回复: 0

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

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

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

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

×
1.注册阿里云账号。
% E" L" ^+ E. V7 a* H+ z. e- {9 c# Q2.注册一个域名。/ E2 @. M( w4 R
. n: M" Q' b  C  f" t" r: F  t
如果域名不在阿里云解析托管,需要先转过去,具体方法是联系域名提供商修改域名的DNS服务器,修改方式参考这里:https://help.aliyun.com/knowledge_detail/39844.html& V1 ]& t1 P4 a9 w1 y
然后去控制台找到云解析,将域名添加进去;
+ o6 u9 i( m6 q1 ^  Y" `
( l1 m) i& a6 z: I; U
* }6 v: E* A3 L3.到阿里云控制中心找到access key和secret并保存下来(强烈建议遵循阿里云安全最佳实践的说明 ,使用RAM子用户的AccessKey);
. U( y, w" \  ]# x9 [3 L( k7 T5 T4 i: \# z  j# j/ a

" M+ y- @: E- t( P0 h1 s  K% W4.到群晖控制中心找到任务计划新增一个计划。+ C5 E8 i+ a" W6 R0 b$ M+ A
新增->计划的任务->用户自定义脚本
. ~" n- O* ~9 z8 b8 ]  Y8 H 20190117191716771.jpg
' x9 k5 I: J  `* W" E" X( ?# z; z0 h! k' E2 f% {' |
设置10分钟定时3 j" @. H4 j: h3 }0 T% E; U
- c4 _6 K, i( f. G  E
20190117191614507.jpg
7 K/ v0 K# d; O1 v1 U* B/ ]/ y* ^# L1 k+ {( |- V
复制以下内容,根据自己的情况修改中文部分并添加到任务设置自定义脚本9 h2 t* J& a& l
2 V: d( |- [6 T! p+ x
  1. #!/bin/sh
    ( D" o& [* L' m: b" P: J9 r& I
  2. aliddns_name="你的域名前缀"* C+ I4 ^- L, R% J! ]; s
  3. aliddns_domain="你的域名"7 m8 g9 H" Q; ?8 u
  4. aliddns_ak="你的AccessKeyId"
    " |7 P% S& O# U
  5. aliddns_sk="你的AccessKeySecret"3 ]: r* ~3 ^) U4 u/ M+ T6 J/ P
  6. 2 @% E# I: K$ k8 }- {
  7. aliddns_curl="curl -s whatismyip.akamai.com"- K6 c6 L3 j9 j) z' M
  8. aliddns_dns="8.8.8.8"
    ( U( F: y' }& _5 h9 u$ F6 u* |
  9. aliddns_ttl="600"/ @/ {  R/ Y6 J9 j

  10. ' S" K$ Q" K4 T
  11. ip=`$aliddns_curl 2>&1`
    ' f: o; u: r) V+ K( _$ u

  12. : M- p% `) l  c9 {/ T, \
  13. current_ip=`nslookup $aliddns_name.$aliddns_domain $aliddns_dns 2>&1`
    * u( K  v. f/ {6 V5 q. t

  14. 3 H0 ?/ d: A: b! d" L
  15. if [ "$?" -eq "0" ]
    4 j8 v, K' ?( t
  16. then; h4 y, d8 i+ ?3 k! L  p
  17.     current_ip=`echo "$current_ip" | grep 'Address 1' | tail -n1 | awk '{print $NF}'`
    ; o, u% s6 Y. u. P* u
  18.     if [ "$ip" = "$current_ip" ]; {/ D% A) O3 T8 {' k/ v0 q- @
  19.     then
    $ p& }- i+ ^1 I; x
  20.         exit 0
    - X. c' }* U/ r) q3 Y
  21.     fi / T/ E$ l2 e6 \. ~7 v
  22. fi
    . z  }9 W7 i3 U) x

  23. " K. T/ ~2 i, J  U4 v
  24. timestamp=`date -u "+%Y-%m-%dT%H%%3A%M%%3A%SZ"`9 Z8 Y' X  s5 w, C5 h; A; Q' @
  25. ) Y7 R  _  @2 q0 o9 }' a0 X% l9 m
  26. urlencode() {
    / ~/ S7 n4 g6 ^/ p# y
  27.     # urlencode <string>8 x( U! @3 I/ o
  28.     out=""
    9 g8 }% T3 L8 A' G4 h; L
  29.     while read -n1 c
    ) D5 y% V$ w, _" H
  30.     do+ [& C2 O' P7 T
  31.         case $c in
    & U& P0 w" e5 \3 _& }9 I
  32.             [a-zA-Z0-9._-]) out="$out$c" ;;
    # X& L& q; C: l1 ^
  33.             *) out="$out`printf '%%%02X' "'$c"`" ;;
      z& ~; u% `; O
  34.         esac! K0 Y0 a: Z2 A8 ~
  35.     done$ i2 r5 L' t  M) H
  36.     echo -n $out
    : ^! X* Y# H5 `3 W! \
  37. }
    ) p, R( ]' J- `
  38. enc() {. L2 l4 X& G+ O# y# B! z7 R
  39.     echo -n "$1" | urlencode( F" F, b# A" J
  40. }: d" T1 N# ~3 ^* y8 l4 @  @% f
  41. send_request() {  x4 W! n3 {2 V5 i% L1 S, ^
  42.     local args="AccessKeyId=$aliddns_ak&Action=$1&Format=json&$2&Version=2015-01-09"! o  Y, W0 T; P) ^$ V$ g8 X. V6 W
  43.     local hash=$(echo -n "GET&%2F&$(enc "$args")" | openssl dgst -sha1 -hmac "$aliddns_sk&" -binary | openssl base64)
    4 q- T- W) ^% T+ E
  44.     curl -s "http://alidns.aliyuncs.com/?$args&Signature=$(enc "$hash")"  m- u/ [7 i0 H' C- E
  45. }
    - W8 X5 x- A$ b' h+ r
  46. get_recordid() {0 r" [& N9 n& d+ C# r
  47.     grep -Eo '"RecordId":"[0-9]+"' | cut -d':' -f2 | tr -d '"'7 y: d. E  l3 \8 u1 M
  48. }
    1 M2 }) W9 j' K* ?' f% g6 U5 s
  49. query_recordid() {
    ' E9 x. l* X, Z: t
  50.     send_request "DescribeSubDomainRecords" "SignatureMethod=HMAC-SHA1&SignatureNonce=$timestamp&SignatureVersion=1.0&SubDomain=$aliddns_name.$aliddns_domain&Timestamp=$timestamp"( l6 G' o9 X, C% k2 P2 G0 M& V
  51. }. [) }) c/ B8 }+ l0 ?
  52. update_record() {9 x0 t/ L& K8 B5 ]. U* m" G  _
  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"
    ) Z, V* Q  C3 E7 C+ E% r# ^
  54. }+ c; {& g; y$ }* ^. k
  55. add_record() {
    ! r9 v! P1 e) [0 G. @
  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"
    - E7 m. |8 @( w: m8 X1 d
  57. }" H5 X% l7 l3 Y2 _* @
  58. if [ "$aliddns_record_id" = "" ]
    9 W* X3 L. o2 \" s7 r+ [
  59. then6 Y0 _# E# P- r" x9 i; Q- M) M
  60.     aliddns_record_id=`query_recordid | get_recordid`
    2 T! R9 f: }7 }6 G. ]9 e
  61. fi
    0 d6 U' G. F8 X  P8 m
  62. if [ "$aliddns_record_id" = "" ]
    5 z% x  k3 c: L1 D) p1 g
  63. then
    2 [& w1 `, k( q3 d& f; C
  64.     aliddns_record_id=`add_record | get_recordid`" P$ Z  j  x$ g
  65.     echo "added record $aliddns_record_id"& x: I  m$ F% W! P& c( g* _4 q
  66. else
    ' S' y! b6 ~% `0 z. n0 U7 j
  67.     update_record $aliddns_record_id
    * R. P/ q' _" a
  68.     echo "updated record $aliddns_record_id"* I7 Z/ `7 [& M, J1 _
  69. fi
复制代码

2 A- _+ T" o/ O% s0 C 20190117191932194.jpg
1 t# H  ^+ _' v6 v7 @

% g: {1 V* `3 H% P- _" {0 T# R5.设置好端口转发。! k  A! R4 u; R/ u0 n8 H

" R' p% U$ C- g) M# l2 i, P如何设置群晖端口转发请自行百度。7 z+ q- |3 A( ]7 z

' t. X1 }$ j$ ~. {/ k
! i, x4 s" n  _  t
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-5-9 05:25 , Processed in 0.143640 second(s), 9 queries , Gzip On, Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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