• 利用api更新域名解析ip+端口转发【2】


    利用api更新域名解析ip+端口转发【2】

    一、需求二及问题解决

    1、问题引入:

      ssr客户端配置FQ,连过去有时候连不上cheapnat机器;而且因为cheapnat机器是国外的,很容易被封掉,所以利用阿里云的国际版香港机器给cheapnat机器上的ip进行端口转发。(因为这些机器早就过期没有再使用了,就不打马赛克了)

      阿里云的国际版香港机器:47.240.64.151

      Cheapnat机器: 210.6.179.203

    现在需要:47.240.64.151 3333端口  转发到 210.6.179.203 44222端口(b.ljy.xyz)

    也就是210.6.179.203(ip经常变:之前那篇利用api更新域名解析ip+端口转发【1】就是处理这个问题的) 端口:44222 需要用到阿里云47.240.64.151 去做端口转发,用:3333端口,记得阿里云控制台上的防火墙也要开启3333端口

    2、问题解决

    这个图的ip变了= =,其实就是上面说的Cheapnat.com上的ip:210.6.179.203

     

     (1)原服务器上有个这样的脚本: iptables-pf.sh 

    脚本内容自己从这里下载:https://www.vjsun.com/237.html

    界面如下:

    我的脚本是参考上面iptables-pf.sh脚本写的:

    1、思路:

    (1) 利用api获取cheapnat上ip(210.6.179.203)

    cheapnat上ip有变,执行(2),清空iptables端口转发;否则退出脚本

    (2) 根据行号删除原有iptables规则转发,并添加新ip的转发规则

    (3) 最后把ip写到HKBNip,作为下次执行脚本时cheapnat上的旧ip

     

    附上我的脚本:

     1 #!/usr/bin/env bash
     2 
     3 DATE=$(date +%F_%T)
     4 LOG=/root/port_forward.log
     5 
     6 echo "$DATE 开始运行脚本HKBNport_forward.sh" >> $LOG
     7 IPTABLES=/sbin/iptables
     8 
     9 #1、利用api获取远程ip
    10 msg=`curl -u 'namecom的用户登录名:上面截图的生产令牌' 'https://api.name.com/v4/domains/b.ljy.xyz/records/1873892959'`
    11 forwarding_ip=`echo $msg |awk -F'[",]' '{print $27}'`
    12 forwarding_port=44222
    13 
    14 local_port=3333
    15 local_ip=172.17.62.239    #本机内网ip
    16 
    17 oldip=`cat HKBNip`
    18 echo $oldip
    19 
    20 if [[ $oldip == $forwarding_ip ]]; then
    21   echo 'the same ip'
    22   exit 0
    23 fi
    24 
    25 
    26 #2、删除原有tcp规则
    27 #找到目标行号
    28 TCP_Del_DNAT_num=`iptables -t nat -nvL  --line-numbers |grep 44222 |grep DNAT | grep tcp | awk '{print $1}'`
    29 TCP_Del_SNAT_num=`iptables -t nat -nvL  --line-numbers |grep 44222 |grep SNAT | grep tcp | awk '{print $1}'`
    30 
    31 if [ -n "${TCP_Del_DNAT_num}" ]; then
    32    iptables -t nat -D PREROUTING ${TCP_Del_DNAT_num}
    33 fi
    34 if [ -n "${TCP_Del_SNAT_num}" ]; then
    35    iptables -t nat -D POSTROUTING ${TCP_Del_SNAT_num}
    36 fi
    37 
    38 #删除tcp INPUT规则
    39 TCP_Del_INPUT_num=`iptables -L INPUT --line-numbers |grep 3333 | grep tcp | awk '{print $1}'`
    40 if [ -n "${TCP_Del_INPUT_num}" ]; then
    41    iptables -D INPUT  ${TCP_Del_INPUT_num}
    42 fi
    43 
    44 #删除原有udp规则
    45 UDP_Del_DNAT_num=`iptables -t nat -nvL  --line-numbers |grep 44222 |grep DNAT | grep udp | awk '{print $1}'`
    46 UDP_Del_SNAT_num=`iptables -t nat -nvL  --line-numbers |grep 44222 |grep SNAT | grep udp | awk '{print $1}'`
    47 
    48 if [ -n "${UDP_Del_DNAT_num}" ]; then
    49    iptables -t nat -D PREROUTING ${UDP_Del_DNAT_num}
    50 fi
    51 
    52 if [ -n "${UDP_Del_SNAT_num}" ]; then
    53    iptables -t nat -D POSTROUTING ${UDP_Del_SNAT_num}
    54 fi
    55 
    56 #删除udp INPUT规则
    57 UDP_Del_INPUT_num=`iptables -L INPUT --line-numbers |grep 3333 | grep udp | awk '{print $1}'`
    58 if [ -n "${UDP_Del_INPUT_num}" ]; then
    59    iptables -D INPUT   ${UDP_Del_INPUT_num}
    60 fi
    61 
    62 #3、删除新转发规则
    63 ## add tcp
    64 $IPTABLES -t nat -A PREROUTING -p tcp --dport "${local_port}" -j DNAT --to-destination "${forwarding_ip}":"${forwarding_port}"
    65 
    66 $IPTABLES -t nat -A POSTROUTING -p tcp -d "${forwarding_ip}" --dport "${forwarding_port}" -j SNAT --to-source "${local_ip}"
    67 
    68 $IPTABLES -I INPUT -m state --state NEW -m tcp -p tcp --dport "${local_port}" -j ACCEPT
    69 
    70 
    71 ## add udp
    72 $IPTABLES -t nat -A PREROUTING -p udp --dport "${local_port}" -j DNAT --to-destination "${forwarding_ip}":"${forwarding_port}"
    73 $IPTABLES -t nat -A POSTROUTING -p udp -d "${forwarding_ip}" --dport "${forwarding_port}" -j SNAT --to-source "${local_ip}"
    74 $IPTABLES -I INPUT -m state --state NEW -m udp -p udp --dport "${local_port}" -j ACCEPT
    75 
    76 
    77 ##写到HKBNip,作为下次脚本用
    78 echo $forwarding_ip > HKBNip
    View Code

    运行完如下图:

    3、测试结果截图

    看看是否能FQ:
    打开:ip111.cn

    ip就是cheapnat的机器,借由了47.240.64.151的3333端口进行转发

    整个逻辑:

    所以这个标题:利用api更新域名解析ip+端口转发就是围绕这一的步骤进行开展的

    第1步,api修改name.net的域名解析(指向cheapnat上的ip)
    第2步,阿里云HK机器拿到name.com 上 的dns解析记录,拿到cheapnat上的ip
    第3步,阿里云HK机器给cheapnat上的ip做端口转发

  • 相关阅读:
    Web开发中需要了解的东西
    Javascript:谈谈JS的全局变量跟局部变量
    多角度看.NET面试题
    java http大文件断点续传上传方法
    java http大文件断点续传上传问题
    java http大文件断点续传上传功能
    java http大文件断点续传上传解决方案
    java http大文件断点续传上传实例
    java http大文件断点续传上传示例
    java http大文件断点续传上传源代码
  • 原文地址:https://www.cnblogs.com/windysai/p/14383336.html
Copyright © 2020-2023  润新知