題 如何在Mac OS X Leopard上有選擇地通過VPN路由網絡流量?


當我從家裡連接到我公司的網絡(通過VPN)時,我不想將所有網絡流量都發送到VPN。例如,當我在家工作時,我希望能夠將我的所有文件備份到家中的Time Capsule,並且仍然能夠訪問公司的內部網絡。

我正在使用Leopard的內置VPN客戶端。我已經嘗試取消選中“通過VPN連接發送所有流量”。如果我這樣做,我將無法訪問我公司的內部網站,無論是通過curl還是網絡瀏覽器(儘管內部IP仍然可以訪問)。如果我可以選擇性地選擇要通過VPN路由的一組IP或域並將其餘部分保留在我自己的網絡上,那將是理想的選擇。這是否可以通過Leopard的內置VPN客戶端實現?如果您有任何軟件建議,我也想听聽它們。


87
2017-07-16 06:44


起源


第一種解決方案只適用於PPP VPN。以下解決方案適用於思科VPN(以及其他類型的思科解決方案) superuser.com/questions/91191/... - dr jimbob


答案:


創建文件 在/ etc / ppp / IP向上 以下內容:

#!/bin/sh
/sbin/route add <SUBNET> -interface $1 

更換 <SUBNET> 有子網,你想通過VPN路由(例如192.168.0.0/16)

以root身份執行:

chmod 0755 /etc/ppp/ip-up

每次連接到VPN時都會執行此文件。

給腳本的參數:

  • $1:VPN接口(例如 ppp0
  • $2:未知,是的 0 在我的情況下
  • $3:VPN服務器的IP
  • $4:VPN網關地址
  • $5:用於LAN連接的常規(非vpn)網關

77
2017-11-03 21:31



阿列克謝的小費為我工作。我只是想知道第一行(#!/ bin / sh)是否正在做任何事情。是不是已經註釋掉了。我問這個,因為我描述這個在我們公司使用,越簡單越好:-)謝謝,埃德加 - Edgar Wieringa
@EdgarWieringa:將你的答案轉換成評論。希望更好! :) - studiohack♦
@Edgar - 沒有。第一行很特別。 en.wikipedia.org/wiki/Shebang_(Unix) - James Moore
在10.7 / Lion上,我運氣好了:/ sbin / route add 172.16.0.0/16 -interface $ 1我看到ip-up獲取的參數是:$ 1 = VPN接口,例如'ppp0'$ 2 ='0'(不確定這個值是多少)$ 3 =您的VPN IP $ 4 = VPN公共網關IP地址$ 5 =以太網/ wifi的正常默認網關 - Gabe Martin-Dempesy
如果我配置了兩個或更多VPN連接,會發生什麼?我如何區分它們 /etc/ppp/ip-up 所以我可以相應地添加路線?友好的VPN名稱是否會作為第6個參數傳遞(ipparam)? - Kal


我想做類似的事情。連接VPN,然後通過該VPN路由其他網絡。我最後得到了以下Applescript:

-- Connect Work VPN

tell application "System Events"
    tell network preferences
        tell current location
            tell service "Work"
                connect
                tell current configuration
                    repeat until get connected = true
                        delay 1
                    end repeat
                end tell
            end tell
        end tell
    end tell
end tell

set gateway to "192.168.1.1"

do shell script "route add 172.16.0.0/16 " & gateway with administrator privileges

你需要改變 "Work" 到VPN連接的名稱, 192.168.1.1 到你的網關地址,和 172.16.0.0/16 到您要路由的網絡的地址。通過使用不同的地址重複最後一行,可以添加其他網絡。


9
2017-10-21 09:33



(對於那些想知道這個IP地址的人來說是次要的補充:就像提問者所說的那樣,172.16.0.0/16是一個私有地址空間,就像10.xxx和192.168.xx那麼,它實際上是VPN的一部分,而不是一些外部網站或其他什麼。) - Arjan
所以 192.168.1.1 是VPN上的路由器,還是LAN上的路由器?你不必將默認路由設置回局域網嗎? - Jack M.


有一個 隱藏的功能 在MacOS上的網絡首選項中: 你可以對接口進行排序

打開系統首選項 - >網絡 - >單擊 gear 左下角 - > Set service Order...

<code>Set service Order...</code> VPN Ordering

你擁有自己的關鍵時刻至關重要 網絡接口排序 進入你希望它們被使用的順序。如果您希望所有非LAN數據都轉到VPN,請將VPN接口置於頂部。像這樣排序

  1. VPN
  2. 以太網絡
  3. 飛機場

不是這樣的:

  1. 飛機場
  2. 以太網絡
  3. VPN

這樣,無需檢查以下設置 Session Options

通過VPN連接發送所有流量

 經過測試 L2TP VPN 連接


7
2018-03-18 06:57



我不認為這回答了這個問題,除非OP通過以太網備份到Time Machine並連接到公司網絡視圖機場(無線連接) - Josh Newman
我使用了ppp啟動技巧,但是在我將vpn連接移到無線連接之下之後它才起作用。這是一個有效的答案。 - Arosboro
它真的會成為主要答案!非常感謝,這是不可能搞清楚的! - Andre Soares
這適用於L2TP IPSec VPN,但不適用於Cisco IPSec VPN。 Cisco IPSec VPN在“設置服務訂單”對話框中不可用 - goofology


我在網上看看我是否能找到任何東西,據我所知,你似乎希望能夠像平時一樣使用你的電腦,同時還能連接到公司內部網站,所以,你可以需要設置自定義路由表。

這個鏈接 顯然只適用於10.4,但命令行的東西仍然可以工作。


1
2017-07-16 17:57