使用Ubuntu搭建代理服务器


写在前面

今天闲来无事,把最近搞好的django项目部署到了虚拟机里面,为什么没有放到线上呢,服务器资源不够呀,目前我那可爱的服务器已经为我运行了三个站点,再多的话俺怕它受不鸟。回归正题,部署完成后我照旧在windows下进行访问,一开始没有成功,忘了遇到啥问题了,应该是nginx没有配置好,解决的过程中我打开了一次Ubuntu的本地hosts,看到我以前自定义的两个域名(都转到了127.0.0.1,方便测试nginx根据server name转发请求),此时我陷入了深深的沉思,我能不能把虚拟机作为代理服务器,让windows也能通过自定义域名访问本地web项目呢?

解决问题

说干就干,把web项目搞定之后我就开始搞,在百度上一通搜索,最终敲定了两个方案,tinyproxy和dante server。这里分别介绍一下两者用法。

tinyproxy

#安装服务
sudo apt-get install tinyproxy
#修改配置文件
vim /etc/tinyproxy/tinyproxy.conf
#主要修改以下两项
port 8888 #默认端口,可以修改成你要使用的端口
Allow 127.0.0.1 #允许访问的IP,添加你的IP进去,注意让其单独成行,不要空格分割
#启动
sudo service tinyproxy start
#重启
sudo service tinyproxy restart
#停止
sudo service tinyproxy stop

然后修改windows代理就可以了,如果连接失败的话,可以检查下虚拟机有没有开放对应的端口。

dante

上述方法虽然好用,但是不提供socks5协议(可能有但是我没有找到),又百度一遍找到了dante server这个小可爱。 首先还是安装服务:

sudo apt-get install dante-server

备份原始配置文件(就是改个名字)

sudo mv /etc/danted.conf /etc/danted.conf.back

创建新的配置文件

sudo vim /etc/danted.conf

贴入以下内容(根据需要进行更改)

#此为匿名登录配置信息
#日志记录
logoutput: /var/log/danted.log
#把汉字改成你的IP,port后面修改成你要使用的端口
internal: 你的内网IP地址 port = 1080
external: 你的内网IP地址
#如果使用IP不行的话可以试试网卡,指定端口就可以了
internal: eth0 port = 1080
external: eth0
#验证方式,none代表匿名
method: none
user.privileged: proxy
user.notprivileged: nobody
user.libwrap: nobody
#表示能接入的ip规则,可以限定连接ip
client pass {
from: 0.0.0.0/0 to: 0.0.0.0/0
log: connect disconnect
}

pass {
from: 0.0.0.0/0 to: 0.0.0.0/0 port gt 1023
command: bind
log: connect disconnect
}
pass {
from: 0.0.0.0/0 to: 0.0.0.0/0
command: connect udpassociate
log: connect disconnect
}
block {
from: 0.0.0.0/0 to: 0.0.0.0/0
log: connect error
}

如果要使用登录验证,首先要创建一个不能login的用户,此用户不能使用服务器上任何服务,但可以用于验证代理服务器,创建方式如下:

#创建用户,改成你要使用的用户名
useradd 用户名
#初始化密码,不要创建完就忘了。。
passwd 用户名
#验证密码后修改用户配置文件
sudo vim /etc/passwd
一般来说新创建的用户都在最后一行,将该用户的shell改成/bin/false,wq退出

此为需要登录验证的配置信息

logoutput: /var/log/danted.log
internal: 你的内网IP地址 port = 你的端口
external: 你的内网IP地址
#如果使用IP不行的话试试网卡
#internal: eth0 port = 1080
#external: eth0
method: username
user.privileged: root
user.notprivileged: 刚才创建的用户名(注意前面的空格)
user.libwrap: nobody
client pass {
from: 0.0.0.0/0 to: 0.0.0.0/0
log: connect disconnect
}
pass {
        from: 0.0.0.0/0 to: 0.0.0.0/0
        command: bind connect udpassociate
        log: error
        method: username
}
block {
from: 0.0.0.0/0 to: 0.0.0.0/0
log: connect error
}

保存配置文件后执行以下命令:

#启动dante服务
sudo /etc/init.d/danted start
#查看运行状态
sudo netstat -anp | grep 你的端口
#或者是以下命令
sudo service dante start
sudo lsof -i:你的端口

有输出的话应该就是成功了,开始愉快的使用代理吧~

写在后面

虽然代理服务器是配置成功了,但是我在windows下访问自定义域名并没有跳到我的web项目,纳闷,不知道哪里做的不对T_T。