透過乙太網路共享 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,如果隧道斷開,wifi 就會變得不安全,從而暴露客戶端流量。

謝謝你!

答案1

經過一些嘗試和錯誤以及來自不同論壇的幫助,我成功地完成了這項工作。請注意,我切換到 O​​penVPN 協定是因為 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 方法來啟用共享,它將繞過您的終止開關。相反,透過在 *filter 標題上方添加 nat 部分來編輯文件 /etc/ufw/before.rules:

### 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

但沒有它它也能正常工作。

相關內容