我现在有一台国内的手机通过 open vpn 连接到了国外的 openvpn@server 现在想在 openvpn@server 的服务器上对所有的来自 openvpn 的流量启用透明代理, 使得手机检测 ip 的时候是代理服务器的 ip 。 请给位大佬给点意见。
感谢各位大佬的回复。 开启调试日志后
#开启iptables调试内核模块
$ modprobe nf_log_ipv4
$ sysctl net.netfilter.nf_log.2
net.netfilter.nf_log.2 = nf_log_ipv4
#添加iptables规则
$ iptables -t raw -A PREROUTING -p icmp -j TRACE
$ iptables -t raw -A OUTPUT -p icmp -j TRACE
不断查看日志,发现这条命令,
iptables -t nat -A OUTPUT -p tcp --dport 80 -j DNAT --to 127.0.0.1:31338
会把目标地址改为服务器的vpn虚拟网卡地址 10.8.0.1
而iptables 中并没有允许这个地址。 所以只要再加上
iptables -I INPUT -s 10.8.0.0/24 -j ACCEPT
终于跑通了。。。 不容易啊,搞了我好几天。
1
cdlnls 2023-09-09 23:36:46 +08:00
我的理解是,给客户端设置默认路由就可以了吧,然后服务端开 ip_forward 和配置 nat 。
|
2
thsun 2023-09-09 23:56:34 +08:00 via iPhone
直接設轉發內網 ip 和 nat 那樣咯,如樓上所說
|
3
Jamy OP @cdlnls
我也是那么想的,于是本机搭建了一个 redsocks 服务器,开了端口 31338 ,redsocks 会把数据发往配置的代理服务器, 然后执行 iptables -t nat -A OUTPUT -p tcp --dport 80 -j DNAT --to 127.0.0.1:31338 然后用 curl 测试下,本机的请求可以走代理,但是 vpn 上来的不行。 对于 iptables 理解仅限于常规的使用,实在搞不懂啊。求大佬指点迷津 |
4
Jamy OP @Jamy
也测试这个命令 iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 31338 vpn 上来的还是无效。 |
5
ltkun 2023-09-10 07:05:20 +08:00 via Android
国内连国外 openvpn 这种通用协议过不了 gfw 吧 得换其他
|
6
defunct9 2023-09-10 07:12:28 +08:00 via iPhone
开 ssh ,让我上去配
|
7
a33291 2023-09-10 08:29:36 +08:00
感觉 softether 的 nat 更方便
|
10
busier 2023-09-10 13:54:31 +08:00
你都已经搞定 openvpn 连接了,可以说完成 90%了。剩下就是 sysctl 开个 ip_forward 和 iptables 的 nat 表的 POSTROUTING 链设个 MASQUERADE 就搞定的事情......
|
12
n1cogrv 2023-09-10 16:46:48 +08:00
push "redirect-gateway local def1"
push "dhcp-option DNS 8.8.8.8" https://openvpn.net/community-resources/how-to/#pushing-dhcp-options-to-clients:~:text=cause%20all%20IP%20network%20traffic%20originating%20on%20client%20machines%20to%20pass%20through%20the%20OpenVPN%20server @Jamy #11 试试用 v2raya 对 server 进行透明代理,再保证 client 的所有网络流量都经过 server ,这时就可以确保 client -> server -> server_tproxy |