Board logo

標題: renew public ip script查詢 [打印本頁]

作者: vpnuser    時間: 2018-9-5 22:38     標題: renew public ip script查詢

我現在大陸會連vpn 到香港

但香港IP經常被封

想在香港ping 住連去大6 的vpn tunnel, 當vpn 一斷線香港就會自動轉release and renew IP

想問有沒有ching 有相關經驗or script
想做到自動化..
1.當vpn tunnel ping 不通時
2.香港router 先檢查自身ip
3. loop release and renewip 直至拿到新IP

我現在的做法是在newwatch monitor 大陸router 的ip 192.168.1.2 當down 時就RUN
/ ip dhcp-client release 0
/ ip dhcp-client release [find interface=ether1]

但有個問題, 以上script 只會行一次, 有時不能成功renew hk ip, 要手動按幾次先renew 到public ip
作者: ckleea    時間: 2018-9-6 13:18

理論上netwatch 指令應該會重複的運行
作者: 角色    時間: 2018-9-6 15:37

本帖最後由 角色 於 2018-9-6 18:45 編輯

哈哈!我已经很久没有用VPN,而改用Proxy。
作者: yiucsw    時間: 2018-9-6 18:05

netwatch 只會有變化才運行up/Down Script。所有在down script 加System schedule 來多次運行。
作者: gfx86674    時間: 2018-9-6 22:20

本帖最後由 gfx86674 於 2018-9-6 22:37 編輯

很簡單的要求,樓主的vpn site-to-site應該會使用到profile吧...
何需工作排程? 把renew public工作放到on-down欄位 ,vpn斷線立即執行豈不更佳
[attach]4165[/attach]
  1. :local public 0
  2. :while ([:typeof $public]!="str") do={
  3. /ip dhcp-c release [find interface=ether1] ; :delay 5s
  4. :set public [/ip dhcp-c get [find interface=ether1] address]
  5. }
複製代碼

作者: yiucsw    時間: 2018-9-7 01:02

本帖最後由 yiucsw 於 2018-9-7 01:04 編輯

非常厲害! 我現在有個問題,當VPN Server reboot, ISP 有時會派一個新的Public IP 地址。我現在會定時看看 Public IP 有沒有更新,有改變便update DDNS..
問題時update DDNS 到client 端讀新的地址要8小時。。
IP cloud 的更新會快一點,但也有一段時間。
我看看能用 :resolve xxxx server=1.1.1.1 (external dns) server 來加快 這流程。然後set static DNS
/ip dns static set [find name=$SSTPremote] address=$SSTPdynIP ttl=1d
問題是。現在有三個IP,一個原本的server, 一個No-ip DDNS 的IP,一個IP cloud出來的 IP。不知道那個才是對的。在中國有會DNS hijack, 給一個錯的 IP address. 能是在profile內detect down,然後每個IP都嘗試?(中國到香港SSTP 是常常斷)
要是對IP的更新到DNS static?
作者: gfx86674    時間: 2018-9-7 02:11

本帖最後由 gfx86674 於 2018-9-7 02:22 編輯

回復 6# yiucsw
很簡單的事不要用很複雜的方法處理 ,您server(香港)的ddns可以多設些不同廠商啊,
然後讓client(中國路由器)去嘗試撥號看誰會先成功.

vpn-server profile既然可以控制public更新 ,那vpn-client profile自然也可以改變client自己的撥號地址.
假設vpn-server有3組ddns ,那vpn-client profile只要設:
[attach]4166[/attach]
  1. :local ready no
  2. :local connect [/interface sstp-c get $interface connect-to]
  3. :local ddns1 "abc123.noip.com"
  4. :local ddns2 "abc123.duckdns.org"
  5. :local ddns3 "abc123.changeip.org"

  6. :if (!$ready && $connect=$ddns1) do={
  7. /interface sstp-c set $interface connect-to=$ddns2 ; :set ready yes}
  8. :if (!$ready && $connect=$ddns2) do={
  9. /interface sstp-c set $interface connect-to=$ddns3 ; :set ready yes}
  10. :if (!$ready && $connect=$ddns3) do={
  11. /interface sstp-c set $interface connect-to=$ddns1 ; :set ready yes}
複製代碼
每當vpn-client撥號斷線或失敗,就換下一組ddns嘗試直到成功為止.您說這方法是不是務實的多
作者: yiucsw    時間: 2018-9-7 14:27

本帖最後由 yiucsw 於 2018-9-7 20:03 編輯

好多了。能改進一下?
想在國外的DNS resolve DDNS. 美國的DDNS 更新比較快。
現在是 用DNS 的Default來 Resolve... 那是國內的DNS
SSTP down script, 好像不是每次Down 運行一次,是重UP-》down 才運行。
作者: vpnuser    時間: 2018-9-7 22:03

很簡單的要求,樓主的vpn site-to-site應該會使用到profile吧...
何需工作排程? 把renew public工作放到on- ...
gfx86674 發表於 2018-9-6 22:20


好像只會執行一次

但有時release 一次不會 get new public ip
作者: gfx86674    時間: 2018-9-8 00:02

本帖最後由 gfx86674 於 2018-9-8 00:03 編輯
好像只會執行一次

但有時release 一次不會 get new public ip
vpnuser 發表於 2018-9-7 22:03

script是用迴圈(while)動作 ,
會不斷的release ether1,每次間隔5秒,直至ether1抓到新public address才停止.
作者: yiucsw    時間: 2018-9-9 03:27

本帖最後由 yiucsw 於 2018-9-9 03:38 編輯

回復 9# vpnuser


    我猜不是DHCP release的問題,DHCP server 會記的那個MAC address.所有是要loop 2個 MAC address . 要disable/enable interface,騙DHCP server 放一個新public IP...
http://www.telecom-cafe.com/foru ... &extra=page%3D1
作者: 161698    時間: 2019-1-10 13:34

很簡單的要求,樓主的vpn site-to-site應該會使用到profile吧...
何需工作排程? 把renew public工作放到on- ...
gfx86674 發表於 2018-9-6 22:20



    你好,你这个能不能定义条件为ping aa.com ,当ping 不通的时候,再/ip dhcp-c release [find interface=ether1]?
作者: gfx86674    時間: 2019-1-10 19:01

你好,你这个能不能定义条件为ping aa.com ,当ping 不通的时候,再/ip dhcp-c release [find inter ...
161698 發表於 2019-1-10 13:34

可以啊,用netwatch即可。




歡迎光臨 電訊茶室 (http://telecom-cafe.com/forum/) Powered by Discuz! 7.2