如何用树莓派(Raspberry Pi)搭建Socks5代理服务器——danted!让你可以利用家中闲置宽带扩展ip 适合多开搬砖等多种玩法,当然闲置老款电脑也可以替代树莓派。
首先,但凡有IP需求的成年人父母在家或者其他亲属长辈家中都必备安装了宽带上网,这已经是当下时代家家户户必备条件了。这篇文章就是利用父母亲属家的宽带作为媒介,利用树莓派作为代理服务器实现免费代理ip。
小编是树莓派4b,理论上是所有版本型号的树莓派都可以尝试,树莓派zero貌似最低50多,电源是5v2a左右的具体视硬件版本,但耗电量也就是一部手机充电那样,真的是很省。如果说你不想购买硬件设备,也可以利用家中的老式台式机笔记本均可以。如果动手能力强也可以尝试香橙派等这些国产山寨机,都是可以的。
如果你有ip代理需求,且希望低成本且安全稳定的方案,那么废话不多说,开启我们的搭建教程:
树莓派系统选择 Raspbian Linux 操作系统(一般推荐选择稳定版,不要选择最新版,不推荐64位操作系统,因为镜像源不全。Ubuntu for Arm等其它系统也是可以的,就是需要变通一下命令!)
首先修改国内镜像源并更新,具体方法百度一下,
安装必备软件 输入以下指令:
备份dante-server默认的配置文件(好的操作习惯方便改错后进行恢复):
编辑配置文件小编习惯用nano,当然也可以使用vi或者vim:
配置匿名服务器可以直接复制以下内容替换(也可以用“#”注释掉之前的设置):
按Ctrl+O,回车保存,按Ctrl+X退出(vi编辑按ESC 输入:wq!回车即可)
配置安全认证,请修改method: username none 为method: username,或者method: pam,并修改user.notprivileged: nobody为user.notprivileged: 用户名。
username方式认证可以通过下面两条指令添加用户并为该用户指定密码。
最后输入指令启动服务
如果是树莓派用户启动danted服务时会报错:
Job for danted.service failed because the control process exited with error code.See "systemctl status danted.service" and "journalctl -xe" for details.
这里是因为danted会读取64位的库,而树莓派目前稳定运行的是32位,虽说有64位系统,但文章先头有讲到目前64位有很多不兼容的地方,当然32位下依然有解决方案:编辑danted.service服
如下图 将第19行ReadOnlyDirectories中的\lib64删除掉:
Ctrl+O,Ctrl+X保存后输入以下指令重载服务配置并启动
至此,免费ip代理服务器设置并启动成功了,把它连接好网线,并打开路由器或者光猫设置一下端口映射(前提是宽带有公网ip)映射端口1080(默认端口,如果想更换其他端口可以在上面的配置文档中进行修改),此时可以打开代理软件输入ip和端口及用户名密码尝试一下是否正常。
如果你有扩展ip的需求,又觉得单拉一根网线太破费的话,虽然可以考虑购买代理,但购买的ip大多也是共享ip且数据传送都承载在他人的服务器中显得格外不安全。于是小编想到了可以有效利用身边资源的方法扩展免费代理ip,本方法稳定且能保证数据安全。
注意事项
如何设置danted开机启动?
如何查看我的代理服务器是否搭建成功?
输入sudo systemctl status danted 查看服务运行状态,如果能看到绿色的runing字眼表示服务搭建成功且运行良好,如果是dead状态,那么问题出在你的配置文件,请重新检查你的ip或者网卡名是否正确。记住,修改配置文件后要输入sudo systemctl restart danted 命令进行danted服务重启方能生效。
扩展阅读-配置参数讲解
logoutput 关键字
定义了日志的输出位置,可以是syslog[/facility], stdout, stderr,一个指定文件,或者上述的组合。
internal关键字
定义了接受用户连接的IP地址,也可以写接口名称,如eth0
external关键字
定义了向外访问的IP地址,也可以写接口名称,如果有多个地址可以写多个。
method关键字
控制用户认证的方法,可以是以下之一或组合。
none 不需要认证
username 用户名密码
gssapi kerberos认证
rfc931 需要用户主机提供一个rfc931 reply,这个reply必须匹配一个/etc/passwd中的用户名
pam 通过PAM方式认证
badauth 通过BSD认证系统
user.privileged关键字
如果需要读取sockd.conf,写入sockd.pid等文件,或使用密码认证等需要特权的操作,则最好将此值设为root,如果不需要特权操作,则可以设成user.unprivileged相同的用户即可。
user.unprivileged关键字
用于运行dante进程的用户名
pass/block
定义rules,放行或者阻断。在dante的配置中,有两个层面的rules,一个是”client-rules”,另一个是”socks-rules”。
“client-rules”和”socks-rules”都由pass和block关键字组成,区别在于client-rules带有”client”前缀。
“client-rules”会首先被检查,用来判别用户是否可以与sockd通讯,这些规则工作在TCP层。
“socks-rules”是在通过client-rules判定,确认用户可以与sockd通讯以后,用来判别用户发送的连接的具体请求内容,并根据这些内容判定通过还是拒绝。
“client-rules”和”socks-rules”都遵循”first match is best match”原则,即如果有多条规则匹配,则第一个匹配指定client或socket的规则会被执行。
在以上两种rules中,针对IP地址这个值,还有一套可选的关键字,其中client-rules中的可选关键字是socks-rules中的一个子集。
对于每条规则,规则中所有的条件类关键字都会被检查 ,如果匹配用户请求,则所有的动作都会被执行。
IP地址中可选关键字主要包含两类:
条件类:
to
from
port
user
group
method
protocol
proxyprotocol
clientcompatibility
command
动作类:
bandwidth
libwrap
log
maxsessions
redirect
timeout.connect
timeout.negotiate
timeout.io
timeout.tcp_fin_wait
udp.portrange
原文链接:/moving_bricks/69/转载请注明出处