首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过OpenVPN代理只路由我的Ubuntu机器的网络流量

通过OpenVPN代理只路由我的Ubuntu机器的网络流量
EN

Server Fault用户
提问于 2016-06-01 17:56:05
回答 2查看 1K关注 0票数 -1

我的问题很简单,但我在网上找不到一个干净的step_by_step指南/例子。我有一个OpenVPN代理服务器,我只想通过它路由本地Ubuntu机器的web流量,我知道我们可以通过OpenVPN通过client.config(这里)路由特定的目的地(IP或网络)。但是对于特定的流量,比如web(80/443),我知道我应该将route-nopull添加到client.config中,并通过标记web流量并将其路由到OpenVPN网关来添加一些iptables规则,但我不知道如何做到这一点。任何建议都会有很大帮助。

EN

回答 2

Server Fault用户

回答已采纳

发布于 2016-06-02 08:38:24

使用基于规则的策略路由。

Netfilter将在数据包中添加标记:

代码语言:javascript
复制
iptables -t mangle -A PREROUTING -p tcp -m multiport --dports 80,443 -j MARK --set-mark 0x1

然后,应该告诉Linux,如果它看到了这个标记,它应该使用备用路由表:

代码语言:javascript
复制
ip rule add fwmark 0x1 lookup 201

你需要在桌子上找到一条路线:

代码语言:javascript
复制
ip route add default via [your-openvpn-peer-address] table 201

注意,您仍然可以通过非标准端口和DNS查询进行跟踪。使用相同的方法也可以轻松地路由所有或部分--只需添加更多的netfilter标记规则即可。

您还可以使用符号别名而不是内核表号。

代码语言:javascript
复制
echo "201 route-via-vpn" >> /etc/iproute2/rt_tables

然后使用“路由-通过-vpn”表名代替所有ip子命令中的编号: ip规则添加.查找路由-通过vpn,ip路由添加.表路由-通过-vpn。

可能需要在隧道建立后自动运行netfilter、ip规则和ip路由命令,并在关闭时运行反向命令(iptables -D、ip规则删除或ip路由删除)。这可以通过OpenVPN脚本来完成。

设置OpenVPN对等点来转发数据包是由您自己决定的。

票数 0
EN

Server Fault用户

发布于 2016-06-04 02:34:39

谢谢你以上的回答,但对我有用的是:

代码语言:javascript
复制
iptables -t mangle -A OUTPUT -p tcp -m multiport --dports 80,443 -j MARK --set-mark 0x1
iptables -t nat -A POSTROUTING -o tun0 -j MASQUERADE
sysctl -w net.ipv4.conf.tun0.rp_filter=2
ip rule add fwmark 0x1 lookup 201
ip route add default dev tun0 table 201
票数 0
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/780359

复制
相关文章

相似问题

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