需求背景:
假设有如上图所示的问题场景, 办公电脑通过防火墙与互联网相连,防火墙被配置为仅允许DNS数据通过。在此场景下,办公电脑显然无法直接访问互联网。现在我们想做的是通过使用dns2tcp建立DNS隧道,使得办公电脑可以访问互联网。
实验环境:
内网环境:centos6.5-32bit
dns2tcp服务器:阿里云公网服务器centos6.8-32bit,120.25.xx.xx
dns2tcp分服务端与客户端,分别安装配置
配置DNS服务器域名
配置dns.test-domain.com–>指向公网服务器120.25.xx.xx
dns2tcp服务端:
(1)、需要安装dns2tcp服务端软件、dante socks代理软件;
(2)、安装dns2tcp:
上传dns2tcp源码到服务器;
cd dns2tcp目录
./configure
make && make install
(3)、配置dns2tcp
vi /etc/dns2tcpd.conf
listen = 0.0.0.0
port = 53
user = nobody
chroot = /tmp
domain = dns.test-domain.com
resources = socks:120.25.xx.xx:1080
(4)、安装dante1.4.2 socks代理软件
上传dante源码到服务器;
cd dante目录
./configure
make && make install
(5)、配置dante
vi /etc/dante.conf
logoutput: /var/log/sockd.log
internal: eth0 port = 1080
external: eth0
socksmethod:username none
user.privileged: root
user.unprivileged: nobody
extension: bind
client pass {
from: 0.0.0.0/0 to: 0.0.0.0/0
log: connect disconnect
}
socks pass {
from: 0.0.0.0/0 to: 0.0.0.0/0 port gt 1023
command: bind
log: connect disconnect
}
socks pass {
from: 0.0.0.0/0 to: 0.0.0.0/0
command: connect udpassociate
log: connect disconnect
}
socks block {
from: 0.0.0.0/0 to: 0.0.0.0/0
log: connect error
}
(6)、运行dante代理软件
/usr/local/sbin/sockd -f /etc/ dante.conf
如果启动失败,可以通过查看/var/log/sockd.log日志文件进一步排错;
(7)、运行dns2tcp服务端软件
dns2tcpd -f /etc/dns2tcpd.conf -F -d 2
dns2tcp客户端
(1)、安装运行客户端
dns2tcpc -r socks -z dns.test-domain.com dns.test-domain.com -l 16666 -d 2
(2)、启动firefox浏览器,菜单edit->preference->Advanced->Network->Setting
(3)、访问百度,搜索ip,即可看到访问ip记录的是服务器公网ip:120.25.xx.xx