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
|