利用shadowsocks搭建局域网透明网关
作者:xucaibao1979 发布时间:2023-06-12 04:57:30
对于个人用户则是在手机或终端上安装ss,企业用户这样配置的话就比较麻烦,也不便于管理和维护。所以需要在网关处配置或内网的某台服务器上配置,并指向该网关。
思路:
1.dnsmasq+China DNS+ss-tunnel解决DNS污染的问题
2.ss-redir配合iptables和ipset来分流国内流量和国外流量,这样国内的网站直连,而国外网站则走ss-redir
网关方案解析:
1.dnsmasq主要起到DNS缓存作用,DNS请求会被发送给ChinaDNS,ChinaDNS会将请求同时发送给国内的DNS服务器和ss-tunnel,ss-tunnel负责relay给ss服务器,由于ss在国外不会被污染,因此ChinaDNS会得到两个回复并判断其结果是否被污染,最终dnsmasq将得到未被污染的DNS应答
2.iptables配合ipset负责区分国内和国外流量
系统:Ubuntu 20.0
安装配置dnsmasq
1. 安装dnsmasq
apt-get install dnsmasq
2. 修改配置文件 /etc/dnsmasq.conf
no-resolv
server=127.0.0.1#5354
3. 启动dnsmasq
service dnsmasq start
安装配置ChinaDNS
1. 参考ChinaDNS的官方文档
2. 下载ChinaDNS, 链接
wget -c https://github.com/shadowsocks/ChinaDNS/releases/download/1.3.2/chinadns-1.3.2.tar.gz
编译
tar -xvf chinadns-1.3.2.tar.gz && cd chinadns-1.3.2
./configure && make
src/chinadns -m -p 5353 -c chnroute.txt & ###只用于测试该chinadns是否可以启动
netstat -ntlpu ######查看启动的端口
3. 编译后,将会在src目录里生成可执行文件chinadns,将其拷贝至 /usr/local/bin里面
cp ./src/chinadns /usr/local/bin/
4. 在/etc/init.d/下创建名为chinadns的文件,将如下代码复制进去,记得执行sudo chmod +x /etc/init.d/chinadns
以使其可执行
#!/bin/sh
### BEGIN INIT INFO
# Provides: chinadns
# Required-Start: $network $local_fs $remote_fs $syslog
# Required-Stop: $remote_fs
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Start ChinaDNS at boot time
### END INIT INFO### Begin Deploy Path
# Put this file at /etc/init.d/
### End Deploy PathDAEMON=/usr/local/bin/chinadns
DESC=ChinaDNS
NAME=chinadns
PIDFILE=/var/run/$NAME.pidtest -x $DAEMON || exit 0case "$1" in
start)
echo -n "Starting $DESC: "
$DAEMON \
-c /etc/chinadns/chnroute.txt \
-m \
-p 5354 \
-s 114.114.114.114,127.0.0.1:5300 \
1> /var/log/$NAME.log \
2> /var/log/$NAME.err.log &
echo $! > $PIDFILE
echo "$NAME."
;;
stop)
echo -n "Stopping $DESC: "
kill `cat $PIDFILE`
rm -f $PIDFILE
echo "$NAME."
;;
restart|force-reload)
$0 stop
sleep 1
$0 start
;;
*)
N=/etc/init.d/$NAME
echo "Usage: $N {start|stop|restart|force-reload}" >&2
exit 1
;;
esacexit 0
注意:18行的-c /etc/chinadns/chnroute.txt,路径请根据自己相应的填写。
5. 启动/重启/停止 chinadns
service chinadns start #启动chinadns
service chinadns restart #重启chinadns
service chinadns stop #停止chinadns
安装配置shadowsocks-libev(含有ss-redir以及ss-tunnel)
1. 详细过程参见官方文档
2. 执行如下代码
apt-get install software-properties-common -y
add-apt-repository ppa:max-c-lv/shadowsocks-libev -y
apt-get update
apt install shadowsocks-libev
3. 配置/etc/shadowsocks-libev/config.json, 注意,111.111.111.111自己请替换为自己的VPS Server地址,“password”请自行修改
{
"server":"111.111.111.111",
"server_port":8388,
"local_address":"0.0.0.0",
"local_port":1080,
"password":"password",
"timeout":60,
"method":"aes-256-cfb",
"mode": "tcp_and_udp"
}
4. 启动ss-tunnel 与ss-redir
/usr/bin/ss-tunnel -c /etc/shadowsocks-libev/config.json -u -l 5300 -L 8.8.8.8:53 &
/usr/bin/ss-redir -c /etc/shadowsocks-libev/config.json -b 0.0.0.0 -u &
开启转发
1.修改 /etc/sysctl.conf, 取消注释:
net.ipv4.ip_forward=1
2. 执行命令使其生效
sysctl -p
配置iptables和ipset
1. 生成国内IP地址的ipset
curl -sL http://f.ip.cn/rt/chnroutes.txt | egrep -v '^$|^#' > cidr_cn
###如果执行失败可以使用cat /usr/local/src/chinadns-1.3.2/chnroute.txt | egrep -v '^$|^#' > cidr_cn
ipset -N cidr_cn hash:net
for i in `cat cidr_cn`; do echo ipset -A cidr_cn $i >> ipset.sh; done
chmod +x ipset.sh && sudo ./ipset.sh
rm -f ipset.cidr_cn.rules
ipset -S > ipset.cidr_cn.rules
cp ./ipset.cidr_cn.rules /etc/ipset.cidr_cn.rules
2. 配置iptables
iptables -t nat -N shadowsocks# 保留地址、私有地址、回环地址 不走代理
iptables -t nat -A shadowsocks -d 0/8 -j RETURN
iptables -t nat -A shadowsocks -d 127/8 -j RETURN
iptables -t nat -A shadowsocks -d 10/8 -j RETURN
iptables -t nat -A shadowsocks -d 169.254/16 -j RETURN
iptables -t nat -A shadowsocks -d 172.16/12 -j RETURN
iptables -t nat -A shadowsocks -d 192.168/16 -j RETURN
iptables -t nat -A shadowsocks -d 224/4 -j RETURN
iptables -t nat -A shadowsocks -d 240/4 -j RETURN# 以下IP为局域网内不走代理的设备IP
iptables -t nat -A shadowsocks -s 192.168.2.10 -j RETURN# 发往shadowsocks服务器的数据不走代理,否则陷入死循环
# 替换111.111.111.111为你的ss服务器ip/域名
iptables -t nat -A shadowsocks -d 111.111.111.111 -j RETURN
# 大陆地址不走代理,因为这毫无意义,绕一大圈很费劲的
iptables -t nat -A shadowsocks -m set --match-set cidr_cn dst -j RETURN# 其余的全部重定向至ss-redir监听端口1080(端口号随意,统一就行)
iptables -t nat -A shadowsocks ! -p icmp -j REDIRECT --to-ports 1080# OUTPUT链添加一条规则,重定向至shadowsocks链
iptables -t nat -A OUTPUT ! -p icmp -j shadowsocks
iptables -t nat -A PREROUTING ! -p icmp -j shadowsocks
设置网关的默认网关
透明网关需要设置默认的下一跳地址,也就是说,网关在决定了数据包的路由之后应该把数据包送到哪里去,在我们的家庭局域网环境中这个下一跳就是路由器的地址
请留意,192.168.2.1应该是路由器的地址,有的是192.168.0.1,有的是192.168.1.1,需要查看具体的设置
p2p1是网卡,有时候可能是eth0,请自行通过ifconfig
查看自己的网卡代号
route del default
route add default gw 192.168.2.1 p2p1
设置路由器的DNS和DHCP网关
1. 假设透明网关的IP地址是192.168.2.2,那么将路由器的DNS也设为192.168.2.2
2. 在路由器的DHCP子项下面将路由器的内网网关设为192.168.2.2
来源:https://blog.51cto.com/907832555/4711855
猜你喜欢
- 使用xshell连接服务器时,出现了“WARNING! The remote SSH server rejected X
- 今天上午闲来没事,写了一下自己几年来建站回忆录,发现鱼给加了16分!还差4分就落伍了,干脆在写一下论坛运营和管理上的一些经验! 希望今天就能
- 启用并配置文件服务Windows Server 2003的管理工具中有一项功能叫做“管理您的服务器”,启动该工具之后,可以看到当前服务器上启
- 问题提出公司的开发测试服务器部署在阿里云, 阿里云给出的实例一般都是只有一个分区, 20G到40G的样子, 然后再买存储挂载到其他目录.而
- 第一张google寄来的美元支票的时间是2004年,收到google寄来的支票了,有点出乎意料。相信许多站长都有收到第一张支票的激动,goo
- 首先打开IIS,找到我们的数据库。我们试一下是不是能够下载,正常的情况能够下载的。现在我们就开始配置IIS不让数据库被别人下载,我们在数据库
- 子域型:如网店域名为www.abc.com(abc为任意字符)论坛域名必须为http://???.abc.com(???和abc都为任意字符
- 国内知名IT企业金山软件近日宣布,旗下业务增长重心之一金山毒霸将与泰国知名网游运营商Asiasoft合作,正式进军泰国市场,并推出泰文版金山
- 在UNIX和LINUX平台下使用最广泛的免费HTTP服务器是W3C、NCSA和APACHE服务器,而Windows平台NT/2000/200
- URL中出现关键词网页Title中出现关键词常规内容中出现关键词在页面的第一段中出现关键词在页面的最后一段中出现关键词Heading 标签
- 网上流传了很多个版本的Google Adsense低价广告过滤清单,并且也有很多发布者就在使用这个名单。从技术角度上讲,过滤单价广告不能提高
- 背景CVE-2021-21972 vmware vcenter的一个未授权的命令执行漏洞。该漏洞可以上传一个webshell至vcenter
- 现在大家都知道软文在网站推广中的重要性了,这个软文的内容大家是可以原创的,也可以是伪原创的,先抛开文章的内容不说,读者第一眼看到的,看的最多
- 本文介绍了Visual Studio Code(vscode) git的使用,分享给大家,具体如下:1.创建一个github账号  
- Godaddy上建站,架设的是DEDE内容管理系统,你可能会问Godaddy主机支持DEDE的采集功能吗?Godaddy主机支持DEDE的采
- 最近看到一些文章关于站内搜索和用户体验的文章,一般都说的是第三方提供的,其实织梦就有一个很好的站内搜索,我们完全可以利用这一功能,提高用户体
- 新浪科技讯 北京时间9月13日午间消息,在活跃用户突破1亿大关后,Twitter宣布将在未来几周内新增5种语言,分别是印地语、菲律宾语、马来
- 现在国内提供支持ASP的免费空间越来越多了,对于ASP爱好者来说无疑是个好的势头,但是很多提供免费ASP空间的站点都没有对Fil
- 为什么要看日志?比如启动容器失败,却不给出任何提示,这时候我们就需要查看下到底是为什么? 查看日志: 命令格
- 阿里妈妈上线了。进入转了一圈,发现阿里妈妈与”传统”网络广告(例如Google Adsense、Yahoo的巴拿马系统等)还是区别很大。阿里