日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

利用shadowsocks搭建局域網透明網關_Linux

更新時間: 2021-11-02 編程語言

對于個人用戶則是在手機或終端上安裝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

欄目分類
最近更新