nanopi (SOCKS5+openvpn)  +  阿里ES(openvpn + socat)

构建内网代理。

需求:

公网 阿里ES服务器1台,内网nanopi1个(可连接公网服务器),

想从外网,访问内网的web服务器。

采用SOCKS5代理方式,由公网服务器将socks5流量转发给nanopi上的socks5服务器。

① 内网nanopi (openvpn client) 连接 公网 阿里ES服务器(openvpn server)

这样 阿里ES服务器可访问内网的nanopi。

(部署过程略)

② nanopi 安装并配置 danted   (SOCKS5代理服务器)

sudo apt-get install dante-server -y    (danted)

sudo apt-get install dnsutils           (nslookup)

sudo vim /etc/danted.conf  末尾添加配置:

# block any other http connects to the example.com domain.
#block {
# from: 0.0.0.0/0 to: .example.com port = http
# log: connect error
#} # everyone from our internal network, 10.0.0.0/8 is allowed to use
# tcp and udp for everything else.
#pass {
# from: 10.0.0.0/8 to: 0.0.0.0/0
# protocol: tcp udp
#} # last line, block everyone else. This is the default but if you provide
# one yourself you can specify your own logging/actions
#block {
# from: 0.0.0.0/0 to: 0.0.0.0/0
# log: connect error
#} # route all http connects via an upstream socks server, aka "server-chaining".
#route {
# from: 10.0.0.0/8 to: 0.0.0.0/0 port = http via: socks.example.net port = socks
#} #Where are we going to log all those useful error messages?
logoutput: /var/log/dante.log #What ip and port should Dante listen on,
# since I am only going to be using this via SSH
#I only want to allow connections over the loopback
internal: tun0 port = 1080
#这里 tun0 为面向openvpn流量的源网卡 #Bind to the eth0 interface
external: eth1
#这里eth1为 面向 内网的网卡 #Since I am only accepting connections over the loopback,
# the only people that COULD connect
# would already be authenticated,
# no need to have dante authenticate also
method: username none #Which unprivileged user will Dante impersonate if need-be?
user.notprivileged: nobody # Who can access this proxy?
# Accept only connections from the loopback, all ports
client pass {
# from: 127.0.0.0/8 port 1-65535 to: 0.0.0.0/0
from: 10.5.18.0/24 port 1-65535 to: 0.0.0.0/0
#这里是 tun0 网卡的网段。
} #Block all other connection attempts
client block {
from: 0.0.0.0/0 to: 0.0.0.0/0
log: connect error
} # Once connected, where can they go?
block {
from: 0.0.0.0/0 to: 127.0.0.0/8
log: connect error
} #Pass from the internal IP to anywhere
pass {
# from: 192.168.0.0/16 to: 0.0.0.0/0
from: 10.5.18.0/24 port 1-65535 to: 0.0.0.0/0
protocol: tcp udp
#这里是 tun0 网卡的网段。
} #Pass from the loopback going anywhere
pass {
#from: 127.0.0.0/8 to: 0.0.0.0/0
from: 127.0.0.0/8 port 1-65535 to: 0.0.0.0/0
protocol: tcp udp
} # Block everything else
block {
from: 0.0.0.0/0 to: 0.0.0.0/0
log: connect error
}

nanopi作为SOCKS5 代理,同时也要代理 dns解析,所以,nanopi 还需要设置 内网dns服务器。

dnsmasq 会和 手工指定的内网DNS冲突。(没搞定怎么解决,只能先禁用系统默认DNS )

这里需要屏蔽 NetworkManager.conf 里的 dnsmasq  :

然后,手工指定 内网dns server:

再  sudo service restart networking  使其(临时)生效。

期间还发现 内网网卡不会自动 up,需 sudo ifup eth1 使其UP。

然后,可通过

nslookup 内网域名

查看dns是否生效。

(另一种可能的配置, 不修改/etc/resolv.conf ,而是在 /etc/network/interfaces 中设置 eth1的nameserver 选项,ifup时使其自动生效。 但是这种还没试过!)

② 阿里ES服务器 通过 socat转发 tcp:11080 流量至 nanopi的 tcp:1080端口 (配置略)

阿里云服务器的安全管理设置里,要将 tcp:11080 端口放通。

③ 外网主机的浏览器配置 SOCKS5 代理,例如:

随后,浏览器启用代理模式,即可访问nanopi所在内网的 web服务器。

