1
ryd994 2014-08-11 14:30:25 +08:00 1
我iptables学得不多,先抛个砖……
你只转发syn大概不行吧,把 --syn 去了。 如果只是要代理劫持的话,可以古狗 iptables transparent proxy 比如: http://www.tldp.org/HOWTO/TransparentProxy-6.html |
2
s7lx 2014-08-11 15:03:08 +08:00 2
可以。
我的方案效果和你想通,但思路不太一样,如下: 局域网内有家用路由器192.168.2.1,肩负网关、DHCP等众多任务 运行了一个192.168.2.5的Debian,内有ss-redir一个 所有用户DHCP获取192.168.2.0/24 其他的IP地址,要求完全透明的翻墙。 首先在DHCP上配置DNS和网关地址为192.168.2.5,这样所有人的数据默认都会先发到这台设备上,DNS也会从这里解析(DNS如何避免污染另谈) 接着打开192.168.2.5上的IPv4数据转发 sudo echo net.ipv4.ip_forward=1 >> /etc/sysctl.conf sudo sysctl -p 这样所有的数据都从192.168.2.5这里通过了,这是科学上网的基础:让所有数据通过那台设备走。 确保192.168.2.5的下一跳是192.168.2.1 直接在/etc/network/interfaces里直接指定 iface eth0 inet static address 192.168.2.5 netmask 255.255.255.0 gateway 192.168.2.1 确保结果如下 =============== $ traceroute www.sina.com.cn traceroute: Warning: www.sina.com.cn has multiple addresses; using 58.63.236.37 traceroute to ara.sina.com.cn (58.63.236.37), 64 hops max, 52 byte packets 1 192.168.2.5 (192.168.2.5) 1.645 ms 1.134 ms 1.077 ms 2 192.168.2.1 (192.168.2.1) 1.541 ms 1.496 ms 1.349 ms 以下省略 =============== 然后启动ss-redir到12345端口 接着 sudo iptables -t nat -N SHADOWSOCKS sudo iptables -t nat -A SHADOWSOCKS -p tcp -d 8.8.8.0/24 -j REDIRECT --to-ports 12345 sudo iptables -t nat -A PREROUTING -p tcp -j SHADOWSOCKS sudo iptables -t nat -A OUTPUT -p tcp -j SHADOWSOCKS 这样所有访问8.8.8.0/24的数据都走Debian的12345端口的shadowsocks了,其他数据继续走到192.168.2.1,然后到公网。 |
3
tmqhliu 2014-08-11 15:58:27 +08:00 1
全局翻的话直接添加默认路由即可,用不着那么麻烦
|
6
onemoo 2014-08-13 09:01:03 +08:00 1
@1314258
肯定不能只传递syn数据包,所以--syn一定要去掉。但是你说这样还不行,我也搞不懂了。 咱们来一起分析一下数据流的路径: 局域网中的192.168.1.3和192.168.1.2是可以直接互访的,但你为了让192.168.1.3能直接无感翻墙,所以在路由(网关)上,把它的外联数据包都重定向给192.168.1.2的ss-redir服务,而当数据返回192.168.1.2时,它应该可以直接把数据包送回192.168.1.3的,所以按说在路由上只有这一个iptables配置就够了。 要么就是我对网络拓扑的理解不对,要么就是哪里还有问题: 192.168.1.3是所有网站都不能上吗?还是某些网站不能翻? 如果是某些网站不能翻,你确定解决DNS问题了吗? 你说的192.168.1.2上面运行的是类ss-redir设备,运行的是不是ss-redir? |
7
1314258 OP |
9
1314258 OP |
10
1314258 OP |