如何快速搭建服务器的IP隧道
首先无论是在Linux服务器上还是windows上搭建隧道ip,都需要配置好 redis、python3、OpenResty。
redis配置:
最前面的可以看这篇文章
Linux搭建redis单机 - 仅此而已-远方 - 博客园
然后配置一下redis.conf ,允许外网访问redis。
1、注释绑定的主机地址
# bind 127.0.0.1
2、修改redis的守护进程为yes,不启用
daemonize yes
3、修改redis的保护模式为no,不启用
protected-mode no
修改完之后就重启一下。
Nginx配置
首先找个教程,网上一大把,把nginx安装好
安装好之后修改nginx.conf的内容
原先里面的内容都不要,全部删掉,直接替换成下面这个,修改里面需要改的内容,如logs地址、redis地址密码等等,其余的不用改。
worker_processes 16; #nginx worker 数量
error_log /usr/local/openresty/nginx/logs/error.log; #指定错误日志文件路径 这里要根据你自己的路径来设置
events {worker_connections 1024;
}
stream {## TCP 代理日志格式定义log_format tcp_proxy '$remote_addr [$time_local] ''$protocol $status $bytes_sent $bytes_received ''$session_time "$upstream_addr" ''"$upstream_bytes_sent" "$upstream_bytes_received" "$upstream_connect_time"';## TCP 代理日志配置access_log /usr/local/openresty/nginx/logs/access.log tcp_proxy; #这里要根据你自己的路径来设置open_log_file_cache off;## TCP 代理配置upstream backend{server 127.0.0.2:1101;# 这里不用改balancer_by_lua_block {-- 初始化balancerlocal balancer = require "ngx.balancer"local host = ""local port = 0host = ngx.ctx.proxy_hostport = ngx.ctx.proxy_port-- 设置 balancerlocal ok, err = balancer.set_current_peer(host, port)if not ok thenngx.log(ngx.ERR, "failed to set the peer: ", err)end}}server {preread_by_lua_block{local redis = require("resty.redis")--创建实例local redis_instance = redis:new()--设置超时(毫秒)redis_instance:set_timeout(3000)--建立连接,请在这里配置Redis 的 IP 地址、端口号、密码和用到的 Key#redis需要改一下,没有密码就把下面说的那行删掉就行了local rhost = "123.45.67.89"local rport = 6739local rpass = "abcdefg"local rkey = "proxy:pool"local ok, err = redis_instance:connect(rhost, rport)ngx.log(ngx.ERR, "1111111 ", ok, " ", err)-- 如果没有密码,移除下面这一行local res, err = redis_instance:auth(rpass)local res, err = redis_instance:hkeys(rkey)if not res thenngx.log(ngx.ERR,"res num error : ", err)return redis_instance:close()endmath.randomseed(tostring(ngx.now()):reverse():sub(1, 6))local proxy = res[math.random(#res)]local colon_index = string.find(proxy, ":")local proxy_ip = string.sub(proxy, 1, colon_index - 1)local proxy_port = string.sub(proxy, colon_index + 1)ngx.log(ngx.ERR,"redis data = ", proxy_ip, ":", proxy_port);ngx.ctx.proxy_host = proxy_ipngx.ctx.proxy_port = proxy_portredis_instance:close()}# 下面是本机的端口,也就是爬虫固定写死的端口#端口可以改一下,我是改成了5位数listen 0.0.0.0:9976; #监听本机地址和端口,当使用keeplived的情况下使用keeplived VIPproxy_connect_timeout 3s;proxy_timeout 10s;proxy_pass backend; #这里填写对端的地址}
}
改完后启动一下nginx,这一块就ok了
往redis里添加Ip
这个代码里面基本上不用改,如果hset报错说参数异常,就把hset改成hmset就行了。
"""
ProxyManager.py
~~~~~~~~~~~~~~~~~~~~~
简易代理池管理工具,直接从URL中读取所有
最新的代理,并写入Redis。
"""
import yaml
import time
import json
import redis
import datetime
import requests
class ProxyManager:def __init__(self):self.config = self.read_config()self.redis_config = self.config['redis']self.client = redis.Redis(host=self.redis_config['host'],password=self.redis_config['password'],port=self.redis_config['port'])self.instance_dict = {}def read_config(self):with open('config.yaml') as f:config = yaml.safe_load(f.read())return configdef read_ip(self):resp = requests.get(self.config['proxy']).textif '{' in resp:return []proxy_list = resp.split()return proxy_listdef delete_ip(self, live_ips, pool_ips):ip_to_removed = set(pool_ips) - set(live_ips)if ip_to_removed:print('ip to be removed:', ip_to_removed)self.client.hdel(self.redis_config['key'], *list(ip_to_removed))def add_new_ips(self, live_ips, pool_ips):ip_to_add = set(live_ips) - set(pool_ips)if ip_to_add:print('ip to add:', ip_to_add)ips = {}for ip in ip_to_add:ips[ip] = json.dumps({'private_ip': ip,'ts': datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')})self.client.hset(self.redis_config['key'], mapping=ips)def run(self):while True:live_ips = self.read_ip()pool_ips = [x.decode() for x in self.client.hgetall(self.redis_config['key'])]self.delete_ip(live_ips, pool_ips)self.add_new_ips(live_ips, pool_ips)time.sleep(40)
if __name__ == '__main__':manager = ProxyManager()manager.run()
存IP配置文档
有一点,键: 值 中间一点要有个空格,不要就会被识别为一整个字符串。
redis:host: redis IP地址port: 6379password: 密码,没有随便写点啥或者删掉就行了key: 'proxy:pool'
proxy:'这里写去ip代理的url'
到这里配置完之后基本上是没有什么问题了。
欢迎随时技术交流与探讨,wx:zxc648287945
如何快速搭建服务器的IP隧道相关推荐
- Python 3 怎么快速搭建服务器
Python 3 怎么快速搭建服务器 python 3 环境,我就不多说了 1.新建一个文件夹 2.放文件夹里一个 index.html 文件用来默认访问,不然会炸的 3.进入文件目录 4.执行以下命 ...
- 宝塔面板服务器ip地址修改_「网站」快速搭建服务器环境及网站
目录:「NAS」我的搭建NAS全过程 在文章开头我想说明的是,此文章中所使用的工具为 BT 面板即宝塔面板,适合小白使用 但是对于想要提升个人能力来说, BT 面板并不是一个好选择,而作为新手来说,可 ...
- linux中服务器之间的跳转,linux之***服务器间ip隧道跳转多ip路由走向分流(系真实案例)...
本文系统Centos6.0:这里的***服务以pptpd为例:其中底层涉及到pptpd+freeradius+mysql认证: 本文系真实案例:leader需求大多是这样的,节约成本还要达到所需要的效 ...
- 使用node.js快速搭建服务器(vscode版)
(1)下载⼀个node.js,⼀路next 直到提示安装成功 检测:打开终端,输⼊ node-v (终端就是下面直接拉上来) 提示这个即为下载成功 (2)打开编译器,打开终端,输⼊npm init 在 ...
- 微信小程序如何快速搭建服务器?
前言 有很多个人移动开发者都在问如何快速搭建服务端,供前端调用API使用?本文Joe大叔就介绍一个快速.简单.便携的方案给朋友们,我们接着往下看. 一.如何快速搭建服务端? 这里我们选择一个叫做Bm ...
- bitnami mysql_Bitnami 快速搭建服务器环境(Django)
Bitnami 提供集成式服务器环境安装包,可一键式搭建众多主流的网站.服务环境.如 LAMP.Drupal.Django 等.同时支持 Windows.Linux(如 Centos 和 ubuntu ...
- CentOS快速搭建服务器 超简单
一.购买腾讯云学生优惠服务器 https://cloud.tencent.com/act/campus?fromSource=gwzcw.594895.594895.594895 二.在电脑上安装XS ...
- Koa2快速搭建服务器
上手 新建文件夹初始化项目,命令行输入 npm init -y 安装koa,输入 npm i koa 在文件夹下新建app.js文件 app内容 // 1. 创建KOA的实例对象 const Koa ...
- 如何通过nodejs快速搭建一个服务器
在前端开发过程中,可能某些时候需要自己搭建一台服务器用于一些文件图片请求或者进行后端相关知识的学习.本文主要讲解如何通过nodejs进行一个基础服务器的搭建,包括如何将文件布置的服务器,以及基础接口的 ...
最新文章
- Linux16.04下配置Caffe,Pycaffe,matcaffe
- linux环境下用docker安装rabbitmq
- 一年几百亿的电费 中国移动再提5G功耗问题
- 关于C#异步编程的建议
- Lifewire文档阅读笔记-如何使用IP地址找对应的MAC地址
- RabbitMQ的Android端接收
- 蓝桥杯“基础练习: 十六进制转十进制
- Python编程入门教程
- vs2017编译x265源码
- 金蝶KIS/K3各版本下载地址
- TCP/IP详解 卷1:协议—概述
- 微信小程序ui框架 graceUI 使用半年评测
- python的文件操作:文件定位读写,重命名,删除等操作
- 宝塔linux面板ping网址找不到主机,云服务器安装宝塔面板后无法ping通ip地址问题的解决方法...
- 【taro】taro如何打开微信小程序
- 单页面系统知识点记录
- 产品概念之1/4:前言 —— 有必要这么学术吗?
- Java中的门面设计模式
- 历经三年制定,台积电透露半导体资安标准将在今年12月发布
- RocketyKerrigell(啄木鸟社区)