2021年2月6日星期六

路由器透明代理的iptables设置

如果你已经在openwrt的路由器中安装了透明代理,如ss,xray,trojan等等,那么应该如何设置防火墙,才能按需分流流量呢?虽然很多app是提供自动的设置,但有些人希望根据自己的需求定制,那么下面就提供一个gfwlist分流的方法,来详细介绍一下原理。

1. 首先安装dnsmasq-full

opkg update opkg install dnsmasq-full

安装完成后,对dnsmasq-full设置。

2. 下载gfwlist.conf文件

mkdir /etc/dnsmasq.d cd dnsmasq.d wget https://cokebar.github.io/gfwlist2dnsmasq/dnsmasq_gfwlist_ipset.conf

修改dnsmasq_gfwlist_ipset.conf中,你需要查询的dns服务器的地址和端口。如果你装了DOH,那么就修改为127.0.01#5053, 如果你是IPv4/IPv6双栈,ipset中设置如下面格式:ipset=/138.com/gfwlist, gfwlist6

3.dnsmasq-full配置

vi /etc/dnsmasq.conf

在dnsmasq.conf文件加入下面几行

no-resolv no-poll conf-dir=/etc/dnsmasq.d cache-size=1000 server=116.116.116.116

4. 设置防火墙

在防火墙的自定义规则中,添加如下配置:

ipset -N gfwlist iphash ipset -N gfwlist6 nethash family inet6 ip route add local 0.0.0.0/0 dev lo table 110 ip -6 route add local ::/0 dev lo table 111 ip rule add fwmark 2 lookup 110 ip rule add fwmark 4 lookup 110 ip -6 rule add fwmark 3 table 111 ip -6 rule add fwmark 5 table 111 iptables -t mangle -I PREROUTING -m mark --mark 2 -j RETURN ip6tables -t mangle -I PREROUTING -m mark --mark 3 -j RETURN iptables -t mangle -A PREROUTING -p tcp -m set --match-set gfwlist dst -j TPROXY --on-port 1234 --tproxy-mark 2 iptables -t mangle -A PREROUTING -p udp -m set --match-set gfwlist dst -j TPROXY --on-port 1234 --tproxy-mark 2 ip6tables -t mangle -A PREROUTING -p tcp -m set --match-set gfwlist6 dst -j TPROXY --on-port 1234 --tproxy-mark 3 ip6tables -t mangle -A PREROUTING -p udp -m set --match-set gfwlist6 dst -j TPROXY --on-port 1234 --tproxy-mark 3 iptables -t mangle -I OUTPUT -m mark --mark 4 -j RETURN ip6tables -t mangle -I OUTPUT -m mark --mark 5 -j RETURN iptables -t mangle -A OUTPUT -p tcp -m set --match-set gfwlist dst -j MARK --set-mark 4 iptables -t mangle -A OUTPUT -p udp -m set --match-set gfwlist dst -j MARK --set-mark 4 ip6tables -t mangle -A OUTPUT -p tcp -m set --match-set gfwlist6 dst -j MARK --set-mark 5 ip6tables -t mangle -A OUTPUT -p udp -m set --match-set gfwlist6 dst -j MARK --set-mark 5

在OUTPUT是不能使用TPROXY,否则防火墙启动出错提示“不能在OUTPUT中使用TPROXY”,所用通过IP rule的方式,将路由器本机出站流量跳转到路由器入站,就可以使用PREROUTING的表进行操作了。







在ubuntu中使用全局代理

 我用的是桌面版的Unbutu20,经常编译需要用到全局代理。在设置中的网络设置代理,发现经常用不了。后来采用了proxychains来实现。

1、安装:

sudo apt update sudo apt install proxychains

2、配置

sudo vim /etc/proxychains.conf

修改你的socks配置

[ProxyList] # add proxy here ... # meanwile # defaults set to "tor" socks5 127.0.0.1 1080

2、编译的时候,如下执行

proxychains make

问题:

可能因为我的网络没有开IPv6的原因,所以编译过程中出现了下面的错误

You must get working getaddrinfo() function. or you can specify "--disable-ipv6"

这时候,我使用下面方式编译可以成功:

PYTHON_CONFIGURE_OPTS="--disable-ipv6" proxychains make

安装 PaddleOCR的方法

  安装飞桨版本:https://www.paddlepaddle.org.cn/install/quick?docurl=/documentation/docs/zh/develop/install/pip/windows-pip.html 命令:  python -m pip...