通过以太网共享 VPN 连接

通过以太网共享 VPN 连接

对 Linux 来说相当新,运行 Ubuntu 18.04 LTS。

我正在寻找复制可以在 macos 硬件和操作系统上执行的功能:通过硬件接口共享操作系统级 VPN 连接。

在这个特定情况下,笔记本电脑连接到不安全的 wifi,建立 VPN 隧道,然后与以太网接口共享 VPN,我在该接口上连接 DD-WRT 路由器(显然是双 nat),为客户端提供安全的 wifi/以太网。使用带有真实操作系统的笔记本电脑作为网关的原因是通过浏览器处理强制门户(许多酒店都这样做)。

此设置使得客户端的流量无法通过网关 wifi 泄漏,因为只共享 VPN 连接。如果 VPN 断开,客户端将完全没有连接。在 macos 下使用 l2tp 很容易做到。

有没有一种从 gnome GUI 中执行此操作的合理简单方法?我花了几个小时尝试让 L2TP+IPsec 隧道工作,最后放弃了。我现在正在使用 OpenVPN。但我找不到一种简单的方法来共享 OpenVPN 连接,只是共享 wifi,如果隧道断开,它将变得不安全,从而暴露客户端流量。

谢谢你!

答案1

经过反复尝试,并借助其他论坛的帮助,我终于成功了。请注意,我改用 OpenVPN 协议,因为它在 Linux 上支持更好,而且整体吞吐量也更好。

唯一可以使用 GUI 完成的部分是设置 OpenVPN 连接,以及第二个接口上的客户端网络(这在网络管理器中完成)。在我的例子中,ens9 是一个辅助以太网接口,我在一个唯一的本地子网上用静态 IP 配置了它。客户端设备已预先配置为使用此 IP 作为网关。

我的解决方案的完整详细信息如下:https://www.linuxquestions.org/questions/linux-networking-3/share-vpn-with-ethernet-interface-4175655027/

网关设备本身的 VPN 终止开关如下:

在 /etc/sysctl.conf 中进行这些更改

#disable ipv6
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1
#enable packet forwarding
net.ipv4.ip_forward=1

在 UFW 的默认配置文件(/etc/default/ufw)中,进行以下更改:

DEFAULT_FORWARD_POLICY=“ACCEPT”

通过命令行,编辑 ufw 规则如下:

sudo ufw default deny incoming
sudo ufw default deny outgoing
sudo ufw allow out on tun0
sudo ufw allow out on wlp2s0 to XXX.YYY.ZZZ.AAA port 1194 proto udp

在最后一行中,使用您用于 WAN 连接的接口名称(使用 ifconfig 命令查看所有接口),并使用您的 OpenVPN 服务器的 IP 地址和端口号 - 这可以从提供的 ovpn.config 文件中提取。

这样你就可以在网关设备上获得一个有效的 VPN 终止开关。最后一步是在辅助接口上伪装 VPN 连接(在我的情况下,是名为 ens9 的以太网设备)。

不要使用 nm-connection-editor 的 GUI 方法来启用共享,它会绕过您的终止开关。相反,编辑文件 /etc/ufw/before.rules,在 *filter 标题上方添加 nat 部分:

### Start OpenVPN Share rules
### NAT table rules
*nat
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING -s 192.168.10.0/24 -o tun0 -j MASQUERADE   
COMMIT

其中 192.168.10.0/24 代表客户端网络的 IP 地址范围。在我的例子中,我将其静态地定义在该范围内。

就是这样了。我预计需要这样的 ufw 规则:

sudo ufw allow out on ens9 to 192.168.10.0/24

但即使没有它,它也能正常工作。

相关内容