首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何将所有数据包从wlan0转发到tun0 (OpenVPN)?

如何将所有数据包从wlan0转发到tun0 (OpenVPN)?
EN

Unix & Linux用户
提问于 2021-02-13 12:52:30
回答 1查看 1.2K关注 0票数 1

我有wlan0和eth0。Eth0连接到互联网,而wlan0是一个接入点。我用“--拉-过滤器忽略重定向网关”选项连接到一个OpenVPN服务器,这样它就不会自动通过VPN路由所有流量,这不是我想要做的。

我正在尝试将所有流量从wlan0 (接入点)路由到tun0。这样,任何连接到我的接入点的客户端都将使用VPN。我试着用iptable来做这个:

代码语言:javascript
运行
复制
iptables -A POSTROUTING -t nat -o wlan0 -j MASQUERADE
iptables -A POSTROUTING -t nat -o tun0 -j MASQUERADE
iptables -A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i wlan0 -o tun0 -j ACCEPT

这不起作用(计数器也不更新)。我尝试将tun0替换为eth0 (但ofc完全绕过了VPN),所以我假设问题在于tun0。我还在某个地方读到,IP路由表更适合这样做。如果是真的,我该怎么做?

EN

回答 1

Unix & Linux用户

回答已采纳

发布于 2021-02-13 19:27:06

假设您的wlan子网为192.168.1.0/24,而tun0 IP为10.10.10.99:

在VPN网关上执行以下命令

如果尚未启用,则启用路由:

代码语言:javascript
运行
复制
sudo echo 1 > /proc/sys/net/ipv4/ip_forward

删除您已经拥有的前两个NAT规则,同时保留前向规则:

代码语言:javascript
运行
复制
sudo iptables -t nat -L -n --line-numbers
sudo iptables -t nat -D POSTROUTING 1

一旦NAT规则被删除,以正确的格式添加一个NAT规则。

代码语言:javascript
运行
复制
sudo iptables -t nat -A POSTROUTING -s 192.168.1.0/24 ! -d 192.168.1.0/24 -o tun0 -j MASQUERADE

最后一步是使用“策略路由”来处理路由表:

代码语言:javascript
运行
复制
sudo ip rule add from 192.168.1.0/24 table 99
sudo ip route add 0.0.0.0/0 via 10.10.10.99 dev tun0 table 99

参考这里这里

票数 1
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/634261

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档