我有一个myvpnserver
带有 2 个接口的 Debian Linux VPN 路由器,eno1
并且eno2
:
eno1
连接到局域网和互联网路由器。在这个具有静态 IP 地址的接口上,myvpnserver
有它的默认网关(到 Internet)。OpenVPN 使用此互联网连接连接到 VPN 服务器。eno2
连接到一个开关。DHCP 服务器在此接口上运行。我希望连接到的客户端的所有流量eno2
都通过 VPN / tun0 路由。
基本设置工作正常。从连接到eno2
I 的主机可以到达远程 VPN LAN 中的主机(例如10.123.0.0/24
)。
我的下一个目标是myvpnserver
根据源地址或接口进行路由。
如果myvpnserver
连接到 Internet(例如ftp.debian.org
或 VPN 主机),它应该使用默认网关 via eno1
。如果连接到的客户端eno2
想要连接到相同的 Internet 主机(例如ftp.debian.org
),则应通过 VPN /tun0
而不是myvpnserver
默认网关路由流量。
// For Incoming Traffic:
If( InputInterface = eno2 ) Then
default_gateway = 172.17.100.1
Else
default_gateway = gateway as declared in /etc/network/interfaces
End If
我发现基于策略的路由似乎是可行的方法。虽然“正常”路由仅基于目的地,但据说基于策略的路由能够考虑其他方面,例如输入接口或源 IP 范围。
要采取什么步骤?(我在 Debian 11 / Bullseye。)
1.) 我添加了一行1000 vpntunnel
到/etc/iproute2/rt_tables
.
下一步是什么?你能指出一个配置示例吗?
非常感谢您的任何建议!
接下来要采取的步骤可能就像添加一个策略规则和一个路由表条目一样简单。
你可以试试:
我假设 172.17.100.1 是您的 VPN 隧道的另一端。我在表格中使用了数值 1000,但由于您添加了一个名称为“vpntunnel”的条目,因此您可以使用该名称。
您的 VPN 可能已经有一些可能与我的建议相冲突的配置设置。
ip rule show
" " 和 " "的输出ip route show table all
可能对问题有用。此外,现有的 iptables 配置也可能需要更改建议的解决方案。