+ -
当前位置:首页 → 问答吧 → 纯分享: Raspberry Pi 当作Proxy伺服器 (...

纯分享: Raspberry Pi 当作Proxy伺服器 (...

时间:2013-05-09

来源:互联网

[警告] 要设定的注意一下:
我才开没两天,就被人家连去刷Goolge,
太可怕了,这社会真黑...
目前已经研究好了密码验证方式,
虽然还有点小地方需要改良,
但是基本上已经可以不会被当作DDoS僵尸,
文末新增,快去设定吧!


相信不少人都看过这篇吧?
我自己用起来感觉也颇好,
可是就是官方代理常常断...
想说自己来架设一个伺服器好了(又刚好有树莓派),
所以就出现这篇啦~(纯分享,技术魔人别来,我会秒输...)

首先要先有台Raspberry Pi,





然后记忆卡刷上OS后就可以开始了,
如果有买的人应该都知道怎魔做吧?
不过还是放上简单教学:
http://life-of-raspberrypi.blogspot.tw/2013/01/raspberry-pi-sd-24-windows.html
直接照这样做就好了,最后记得卡片要插回主机。

网路线和电源都插上后,
接下来检查IP位置:



我是使用ASUS RT-N10+,
现在路由器和分享器应该都有这个功能,
直接找到内网IP。



系统预设SSH是开启的,直接连线去~
(这边使用的是PieTTY,网路上找一下就有了,也可以用类似软体)



帐号密码预设是 pi / raspberry

输入 sudo raspi-config 后稍微设定一下再继续。



expand_rootfs:这个是把可使用空间扩大到最大。
change_pass:修改密码。
change_locale:修改地区。
change_timezone:修改时区。
memory_split:修改记忆体分割。(我这边是只给16M)
overclock:超频选项。(我选Turbo)
update:更新 raspi-config 工具。(给他跑一下)

大概动这几个就好,设定完重开机一下。

之后就是更新和安装的指令要打。

sudo apt-get update
sudo apt-get upgrade
sudo apt-get install squid3

OK,更新好,架设代理伺服器的软体也装了,开始设定。

输入 sudo nano /etc/squid3/squid.conf
准备修改设定值,我是用最简单的,也就是都"开放所有连线",
之后可能再做安全的设定(我自己也尚未弄好,所以先不谈)。



下方有操作这个编辑器的方式("^"是指Ctrl键)。
用^w 来寻找一下文串:
---------------------------------------------
# from where browsing should be allowed
http_access deny all

# And finally deny all other access to this proxy
http_access deny all

# TAG: adapted_http_access
---------------------------------------------

之后只要将deny all改成allow all ,
再储存(^X 再按 y 再按 enter),
最后重新启动Squid3即可,
使用sudo service squid3 restart 。

这时候就可以先测试是否成功,
Proxy的设定是 Raspberry Pi的IP + 端口 3128 。
如果都无误再来就是让他从手机也连上。

首先要说一件是,
每个人用的AP可能不同,但设定方法大同小异,
我自己是两层的状况,所以设定完RT-N10+后,
还要去设定中华的小乌龟。



好了,我在RT-N10+上使用的是DMZ(虚拟非军事区)指向,
直接打上刚刚Raspberry Pi的IP即可。

接下来换小乌龟。



用 NAT - PortForwarding ,
输入刚刚RT-N10+的IP。



好了,都输入完成就可以开始享受稳定的手机网路了,
就按照最前面那篇把你的真正IP和端口3128打入。

顺便附上可以查看资料存取的指令:
sudo tail -f /var/log/squid3/access.log

至於Squid的详细设定可以参考:
http://linux.vbird.org/linux_server/0420squid.php#server_acl

而如果是动态IP需要更新位置的话也有办法:
http://www.raspberrypi.org/phpBB3/viewtopic.php?f=36&t=21566
它是使用No-ip来更新IP的,
不过目前我端口方面还没解决,
所以还在研究也不多说明。

至於其他Linux电脑如果也要使用Squid,
也可以参照我的步骤,
指令大多是通用的,设定党应该是完全依样(?)。

如果有人可以分享或是补充也麻烦告诉我,
但是技术魔人就请高抬贵手了,
真的,拜托,感恩。

文末附上官方的网址:
http://www.raspberrypi.org/
如果要购买现在已经轻松了,
不用抢,不用到其他国外网站买。
http://www.raspberrypi.com.tw/
台湾官方授权的通路(我也是在这买的),
不过似乎算起来这边买比较贵,
但是台湾的货是现成,而且还是UK版,
相当初我还是用同样的价钱买了个中国版的...

之听说01只能PO三星的网站?
有点担心我PO会被删文...

--------------5/13补充--------------

先放上密码认证的方法:
(简单指令不放图了)
这边我是用mini-httpd这个套件完成的,
轻量级,而且功能也够。


安装指令:
sudo apt-get install mini-httpd

建立密码档:
sudo htpasswd -c /usr/lib/squid3/passwd pi (pi是帐号名称)
打完这个指令后,
如果没错的话他会要你打密码(打两次),
接著没有出现错误指令那就往下操作。


接著改Squid3的设定档
nano /etc/squid3/squid.conf

先用搜索功能(^W 找到这个地方)
---------------------------------------------
##auth_param basic program <uncomment and complete this line>
##auth_param basic children 5
##auth_param basic realm Squid proxy-caching web server
##auth_param basic credentialsttl 2 hours
#Default:
# none
---------------------------------------------
就在# none 下方空格后放上
auth_param basic program /usr/lib/squid3/ncsa_auth /usr/lib/squid3 (第二个路径是密码档路径)
auth_param basic children 5
auth_param basic realm Welcome to XXX's proxy-only web server (realm后面可以自己打)
---------------------------------------------
然后再去改一个地方,

# from where browsing should be allowed
acl squid_user proxy_auth REQUIRED (REQUIRED这个也可以直接改成帐号名称)
http_access allow squid_user

# And finally deny all other access to this proxy
acl squid_user proxy_auth pi
http_access allow squid_user

# TAG: adapted_http_access

改成上面这样,
再储存(^X 再按 y 再按 enter)。

如果没有错误的话,在连线过去的时候就会要求密码了。
最后附上监听伺服器通讯用的指令(我就是靠这个知道被当跳板):
sudo tail -f /var/log/squid3/access.log
(按^z 可以结束监听)

在这次设定中还有个小插曲,
因为我放置密码档的位置弄错,
导致直接把系统的帐号资讯写掉了,
最后只能从刷 :P
不过上面的设定是安全的(一般来说)。

目前似乎有点小问题,但是基本上不影响。
详细设定可以去这里参考设定(17.4.3):
http://linux.vbird.org/linux_server/0420squid.php#server_acl

--------------6/6补充--------------

我直接把最初的树莓派照片改上了风扇
整个是依照
http://jimmyeestudio.blogspot.tw/2013/04/raspberry-pi-fan.html
这边的图(配线),一般来说就照图上面的正负接上(刚好红黑颜色也对)


我是用5V 0.7W的风扇,整个很安静,温度方面是直接降10度(约36左右),
不过这个效果和我有加上散热片,还有压克力盒装有关。
最后转上显示温度的指令
sudo vcgencmd measure_temp

有了散热就可以安心超频,增加更多功呢了 :)

满多人说只要把端口改成非预设,
就不容易被使用,
我也不太确定是否真的有效,
我自己是固定IP,又之前有被拿来攻击Google,
所以就不试了,如果有人成功都没有被盗用,
那就说一下吧~
----------------6/6 修改端口------------------
改Squid3的设定档
nano /etc/squid3/squid.conf
先用搜索功能(^W 找到这个地方)
http_port 3128
把预设的3128改成自己要的
储存(^X 再按 y 再按 enter)

记住 分享器和小乌龟都要改喔
我那边是写只开放3128
改成自己的就可以了
---------------------------------------------

作者: 电脑学徒-小小   发布时间: 2013-05-09


其实昨天看完大大的文章就已经手滑订了一台Raspberry Pi
今天才发现自己对linux不太熟
谢谢大大的分享

作者: sfilc   发布时间: 2013-05-09

sfilc wrote:
其实昨天看完大大的文...

好你的手滑www
那我就当它的作售后服务了(?
你是去官方买的吧?
真好现在是英国货,
价钱还一样...我买到中国版 QAQ
而且现在定还有好多东西可以加购...

你看我的步骤,
如果有需要详细说明就提出,
我补充给你,
另外,其实Squid也拥有快取的能力,
我自己家里的网路是50M,
不太容易壅塞,所以我没用,
当然,你如果想要这个功能,
可以直接去
http://linux.vbird.org/linux_server/0420squid.php#server_acl
寻找进阶设定,或是问我。

偷偷告诉你......
我完全没学过Linux......
跟著步骤走,保证轻松搞定~
只是该死的手滑真好 =3=
当初我还必须再三考虑才能买哩

对了,有问题多截图,我比较能明白。

作者: 电脑学徒-小小   发布时间: 2013-05-09

可直接挂VPN吗,这样连代理都省下来了

作者: qqq2247495   发布时间: 2013-05-09


qqq2247495 wrote:
可直接挂VPN吗,这...

如果你要问的是"mCool是否可以直接挂VPN",
那我无法回答,因为没有VPN可以供测试,
建议你直接去讨论mCool的文串上发问。

作者: 电脑学徒-小小   发布时间: 2013-05-09

大大,好东西,谢谢你了。有空能否补上proxy 安全性设定?感谢你

作者: dragon0312   发布时间: 2013-05-11


dragon0312 wrote:
大大,好东西,谢谢你...

安全设定已补上,
只是简单的认证而已,不过可以有效阻挡,
更多功能可以Google,或是参考我给的网站。

谢谢收看,有问题就直接问吧!

作者: 电脑学徒-小小   发布时间: 2013-05-13

感谢您的分享!
请问若以这样的方式架设出来的Proxy server
使用mcool的emome APN
ANDROID手机是否需要ROOT? 或安装特殊的软体?

这样透过自己架设的PROXY SERVER,所有的服务都可以正常使用吗?
(EX: google map, google play, facebook, line, whatsAPP)
谢谢!


小弟目前有在考虑这样的PROXY, 刚刚在自己的电脑上试装了ccproxy
发现google play APP打不开,不知道这种方式架设的Proxy 会不会有相同的问题?

另外, 若要让手机上所有的google都正常使用,这个系统的Squid proxy需要特别为特定服务 指定port吗?

作者: yrend   发布时间: 2013-05-16


yrend wrote:
ccproxy

我不清楚ccproxy是甚么样的状况,
而我目前手机是有Root的,
但是在APN设定似乎不需要Root。

你问的服务我只有whatsapp没有使用,
但是其他服务都完美运行。

至於port部份我是用预设的3128,
但是有用密码验证(文末教学),
因为公开的Proxy Server是很容易被当跳板的,
我设置好两天内疚被人家拿去刷Google搜索,
导致要打验证码这种惨况。

不过目前还有个小问题,
密码验证的部分似乎没办法直接在APN那边设定好,
也就是说我使用浏览器时他会跳出来问我密码,
至於其他应用就不会跳出,但也不能使用,
因此我找到一种解决方案(要Root),
一款免费的软体:ProxyDroid,
他可以自动启动,自动代理登入,
但是前提要Root,而且会在后台运行。

如果以上状况可以接受的话,
欢迎自己架设代理伺服器,
目前用得又快又顺,
而且未来还可以附加FTP Server,
来远端存取资料。

另外提醒你一件事,
我自己是固定IP,所以就没再继续研究了。
如果你是浮动IP,那可能就要对这方面设定一下。

作者: 电脑学徒-小小   发布时间: 2013-05-17

感谢您的回覆,
那么..就目前来说..
要透过自架PROXY来上网的话,
手机ROOT是必要的了...(必须要装自动Proxy认证软体 =>ProxyDroid)

由於小弟的手机是HTC的NEW ONE..才刚入手..
如果ROOT马上就没有保固...
所以可能要再等看看,有没有在Proxy Server端的解法了....

印象中挂mcool的Proxy..
对於其他的服务,也是会自动认证...
(或者是说..mcool的proxy不需要设密码 所以没有这样的问题?)
不知道这个问题有没有办法解决..

或者在Proxy server端,看看是否有除了帐号密码以外的辨识方式
来过滤到其他的恶意使用者..

之前架设的ccproxy..
手机连上之后, 也是需要开浏览器输入帐号密码后 才可以连上网页浏览..

作者: yrend   发布时间: 2013-05-17


yrend wrote:
感谢您的回覆,那么....

官方应该是没有认证,
目前我也正在寻找解决方法,
我试过APN这个似乎是不能自动登入,
也许是我的比较不同(MIUI),
恶意连线者最好的方法就是设密码,
似乎用特殊端口也可以(不确定)。

Root会失去保固是在"官方发现的情况下",
老实说我觉得手机实在不容易坏(除非暴力使用),
在正常情况下,无论是刷机失败,还是手机故障都属於罕见,
对於一个使用者来说放弃root使用权限实在是个悲剧,
其实使用一段时间后,都没问题(不是机王),
那再来root。

不然就是寻找替代方法:
如:不用root的代理程式,或是修改伺服器端等。

作者: 电脑学徒-小小   发布时间: 2013-05-17

电脑学徒-小小 wrote:
官方应该是没有认证,...

有认证的代理,没root前只有浏览器认证成功连线,其他App都失败。
APN输入帐密没用,一定要透过浏览器认证。
这个问题很讨厌,我新手机还不想root :-(

我提供一个想法,不知可行与否? (5/18 4:00 pm 失败)
reference : http://stackoverflow.com/questions/14518213/enable-mac-address-filtering-in-squid

http://www.reddit.com/r/linux/comments/1cyfwl/using_squid_to_modify_hosts_based_on_mac_address/

用限制Mac address方式连线,取代认证,除非有人伪造网卡位置才能连线(伪造不难,刷过dropbox的应该都会,但要知道正确的位置就要时间),使用上不必额外输入帐密认证,Mac address正确就连线成功,少了输入帐密步骤,其他App应该能顺利连线。

但我不知raspberry pi的squid3在编译时有没有开启arp参数,通常没有开启,用-v去看有无 –enable-arp-acl,若没开启就得自己编,以pi的cpu会耗不少时间,用电脑交叉编译很快,这个Google找的到。

大概是这样


====5/18 4:00 pm 测试失败@@====
1. raspberry pi的squid3有开启arp参数===>通过!

2. 3G网路不是IEEE 802协定,没有Mac address===>无法以Mac address限制
MAC address is specific to network technologies that implement the IEEE 802 standard, such as ethernet. 3G is not an IEEE 802 network, so MAC address really doesnt apply.
ref: http://stackoverflow.com/questions/6232556/do-android-phones-have-a-mac-address-when-connected-to-3g

作者: yancheng.lin   发布时间: 2013-05-18

若使用限制MAC ADDRESS的方式来连线,
手机的MAC 经过了网路上那么多台router才连到我们自己架的Proxy Server
这样是否仍然可以利用MAC来辨识身分?

或者这个方法..是只认定
中华的某几个gateway的MAC来作为一定程度的安全辨识?

作者: yrend   发布时间: 2013-05-18


yancheng.lin wrote:
有认证的代理,没ro...

不得不说,看到你提出这个方式,
然后否定,真的很可惜,
感觉是很好的方向。

老实说我完全没学过相关的东西,
也无法对这些做甚么想法或指教。

不过我觉得可以从APN的设定开始,
像是PAP和CHAP认证方式,
感觉似乎可以从这边来?

作者: 电脑学徒-小小   发布时间: 2013-05-19

HTC 手机root须经由官方的软体S-off 再 root
所以一定会被官方发现..> <"

因为目前手机如果不root的话,
无法使用帐号/密码的认证方式来达到安全性的需求,
小弟想到一个作法,不知可不可行..

1. Proxy server不设定帐号密码。(这样所有的app都可以pass过去)
2. 建立一个IP TABLE
猜测mcool APN 行动网路的IP数量应该有个范围,
所以在Proxy Server建立一个 信任的IP TABLE,
信任此TABLE 的IP连入。 (第一道关卡)
(此部分需要花费一定的时间来累积)
3. 使用特殊的port来连入 (第二道关卡)

虽然没有帐号密码的绝对安全保护,
但是最少可以大大减少被恶意使用的机会!

小弟最近也弄了一台raspberry pi
但因为对linux like的系统很生疏
没有办法提供实际的操作方式...

作者: yrend   发布时间: 2013-05-21


yrend wrote:
HTC 手机root...

我想也许可以喔,
会故意拿人家Porxy Server当作攻击跳板的,
感觉应该都是电脑(大范围的测试IP和端口这样),
如果是emome网路的区段,也许就不会有问题了。

不知道我这想法对不对,
不过我可能还是会用帐密认证的方式,
毕竟有M1 Plus是有官方root的,
所以没这疑虑,
但是还是会持续寻找更好的方法,
感谢你提供想法。

作者: 电脑学徒-小小   发布时间: 2013-05-21

如果不想Root的话可以改用openvpn

raspberry pi 是可以架设openvpn server

经过测试效果一样可以达到

作者: bob771025s00567   发布时间: 2013-05-21


bob771025s00567 wrote:
如果不想Root的话...

好的,
这位大大提出了一个十分好的解决方法,
我自己是有root的,
所以就不尝试了,
不过确实是不用root可以解决。

但是以目前的状况,
如果mCool网路要分享,
用Proxy加上密码验证是比较理想的,
因为分享的网路只要打密码即可,
反之如果用OpenVPN就必须要用客户端,
不太方便。

作者: 电脑学徒-小小   发布时间: 2013-05-21

建议Port不要3128,也不要用8080等等的,有心人扫到这两个Port有开就会拿去干嘛了...

建议设个只有你自己知道的Port

作者: 乐 ids93216   发布时间: 2013-05-21


乐 ids93216 wrote:
建议Port不要31...

这个自然...
不过就算用其他的也会被扫到吧?
感觉都很不安全 :(
还是加密码验证最好,
只是...

作者: 电脑学徒-小小   发布时间: 2013-05-21

刚试了一下,的确是会卡在帐密那边

只有brower有通,facebook之类的AP都不通,若拿掉 密码限制就全部可通

架 openvpn 看来是不错的选择,因为 android 上面的 openvpn 使用上还蛮方便


====
刚试了一下,android mcool 不设 proxy 连openvpn看起来是ok的
至於有没有比较快,我实在感受不出来..

作者: ericwang1017   发布时间: 2013-05-21


ericwang1017 wrote:
刚试了一下,的确是会...

我自己是使用Proxy加密码,
本来以为APN设定里的"使用者名称"和"密码"
可以拿来验证Proxy,但是却是不行的,
而且只有浏览器能跳出验证框,
因此我用ProxyDroid这个软体(要root)来代理,
所以APN设定也是无代理的,
用这个方法就不会有问题。
虽然相较起来要Root,所以OpenVPN似乎比较方便,
但是如果要分享网路就比较不方便,
毕竟要用客户端,
我自己分享的终端是iDevice,
似乎iOS系统支持在应用程式里跳出验证框,
所以就可以不需要客户端,
当然如果也是分享给Android设备依然会有问题。

作者: 电脑学徒-小小   发布时间: 2013-05-22

可否请教各位有经验的朋友
在Raspberry Pi要如何架设openvpn server?
以及在android手机端应该要装哪套APP 以及如何设定? (OPENVPN在google PLAY有好多个@@")

小弟目前找到的教学如下连结,
http://www.shumeipai.net/thread-578-1-1.html
似乎安装后要将凭证拷到手机上,但在手机上却打不开凭证。
不知道是哪里错了...?





作者: yrend   发布时间: 2013-05-23


yrend wrote:
可否请教各位有经验的...

这篇可以看看,应该可以比拟


android 上用 "openvpn for android" 是比较好的

作者: ericwang1017   发布时间: 2013-05-24


yrend wrote:
感谢您的回覆,那么....不需要密码的proxy不会有抓不到的问题

安全性考量的话,你可以设定奇怪的port

让别人猜不到

作者: forumstartw   发布时间: 2013-05-29


forumstartw wrote:
不需要密码的prox...

前些时候有点忙没时间研究
设定奇怪端口是否能100%防御
我是有点担心 固定IP很悲剧的
如果是浮动IP 用DDNS连线
起码IP改了就没事了

我想从限制连线IP来进行
也就是端口+限制成种花电信的IP (没代理连线时

这样应该就不会有问题了
晚点在把结果放上

作者: 电脑学徒-小小   发布时间: 2013-06-06

感谢各位网友的分享,若以安全性来说
OPENVPN可能是最安全的选择,
不过小弟这几天来的尝试,
到目前为止还没有办法在Raspberry Pi上
让openvpn运作成功...
不知道有没有前辈,可以提供正确的做法造福大家?

另外设定特别的PORT + 限定中华电信的mcool ip 这个做法
理论上应该可以剃除掉大多数有问题的恶意使用者
但可能不包括中僵尸 或是 被当跳板的电脑...
可能还是要注意一下...

作者: yrend   发布时间: 2013-06-06

虽然我没有用mCool现在用mPro比较适合我用~个人认为...



我ASUS N13U刷DD-WRT接上USB
内键的VPN PPTP,OpenVPN Server没用过。
内键还有ProFTPd

之后另外安装lighttpd+php+mysql
另外就是Squid3 Proxy Server

我这边ipkg没有ncsa可以用,又不想装gcc。所以认证放弃。

但DD-WRT有支援DDNS我用no-ip更新浮动IP。

认真说扫PORT,1~65535扫完就知道有甚么服务在跑。

目前跑这些服务记忆体胜不多,那台IP分享器总记忆体64MB

作者: hollowaysxp   发布时间: 2013-06-07

现在才知道还有这种东西,不知道安全性如何会不会很容易被入侵?
要设奇怪的port是指xxx.xxx.xxx.xxx随意填吗?

作者: wanpupula   发布时间: 2013-06-08


wanpupula wrote:
现在才知道还有这种东...


Port是介於1~65535得一段数字
这边有些介绍
像是Squid的预设就是3128
http://www.dotblogs.com.tw/ghoseliang/archive/2013/02/20/91159.aspx

ASUS路由真的方便
可以刷DD-WRT
又可以少一台机器
我自己的是RT N10+
因为怕出状况 而且加上已经有树莓派了
所以就不试

如果再没有验证的情况下
Port被扫完就悲剧了
(之前被搞过很惨

已知的是3G网路没办法已MAC地址验证
Port虽然可改 但是安全堪忧
目前我只能想到用Port和限制连线IP(仅允许中华电信特定网段连入
不过似乎mCool可能的IP很广...
又变成无解了

所以目前有Root的用户就使用ncsa验证
然后手机端上使用ProxyDroid
没有Root的只能用OpenVPN

作者: 电脑学徒-小小   发布时间: 2013-06-08

热门下载

更多