-
-
Save timercrack/bc758a0021e2ee62a80e0ba5541804dd to your computer and use it in GitHub Desktop.
| #!/bin/sh | |
| #路由器地址:192.168.123.1 | |
| #创建一张IPV4路由表,表名:"100" 添加一条规则 | |
| ip rule add fwmark 1 table 100 | |
| ip route add local 0.0.0.0/0 dev lo table 100 | |
| # 创建一张IPV6路由表,表名:"106" 添加一条规则 删除:ip -6 ru del table 106 查看:ip -6 ru list | |
| #ip -6 rule add fwmark 1 table 106 | |
| #ip -6 route add local ::/0 dev lo table 106 | |
| ip route flush cache | |
| # 代理IPV4局域网设备 | |
| iptables -t mangle -N XRAY | |
| iptables -t mangle -A XRAY -d 127.0.0.1/32 -j RETURN | |
| iptables -t mangle -A XRAY -d 224.0.0.0/4 -j RETURN | |
| iptables -t mangle -A XRAY -d 255.255.255.255/32 -j RETURN | |
| iptables -t mangle -A XRAY -d 192.168.123.1/24 -p tcp -j RETURN | |
| iptables -t mangle -A XRAY -d 192.168.123.1/24 -p udp ! --dport 53 -j RETURN | |
| iptables -t mangle -A XRAY -j RETURN -m mark --mark 0xff | |
| iptables -t mangle -A XRAY -p tcp -j TPROXY --on-ip 127.0.0.1 --on-port 12345 --tproxy-mark 1 | |
| iptables -t mangle -A XRAY -p udp -j TPROXY --on-ip 127.0.0.1 --on-port 12345 --tproxy-mark 1 | |
| # 代理IPV4网关本机 | |
| iptables -t mangle -N XRAY_MASK | |
| iptables -t mangle -A XRAY_MASK -d 224.0.0.0/4 -j RETURN | |
| iptables -t mangle -A XRAY_MASK -d 255.255.255.255/32 -j RETURN | |
| iptables -t mangle -A XRAY_MASK -d 192.168.123.1/24 -p tcp -j RETURN | |
| iptables -t mangle -A XRAY_MASK -d 192.168.123.1/24 -p udp ! --dport 53 -j RETURN | |
| iptables -t mangle -A XRAY_MASK -m mark --mark 0xff -j RETURN | |
| iptables -t mangle -A XRAY_MASK -p tcp -j MARK --set-mark 1 | |
| iptables -t mangle -A XRAY_MASK -p udp -j MARK --set-mark 1 | |
| # 代理IPV6局域网设备 | |
| #ip6tables -t mangle -N XRAY6 | |
| #ip6tables -t mangle -A XRAY6 -d ::1/128 -j RETURN | |
| #ip6tables -t mangle -A XRAY6 -d fd07:22f2:2eb9::1/60 -p tcp -j RETURN | |
| #ip6tables -t mangle -A XRAY6 -d fd07:22f2:2eb9::1/60 -p udp ! --dport 53 -j RETURN | |
| #ip6tables -t mangle -A XRAY6 -j RETURN -m mark --mark 0xff | |
| #ip6tables -t mangle -A XRAY6 -p tcp -j TPROXY --on-ip ::1 --on-port 12345 --tproxy-mark 1 | |
| #ip6tables -t mangle -A XRAY6 -p udp -j TPROXY --on-ip ::1 --on-port 12345 --tproxy-mark 1 | |
| # 新建 DIVERT 规则,避免已有连接的包二次通过 TPROXY,理论上有一定的性能提升 | |
| iptables -t mangle -N DIVERT | |
| iptables -t mangle -A DIVERT -j MARK --set-mark 1 | |
| iptables -t mangle -A DIVERT -j ACCEPT | |
| # 代理IPV6网关本机 | |
| #ip6tables -t mangle -N XRAY6_MASK | |
| #ip6tables -t mangle -A XRAY6_MASK -d fd07:22f2:2eb9::1/60 -p tcp -j RETURN | |
| #ip6tables -t mangle -A XRAY6_MASK -d fd07:22f2:2eb9::1/60 -p udp ! --dport 53 -j RETURN | |
| #ip6tables -t mangle -A XRAY6_MASK -m mark --mark 0xff -j RETURN | |
| #ip6tables -t mangle -A XRAY6_MASK -p tcp -j MARK --set-mark 1 | |
| #ip6tables -t mangle -A XRAY6_MASK -p udp -j MARK --set-mark 1 | |
| # 新建 DIVERT6 规则,避免已有连接的包二次通过 TPROXY,理论上有一定的性能提升 | |
| #ip6tables -t mangle -N DIVERT6 | |
| #ip6tables -t mangle -A DIVERT6 -j MARK --set-mark 1 | |
| #ip6tables -t mangle -A DIVERT6 -j ACCEPT | |
| # 应用IPV4规则 | |
| iptables -t mangle -A PREROUTING -j XRAY | |
| iptables -t mangle -I PREROUTING -p tcp -m socket -j DIVERT | |
| iptables -t mangle -A OUTPUT -j XRAY_MASK | |
| iptables -t mangle -I XRAY -m mark --mark 0xff -j RETURN | |
| # 应用IPV6规则 | |
| #ip6tables -t mangle -A PREROUTING -j XRAY6 | |
| #ip6tables -t mangle -I PREROUTING -p tcp -m socket -j DIVERT6 | |
| #ip6tables -t mangle -A OUTPUT -p tcp -j XRAY6_MASK | |
| #ip6tables -t mangle -I XRAY6 -m mark --mark 0xff -j RETURN |
你得软路由需要开启代理转发:
echo net.ipv4.ip_forward=1 >> /etc/sysctl.conf && sysctl -p
谢谢您的回复。我的是OPENWRT,所以默认是打开转发的。因于脚本没弄好,我最好装了PASSWALL。现在回想,应该是我的DNS链没设好造成不能正常访问。您的IPTABLES规则没问题。
root@OpenWrt:~# iptables -t mangle -A XRAY -p tcp -j TPROXY --on-ip 127.0.0.1 --on-port 2099 --tproxy-mark 1
iptables v1.8.7 (legacy): unknown option "--on-ip"
Try `iptables -h' or 'iptables --help' for more information.
请问这个是啥情况,我的OpenWrt是最新的官方稳定版本22.03
root@OpenWrt:~# iptables -t mangle -A XRAY -p tcp -j TPROXY --on-ip 127.0.0.1 --on-port 2099 --tproxy-mark 1 iptables v1.8.7 (legacy): unknown option "--on-ip" Try `iptables -h' or 'iptables --help' for more information.
请问这个是啥情况,我的OpenWrt是最新的官方稳定版本22.03
22.03由fw4代替了fw3,默认是不带iptables的。你应该是自行安装了iptables包。但可能还需要安装iptables-mod-conntrack-extra、iptables-mod-extra、iptables-mod-tproxy等。
请问如何指定某个IP通过XRAY上网, 某个IP直联路由,谢谢
您好。我尝试了这个设置。我的网段是192.168.31.1/24。当我把xray和iptables脚本布置在家庭主路由192.168.31.1上时(它同时也是dhcp服务器),它工作得非常好。
但当我把它布置在同网段的另一台软路由(192.168.31.10),并在一台工作电脑上手动指定ip地址和网关(ip:192.168.31.150, 掩码:255.255.255.0,网关-在我的mac电脑上显示是路由器:192.168.31.10)。就不能透明代理了。此时,指定1080端口仍然可以完全正常代理国内和国外的,所以xray是没问题的。
2种情形,惟一的区别:一次安装在主路由(靠dhcp让客户端自动指定主路由为网关),一次安装在网段内的另一台主机上(并手动指定该主机为网关)。前者工作完好,后者不能工作(国内外都不能正常访问)。
您方便的时候可以提供一个布置在非主路由上的版本吗?谢谢!