寻觅生命中的那一片浅草......

文章属于类别 Network

旁路路由透明代理

方案优点

需要透明代理上网的客户机不需要任何设置,网关地址都不需要改

环境

  • 主路由 华硕刷梅林固件 192.168.0.1
  • 旁路由 CubieTruck刷的ArchLinux 192.168.0.66
  • 需要透明代理上网的客户机 192.168.0.119

数据走向

192.168.0.119 -> 192.168.0.1 -> 192.168.0.66 -> 192.168.0.1

192.168.0.1设置

# 将进入table 10的数据发去192.168.0.66
ip route add default via 192.168.0.66 table 10

# 设置从192.168.0.119来的数据进入table 10
# 就是让192.168.0.119的数据发去192.168.0.66进行处理
ip rule add from 192.168.0.119/32 table 10

# 查看路由规则
ip rule show

192.168.0.66设置

# 设置数据转发
sudo sysctl -w net.ipv4.ip_forward=1

# 开启v2ray
v2ray -config config.json

# 设置防火墙
sudo /usr/sbin/iptables  -t nat -N V2RAY
sudo /usr/sbin/iptables -t nat -A V2RAY -p tcp -j REDIRECT --to-ports 1060
sudo /usr/sbin/iptables -t nat -A PREROUTING -s 192.168.0.119 -p tcp -j V2RAY

主要参考文章

shadowsocket和ipset实现科学上网

1. 背景

我们有了专线接入的,而基于shadowsocket,网上的资料已经无法访问了,经过一翻摸索,终于又还原出来

2. 使用原有软件

上面专线版本,我们已经安装了一些软件,这里可以继续用

  • dnsmasq
  • pdnsd

3. shadowsocket配置

服务器端已经有了,这里讲下客户端,CentOS 6安装shadowsocket 3.x比较麻烦,这里安装2.x的

配置yum源

sudo cat > /etc/yum.repos.d/librehat-shadowsocks.repo <<EOF
[librehat-shadowsocks]
name=Copr repo for shadowsocks owned by librehat
baseurl=https://copr-be.cloud.fedoraproject.org/results/librehat/shadowsocks/epel-6-$basearch/
type=rpm-md
skip_if_unavailable=True
gpgcheck=1
gpgkey=https://copr-be.cloud.fedoraproject.org/results/librehat/shadowsocks/pubkey.gpg
repo_gpgcheck=0
enabled=1
enabled_metadata=1
EOF

安装

sudo yum install shadowsocks-libev

连接shadowsocket

# 下面需要以root身份运行,主要是ulimit
ulimit -SHn 65535
# -v参数为输出详细信息,在debug的时候有用
# 要用ss-redir才行,ss-local不支持iptables REDIRECT的方式
su - ssproxy bash -c "ss-redir -s ss_svr_ip -p 58000 -k abc_pass -m aes-256-cfb -l 1080 -b 0.0.0.0 -v"

4. 设置dnsmasq

sudo cat > /data/conf/dnsmasq/ss_kexue.conf <<EOF
server=/facebook.com/127.0.0.1#1053
ipset=/facebook.com/ss_kexue
EOF
# 另外需要修改dnsmasq.conf,让它包含ss_kexue.conf,并重启dnsmasq

5. 设置ipset

# 新增hash表
sudo /usr/sbin/ipset -N ss_kexue iphash
# 添加facebook的ip倒表里
sudo ipset add ss_kexue facebook_ip
# 从旧的hash表里移除
sudo ipset del kk_kexue facebook_ip

6. 设置iptables

# 需要写到配置文件
sudo iptables -t nat -A PREROUTING -p tcp -m set --match-set ss_kexue dst -j REDIRECT --to-port 1080
sudo iptables -A RH-Firewall-1-INPUT -s 192.168.0.0/16 -p tcp --dport 1080 -j ACCEPT
sudo iptables -A RH-Firewall-1-INPUT -s 172.16.28.0/23 -p tcp --dport 1080 -j ACCEPT

好了,现在应该可以了

参考资料

ZZ:高效的 Linux 限流神器 Trickle

请见:高效的 Linux 限流神器 Trickle

zz:开启TCP BBR拥塞控制算法

网络加速,类似第三方软件:锐速(serverSpeeder)

而BBR则是内核级支持,由Google贡献的代码,详细请打开:开启TCP BBR拥塞控制算法

利用linux策略路由处理多出口

我们想增加多一个出口,只有特定的内网源IP才从这里出,所以,有了这个测试

# 增加路由表
sudo /bin/cp /etc/iproute2/rt_tables /data/backup/tmp/rt_tables.${RANDOM}
sudo echo '201 adsl' >> /etc/iproute2/rt_tables

# 添加路由策略,此处以联通出口为例
sudo ip route add default via xx.xxx.83.113 dev em1:0 table adsl

# 查看路由策略
ip route show table adsl

# 设置路由规则
sudo ip rule add from 172.16.28.26 lookup adsl

# 查看规则
ip rule show

# 删除路由规则
sudo ip rule del from 172.16.28.26 lookup adsl
2024年三月
« 5月    
 123
45678910
11121314151617
18192021222324
25262728293031