Featured image of post v2ray透明代理

v2ray透明代理

debian网关上配置v2ray+iptables透明代理

前言

虽然在电脑上装有V2RayN但不支持设置代理的软件无法使用,最好的办法是在网关上进行透明代理。我刷了个debian系统来玩,所以我们要在debian上手动部署v2ray和配置iptables规则。 之前在debian上想弄ss-redir透明代理来着,但是需要自己弄路由规则来分流,没弄成功。但还好v2ray是有内置的路由规则来分流的,我们只需要修改好v2ray的配置文件和配置好iptables规则就可以啦,非常方便。

安装v2ray

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
#下载压缩包
wget https://github.com/v2ray/v2ray-core/releases/download/v4.19.1/v2ray-linux-64.zip
#解压
unzip v2ray-linux-64.zip
#进入文件夹
cd v2ray-linux-64.zip
#创建v2ray程序文件夹
mkdir /usr/bin/v2ray
#赋予v2ray执行权限
chmod +x ./v2ctl ./v2ray
#复制下面的文件到v2ray程序文件夹
cp ./geoip.dat ./geosite.dat ./v2ctl ./v2ray /usr/bin/v2ray
#复制v2ray.service文件到/etc/systemd/system/
cp ./systemd/v2ray.service /etc/systemd/system/
#设置v2ray开机自启
systemctl enable v2ray.service

参考V2Ray 配置指南对配置进行修改

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
#主要就是把inbounds里面的内容替换成下面的代码
    {
       "port": 12345, //开放的端口号
       "protocol": "dokodemo-door",
       "settings": {
         "network": "tcp,udp",
         "followRedirect": true // 这里要为 true 才能接受来自 iptables 的流量
       },
       "sniffing": {
         "enabled": true,
         "destOverride": ["http", "tls"]
       },
       "streamSettings": {
         "sockopt": {
           "tproxy": "redirect" 
       }
     }
#streamSettings里面要添加下面的代码
"sockopt": {
       "mark": 255  //这里是 SO_MARK,用于 iptables 识别,每个 outbound 都要配置;255可以改成其他数值,但要与下面的 iptables 规则对应;如果有多个 outbound,最好奖所有 outbound 的 SO_MARK 都设置成一样的数值
     }

测试下配置文件有没有问题,没问题就运行v2ray

配置iptables规则

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#创建rule文件
vi /etc/v2ray/rule
#添加下面命令
iptables -t nat -N V2RAY # 新建一个名为 V2RAY 的链
iptables -t nat -A V2RAY -d 服务器ip -j RETURN
iptables -t nat -A V2RAY -d 0.0.0.0/8 -j RETURN
iptables -t nat -A V2RAY -d 10.0.0.0/8 -j RETURN
iptables -t nat -A V2RAY -d 127.0.0.0/8 -j RETURN
iptables -t nat -A V2RAY -d 169.254.0.0/16 -j RETURN
iptables -t nat -A V2RAY -d 172.16.0.0/12 -j RETURN
iptables -t nat -A V2RAY -d 192.168.0.0/16 -j RETURN
iptables -t nat -A V2RAY -d 224.0.0.0/4 -j RETURN
iptables -t nat -A V2RAY -d 240.0.0.0/4 -j RETURN
iptables -t nat -A V2RAY -p tcp -j RETURN -m mark --mark 0xff # 直连 SO_MARK 为 0xff 的流量(0xff 是 16 进制数,数值上等同与上面配置的 255),此规则目的是避免代理本机(网关)流量出现回环问题
iptables -t nat -A V2RAY -p tcp -j REDIRECT --to-ports 12345 # 其余流量转发到 12345 端口(即 V2Ray)
iptables -t nat -A PREROUTING -p tcp -j V2RAY # 对局域网其他设备进行透明代理
iptables -t nat -A OUTPUT -p tcp -j V2RAY # 对本机进行透明代理

ip rule add fwmark 1 table 100
ip route add local 0.0.0.0/0 dev lo table 100
iptables -t mangle -N V2RAY_MASK
iptables -t mangle -A V2RAY_MASK -d 服务器ip -j RETURN
iptables -t mangle -A V2RAY_MASK -d 0.0.0.0/8 -j RETURN
iptables -t mangle -A V2RAY_MASK -d 10.0.0.0/8 -j RETURN
iptables -t mangle -A V2RAY_MASK -d 127.0.0.0/8 -j RETURN
iptables -t mangle -A V2RAY_MASK -d 169.254.0.0/16 -j RETURN
iptables -t mangle -A V2RAY_MASK -d 172.16.0.0/12 -j RETURN
iptables -t mangle -A V2RAY_MASK -d 192.168.0.0/16 -j RETURN
iptables -t mangle -A V2RAY_MASK -d 224.0.0.0/4 -j RETURN
iptables -t mangle -A V2RAY_MASK -d 240.0.0.0/4 -j RETURN
iptables -t mangle -A V2RAY_MASK -p udp -j TPROXY --on-port 12345 --tproxy-mark 1
iptables -t mangle -A PREROUTING -p udp -j V2RAY_MASK

#添加执行权限
chmod +x /etc/v2ray/rule
#开机自动添加规则
vi /etc/rc.local
#添加命令
/etc/v2ray/rule
使用 Hugo 构建
主题 StackJimmy 设计