Vpn
如何讓 forticlient 在 OSX El Capitan 中工作
自 OSX El Capitan 以來,forticlient VPN 軟體在使用水平分割時很糟糕。問題是 DNS 請求在普通主介面上發送到 VPN 隧道的 DNS。
我們如何通過正確的介面(即 VPN 隧道)發送 DNS 請求
編輯後的答案
(重新)改進了幾乎所有其他人的改進答案(@elmart,@user26312,我自己)。腳本中不需要編輯:
#!/bin/bash default_line=$(netstat -rn |grep default) gateway=$(echo $default_line | awk '{print $2}') interface=$(echo $default_line | awk '{print $6}') echo $gateway echo $interface scutil <<EOF d.init get State:/Network/Service/forticlientsslvpn/IPv4 d.add InterfaceName ppp0 set State:/Network/Service/forticlientsslvpn/IPv4 EOF route delete default route delete -ifscope $interface default route add -ifscope $interface default $gateway route add -net 0.0.0.0 -interface $interface
使用 sudo 使您放入的文件可執行並執行(在連接 VPN 後)。在腳本進行任何更改之前,它會查看您目前的預設路由,因此知道您目前的網關和介面。
舊答案
這不是一個完整的解決方案,您必須在每次 VPN 連接設置後執行以下兩項高級操作:
- 我們必須將隧道的介面設置為
ppp0
- 重做預設路由(因為1.隱式設置了錯誤的預設網關,拆分隧道以後應該仍然可以正常工作)
scutil-forti
例如,使用名稱創建一個文件d.init get State:/Network/Service/forticlientsslvpn/IPv4 d.add InterfaceName ppp0 set State:/Network/Service/forticlientsslvpn/IPv4
重做網關路由,因此製作另一個文件 ,
routes-forti
(注意帶有特定網路設置的行):sudo route delete default sudo route delete -ifscope en0 default # This line depends on your interface sudo route add -ifscope en0 default 192.168.2.252 # This depends on your normal local gateway. sudo route add -net 0.0.0.0 -interface en0
現在,執行,
$ cat scutil-forti |sudo scutil ; bash routes-forti