动态公网IP再利用
问题
这个公网IP为路由器WAN口所得,我可以让局域网内的服务主机供公网访问吗
利用路由器上的端口映射功能,将内网的8081映射到公网的8081
这个IP地址每天会更新一次,我要每次使用都需要查询一下吗
我想做一个网站,80、443端口被运营商封了怎么办
通过服务器搭建的反向代理服务,将服务器上的80端口反向代理到公网IP的8081端口
端口映射
内网地址:192.168.188.205的所有端口,映射到外网接口的1-65536,all端口
映射成功后,比如192.168.188.205这台主机搭建了WEB服务在8088端口,此时,访问外网接口的8088端口就可以进行连接
DDNS:
端口映射后,虽然可以达成访问需求,但是毕竟是动态公网IP,此地址每天都会更新,我们可以利用DDNS服务,定期检查现在公网,把这个地址自动写进DNS的域名解析A记录的值
DDNS工作流程:
获取当前公网IP地址
通过API的ID与密码登录DNS控制台
修改配置文件里子域名的IP值
通过定时任务定时更新域名解析的值为当前公网IP
材料:
随便注册域名一个
Linux主机或支持DDNS服务的路由器
我拿已经注册好的域名来做一个演示(DNSPod平台)
在控制台->我的域名->选择已有域名->增加记录
随便增加一个三级域名记录:xxx.llzdsec.com,类型为A记录,记录值随便填
获取控制台API
点击右上角头像->账号中心->API密钥->DNSPod Token
创建成功后,请记住ID与Token值,为API的账号与密码
编辑脚本
1 2
mkdir /ddns -m 777 vim /ddns/ddns.sh
BASH
修改TOKEN
,DOMAIN
,SUB_DOMAIN
为实际值
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
#!/bin/bash TOKEN="112233,67fa231667a33de0f5255f62d33161eb" DOMAIN="yourdomain.com" SUB_DOMAIN="xxx" DATA="login_token=$TOKEN &format=json&domain=$DOMAIN &sub_domain=$SUB_DOMAIN &record_type=A&offset=0&length=3" JOSN_RECORDS=`curl -4 -s -X POST https://dnsapi.cn/Record.List -d $DATA ` RECORD_ID=`echo $JOSN_RECORDS |sed '/id/ s/.*id":"\(.*\)","ttl.*/\1/' ` LINE_ID=`echo $JOSN_RECORDS |sed '/line_id/ s/.*line_id":"\(.*\)","type.*/\1/' ` IP_RESOLVED=`echo $JOSN_RECORDS |sed '/value/ s/.*value":"\(.*\)","enabled.*/\1/' ` REAL_IP=`curl -4 -s myip.ipip.net|awk -F' |:' '{print $3}' `if [ $REAL_IP != $IP_RESOLVED ]; then DATA="login_token=$TOKEN &format=json&domain=$DOMAIN &record_id=$RECORD_ID &sub_domain=$SUB_DOMAIN &value=$REAL_IP &record_type=A&record_line_id=$LINE_ID " JSON_RESULT=`curl -4 -s -X POST https://dnsapi.cn/Record.Modify -d $DATA `echo $JSON_RESULT >> /var/log /dnspod_ddns.log IP_RESOLVED=$REAL_IP fi
BASH
1 2 3
chmod ugo+x ./*.sh nslookup update.llzdsec.com curl ip.sb
BASH
定时执行
1 2
crontab -e */30 * * * * /bin/bash /liangzai/ddns.sh
BASH
反向代理
做完上面步骤后,已经可以通过域名的方式访问内网的WEB应用了,但是由于运营商封堵了80(http)和443(https)端口,导致要用到其他端口才可以访问:update.llzdsec.com:8088,加个端口会显得比较别扭,用反向代理可以很好解决
登录自己购买的服务器
在开始之前,先关闭阻止菜鸟前进的SElinux和防火墙
1 2 3
sed -i 's/SELINUX=.*/SELINUX=disabled/g' /etc/ selinux/config cat /etc/ selinux/config |grep ^SELINUX= setenforce 0
GRADLE
1 2
systemctl stop firewalld systemctl disable firewalld
BASH
安装配置
1
yum install nginx -y
BASH
1
vim /etc/nginx/conf.d/proxy.conf
BASH
1 2 3 4 5 6 7 8
server { listen 80; server_name test.llzdsec.com; location / { proxy_pass http://update.llzdsec.com:8088; } }
BASH
1
systemctl enable nginx -now