【记录】给ipv6 only的小鸡配置全局双栈SOCKS5代理

看了坛友的文章【记录】在Debian 12配置全局SOCKS5代理 https://www.nodeseek.comhttp://127.0.0.1:5001/post-324224-1

全局设置比较少用,也试着折腾,想给我的ipv6 only加上自己另一台小鸡ipv4代理,根据坛友的文章使用redsocks没有成功设置,查了资料有可能是redsocks不支持v6配置。

仔细查看文章找到关键点并结合AI,最终折腾成功。

文章关键点:使用iptables把流量转发到本地端口12345上,需要在12345设置透明代理再转发到远程socks5上。
两点需要注意,一是iptables转发的这种流量是原始 TCP 流量,需要透明代理。
二是转发到远程socks5上,可以使用其他的工具,甚至可以多层转发。
有了这样的思路就可以不限于配置SOCKS5代理,其他代理也可以,例如用x-ui里面的dokedemo-door配合各种不同出站协议,灵活运用给v4设置全局v6/v4代理也可以。


个人使用习惯,我选择了gost,使用的是redir协议,这个基本等同于redsocks,仅支持TCP转发,
如果需要UDP,可以用gost里的tproxy,具体看gost文档:https://gost.run/tutorials/redirect/
查了一下xray里面这个dokedemo-door也可以udp的。

具体操作:

1.双栈小鸡上搭建socks5代理。

使用你喜欢的方式搭建socks5代理,我一般用面板3x-ui或者gost

安装最新版本 https://github.com/go-gost/gost/releases

bash <(curl -fsSL https://github.com/go-gost/gost/raw/master/install.sh) --install

运行

#用户名JTBvTZ08Rw,密码OsnfPBgbZd,端口12345

gost -L socks5://JTBvTZ08Rw:OsnfPBgbZd@:12345

需要Systemd后台运行的自己设置(下面步骤都忽略Systemd设置),参考(gost文档)和坛友的帖子。

2.在ipv6only的小鸡用gost转发代理

安装最新版本gost https://github.com/go-gost/gost/releases

bash <(curl -fsSL https://github.com/go-gost/gost/raw/master/install.sh) --install

#运行,这里我的双栈小鸡ip是 [2a0b:4141:820:14b::abc]

gost -L redir://:12345 -F 'socks5://JTBvTZ08Rw:OsnfPBgbZd@[2a0b:4141:820:14b::abc]:12345'

3.iptables设置转发

开启转发

echo "net.ipv4.ip_forward=1" | tee -a /etc/sysctl.conf
echo "net.ipv6.conf.all.forwarding=1" | tee -a /etc/sysctl.conf
sysctl -p

iptables添加规则

  • ipv4设置
  1. 清除现有规则(如果你有其它规则就不要随便清除):
iptables -t nat -F
iptables -t nat -X
  1. 配置规则: (RETURN排除转发的ip,可以自己根据情况添加):
iptables -t nat -N SOCKS
iptables -t nat -A SOCKS -d 127.0.0.1/8 -j RETURN
iptables -t nat -A SOCKS -d 10.0.0.0/8 -j RETURN
iptables -t nat -A SOCKS -p tcp -j REDIRECT --to-ports 12345
iptables -t nat -A OUTPUT -p tcp -j SOCKS
  1. 查看规则
iptables -t nat -L -v -n
  1. 保存规则:
iptables-save > /etc/iptables/rules.v4
  1. 停用添加的SOCKS规则
iptables -t nat -D OUTPUT -p tcp -j SOCKS
iptables -t nat -F SOCKS
iptables -t nat -X SOCKS

  • ipv6设置(如果仅需要ipv4,ipv6也可以不做转发)
  1. 清除现有规则:
ip6tables -t nat -F
ip6tables -t nat -X
  1. 添加规则
ip6tables -t nat -N SOCKS
ip6tables -t nat -A SOCKS -d ::1/128 -j RETURN
ip6tables -t nat -A SOCKS -d fc00::/7 -j RETURN
ip6tables -t nat -A SOCKS -d 2a0b:4141:820:14b::abc/128 -j RETURN
ip6tables -t nat -A SOCKS -p tcp -j REDIRECT --to-ports 12345
ip6tables -t nat -A OUTPUT -p tcp -j SOCKS
  1. 查看规则
ip6tables -t nat -L -v -n
  1. 保存规则:
ip6tables-save > /etc/iptables/rules.v6


4.测试 IPv4 和 IPv6 代理

curl -6 ip.sb
应返回 2a0b:4141:820:14b::abc

curl -4 ip.sb
应返回 193.233.134.xxx

说明已经成功

5.补充ipv6only连内网ipv4都没有,需要自己添加一个ipv4

我的ipv6only小鸡连内网ipv4
临时添加:

# 接口 eth0 添加一个临时的 IPv4 地址10.0.0.2:
ip addr add 10.0.0.2/24 dev eth0

# 添加默认网关10.0.0.1
sudo ip route add default via 10.0.0.1 dev eth0

永久添加,写进在网卡配置文件

#debian的编辑网络配置 /etc/network/interfaces
nano /etc/network/interfaces

#添加:
auto eth0
iface eth0 inet static
    address 10.0.0.2/24
    gateway 10.0.0.1

其他系统可能不一样,自己看情况设置

6.最后

因为我之前用的是公共DNS6to4,想想这个会不会更简单?顺便问了AI,这两方法的区别
具体区别,需要的自己去搭建(看起来搭建更复杂,但客户端使用更简单)

特性 gost SOCKS5 代理 DNS64 NAT64
工作层级 应用层(SOCKS5 协议) 网络层(IPv6 到 IPv4 转换)
支持的流量 IPv4 和 IPv6 仅 IPv4(IPv6 原生支持)
性能 中等(代理加密和转发有开销) 高(网络层转换,延迟低)
配置复杂度 中等(gost ip6tables/iptables) 较高(tayga bind9 iptables)
部署时间 快(单命令 规则 较慢(需配置网络服务)
灵活性 高(支持多种协议和目标) 中等(仅限 IPv4 转换)
安全性 支持认证(用户名/密码) 无额外认证(依赖网络安全)
依赖 双栈 VPS 的 SOCKS5 服务 双栈 VPS 的 NAT64 和 DNS64 服务
IPv4 地址需求 无需(依赖 SOCKS5 处理 双栈 VPS 需公网 IPv4 地址
适用场景 通用代理(IPv4 IPv6) IPv6-only VPS 访问 IPv4
点赞
  1. hakunamatataha说道:

    技术贴

  2. tof说道:

    好像有个warp脚本自带socks5代理?3xui用的就是这个吧
    我还以为很简单...

回复 semyes 取消回复

电子邮件地址不会被公开。必填项已用 * 标注

×
订阅图标按钮