如何在 Linux 上透過 OpenVPN 連線路由瀏覽器流量?

如何在 Linux 上透過 OpenVPN 連線路由瀏覽器流量?

我已設定 OpenVPN 連接,但我不想透過它發送所有流量。

我目前的路由表如下所示:

$ ip route
default via 192.168.88.1 dev enp7s0 proto dhcp metric 100
10.8.0.0/24 dev tun0 proto kernel scope link src 10.8.0.2
192.168.88.0/24 dev enp7s0 proto kernel scope link src 192.168.88.29 metric 100

目標是路由所有流量具體的程式通過tun0,第一個候選程式當然是-瀏覽器。

你們有一些想法如何做到嗎?


我知道關於iptables基於 PID 的來源路由,但每次產生新進程時都需要重新建立 iptables 規則。由於瀏覽器的每個選項卡都是一個新進程......我真的無法想像這一切是如何完成的。

下一個想法是使用本地襪子代理,然後運行 say google-chrome --proxy-server="socks5://127.0.0.1:1080"

這與 SSH 隧道配合得很好,因為ssh可以充當 SOCKS 代理。但是,我沒有找到可以以相同方式工作但沒有 SSH 隧道的代理程式:即公開 SOCKS 介面並通過tun0.你能推薦一些東西嗎?

答案1

您可以使用執行瀏覽器或其他內容的使用者的 iproute2 和 uid。例如:

ip route add table 502 default dev tun0
lp rule add uidrange 1000-1002 table 502

答案2

在新的網路命名空間中執行您想要透過 VPN 路由的程序,並將隧道作為預設閘道。

您可能需要重新設定您的 PC,以便瀏覽器(以及應使用 VPN 的任何其他程式)的 .desktop 檔案執行腳本來控制行為,並將腳本新增至 openvpn 設定中以設定命名空間。

相關內容