nanopi SOCKS5 代理的更多相关文章

  1. 利用proxychains在终端使用socks5代理

    最近用各种脚本下载东西的时候发现有的站点需要当地IP才能下,比如.....nico, youtube等: 所以就找了下能在终端用socks5代理的工具,最后找到了proxychains,从此再无压力= ...

  2. http,socks4,socks5代理的区别

    HTTP代理 能够代理客户机的HTTP访问,主要是代理浏览器访问网页,它的端口一般为80.8080.3128等: SOCKS代理 SOCKS代理与其他类型的代理不同,它只是简单地传递数据包,而并不关心 ...

  3. 浏览器插件使用socks5代理

    服务端测试,经常会遇到需要通过代理访问的情景,比如公司内网不能访问测试环境,这时可以通过socks5代理来解决. 一.使用Chrome浏览器访问   1. 下载并安装SwitchyOmega插件   ...

  4. 为 pip install 设置 socks5 代理

    参考 How to use pip with socks proxy? 为 pip install 设置 socks5 代理 设置方法: pip install pysocks pip install ...

  5. 让终端走socks5代理

    (2017.9.17更新) 方法1: 在终端中直接运行命令 1 export http_proxy=http://proxyAddress:port 这个办法的好处是简单直接,并且影响面很小(只对当前 ...

  6. 配置Linux客户端使用socks5代理上网

    配置Linux客户端使用socks5代理上网   背景 有访问google或者其他海外网站需求的同学可能大都用过或者听过ss,在Windows.Mac.Android.IOS都有现成可用的客户端来协助 ...

  7. [原创]K8飞刀20150725 支持SOCKS5代理(内网渗透)

    工具: K8飞刀编译: 自己查壳组织: K8搞基大队[K8team]作者: K8拉登哥哥博客: http://qqhack8.blog.163.com发布: 2015/7/26 3:41:11 简介: ...

  8. 代理服务器polipo;socks5代理转http代理

    安装: brew install polipo 使用: To have launchd start polipo now and restart at login: brew services sta ...

  9. http代理和SOCKS5代理的区别

    HTTP代理:能够代理客户机的HTTP访问,主要是代理浏览器访问网页,它的端口一般为80.8080.3128等:SOCKS代理:SOCKS代理与其他类型的代理不同,它只是简单地传递数据包,而并不关心是 ...

  10. socks5代理使用和安装配置

    Socks简介: 详情可以百度,不过我猜你对那一大堆术语也会像我一样觉得无语, 所以我觉得你可以简单理解为它可以比较完美代理http/ftp/smtp等多种协议的代理工具就行了. 其中最具有典型例子的 ...

随机推荐

  1. python爬虫(含scrapy)

    python爬虫 1.解析HTML: lxml 是一种python编写的库,可以迅速.灵活的处理xml和html 使用:根据版本的不同,有如下两种: 形式1: from lxml import etr ...

  2. FTP客户端c代码功能实现

    现在市面上有很多免费的FTP软件:如FileZilla ,那如果想自己在代码中实现与ftp服务器的上传下载文件该如何实现那? 本质上ftp协议就是TCP基础上建立的一种协议,具体如下. FTP 概述 ...

  3. 【USACO 2021 February Contest, Platinum】Problem 1 No Time to Dry

    \(\text{Solution}\) 一个点可与另一个颜色相同点同时涂色当且仅当两点间颜色都大于等于这两点 那么我们可以预处理一个点向左向右最远能到的位置,记为 \(l_i,r_i)\) 当 \(l ...

  4. 电子辅助的个体化严密控制策略比常规方法更有效地帮助早期RA实现全面控制病情[EULAR2015_THU0122]

    电子辅助的个体化严密控制策略比常规方法更有效地帮助早期RA实现全面控制病情 THU0122 A TAILORED TELEMONITORING TIGHT CONTROL STRATEGY FOR P ...

  5. Cesium渲染模块之VAO

    1. 引言 Cesium是一款三维地球和地图可视化开源JavaScript库,使用WebGL来进行硬件加速图形,使用时不需要任何插件支持,基于Apache2.0许可的开源程序,可以免费用于商业和非商业 ...

  6. Vue学习笔记之计算属性、内容分发、自定义事件

    1. 计算属性 计算属性的重点突出在属性两个字上(属性是名词),首先它是个属性其次这个属性有计算的能力(计算是动词),这里的计算就是个函数:简单点说,它就是一个能够将计算结果缓存起来的属性(将行为转化 ...

  7. Python实战项目6-后端多方式登录接口/手机登录接口

    为开源项目共享代码 步骤: 1先fork开源项目 2clone下来,修改代码,进行提交 3提交pr,等作者同意 Pycharm 使用Git 右键文件会列出Git命令 登录注册功能分析 多方式登录接口: ...

  8. 【面试题】JS 中这些继承方式你知道吗?

    携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第 29 天,点击查看活动详情 问题描述 继承 是基于面向对象的,使用 继承 可以让我们更好的复用以前开发的代码,缩短开发的周期.提 ...

  9. python获取某一年的所有节假日

    注:chinese_calander库需要每年手动更新一次 import datetime import chinese_calendar def get_holidays(year=None, in ...

  10. function的length,就是第一个具有默认值之前的参数个数。

    一个拥有 length 属性和若干索引属性的对象就可以被称为类数组对象,类数组对象和数组类似,但是不能调用数组的方法.常见的类数组对象有 arguments 和 DOM 方法的返回结果,还有一个函数也 ...