OpenFortivPN是PPP+TLS VPN隧道服務的客戶。它產生了PPPD過程,並運行網關和此過程之間的通信。
它與Fortinet VPN兼容。
man openfortivpn
只需連接到VPN:
openfortivpn vpn-gateway:8443 --username=foo
使用身份驗證領域連接到VPN:
openfortivpn vpn-gateway:8443 --username=foo --realm=bar
使用Pinentry程序安全地存儲密碼:
openfortivpn vpn-gateway:8443 --username=foo --pinentry=pinentry-mac
使用用戶證書連接,沒有密碼:
openfortivpn vpn-gateway:8443 --username= --password= --user-cert=cert.pem --user-key=key.pem
不要設置IP路由,也不要將VPN名稱服務器添加到/etc/resolv.conf
:
openfortivpn vpn-gateway:8443 -u foo --no-routes --no-dns --pppd-no-peerdns
使用配置文件:
openfortivpn -c /etc/openfortivpn/my-config
使用/etc/openfortivpn/my-config
包含:
host = vpn-gateway
port = 8443
username = foo
set-dns = 0
pppd-use-peerdns = 0
# X509 certificate sha256 sum, trust only this one!
trusted-cert = e46d4aff08ba6914e64daa85bc6112a422fa7ce16631bff0b592a28556f993db
有關配置選項的完整列表,請參見CONFIGURATION
部分
man openfortivpn
SmartCard支持需要openssl pkcs engine
和opensc
。 LIBP11的PKCS11-引擎需要使用安裝P11-Kit-Devel進行編譯。檢查#464,以討論該領域的已知問題。
要使用您的智能卡至少放置pkcs11:
到User-Cert Config或Commandline選項。它採用完整或部分PKCS#11令牌URI。
user-cert = pkcs11:
user-cert = pkcs11: token =someuser
user-cert = pkcs11: model =PKCS%2315%20emulated ; manufacturer=piv_II;serial=012345678;token=someuser
username =
password =
在大多數情況下, user-cert = pkcs11:
會這樣做,但是如果需要,您可以使用p11tool --list-token-urls
獲得令牌-URI。
目前不支持多個讀者。
SmartCard支持已在Linux下與Yubikey進行了測試,但其他啟用PIV的SmartCard也可能有效。在Mac OS X Mojave上,眾所周知,找不到PKCS發動機。
一些Linux發行版提供了openfortivpn
包:
在MacOS上,Homebrew和MacPorts都提供了openfortivpn
包。安裝Homebrew,然後安裝OpenFortivPn:
# Install 'Homebrew'
/usr/bin/ruby -e " $( curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install ) "
# Install 'openfortivpn'
brew install openfortivpn
或安裝MacPorts,然後安裝OpenFortivPn:
# Install 'openfortivpn'
sudo port install openfortivpn
可以從重複學獲得更完整的概述。
對於其他發行版,您需要從來源構建和安裝:
安裝構建依賴項。
gcc
automake
autoconf
openssl-devel
make
pkg-config
gcc
automake
autoconf
libssl-dev
make
pkg-config
gcc
automake
autoconf
openssl
pkg-config
net-dialup/ppp
pkg-config
gcc
automake
autoconf
libopenssl-devel
pkg-config
automake
autoconf
[email protected]
pkg-config
automake
autoconf
libressl
pkgconf
在Linux上,如果您自己管理內核,請確保編譯這些模塊:
CONFIG_PPP=m
CONFIG_PPP_ASYNC=m
在MacOS上,安裝“ Homebrew”以安裝構建依賴項:
# Install 'Homebrew'
/usr/bin/ruby -e " $( curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install ) "
# Install Dependencies
brew install automake autoconf [email protected] pkg-config
# You may need to make this openssl available to compilers and pkg-config
export LDFLAGS= " -L/usr/local/opt/openssl/lib $LDFLAGS "
export CPPFLAGS= " -I/usr/local/opt/openssl/include $CPPFLAGS "
export PKG_CONFIG_PATH= " /usr/local/opt/openssl/lib/pkgconfig: $PKG_CONFIG_PATH "
構建和安裝。
./autogen.sh
./configure --prefix=/usr/local --sysconfdir=/etc
make
sudo make install
如果用PPPD <2.5.0(例如MacOS的當前版本)定位平台,我們建議您使用選項配置 - enable-legacy-pppd:
./autogen.sh
./configure --prefix=/usr/local --sysconfdir=/etc --enable-legacy-pppd
make
sudo make install
如果需要指定OpenSSL位置,則可以設置$PKG_CONFIG_PATH
環境變量。為了微調,請檢查使用./configure --help
螺旋,尤其是當您交叉編譯時。
最後,安裝運行時依賴關係ppp
或pppd
。
OpenFortivPN需要在設置隧道期間在三個步驟處提高特權:
/usr/sbin/pppd
過程時;/etc/resolv.conf
(隧道啟動時)。由於這些原因,您需要使用sudo openfortivpn
。如果您需要它可由非Sudoer用戶使用,則可以考慮在/etc/sudoers
中添加條目,或者在/etc/sudoers.d
下添加文件。
例如:
visudo -f /etc/sudoers.d/openfortivpn
Cmnd_Alias OPENFORTIVPN = /usr/bin/openfortivpn
%adm ALL = (ALL) OPENFORTIVPN
通過更改openfortivpn
路徑或選擇與adm
不同的組(例如專用openfortivpn
組)來適應上述示例。
警告:確保只有受信任的用戶才能將OpenFortivPn作為根!如#54中所述,惡意用戶可以使用--pppd-plugin
和--pppd-log
選項來轉移程序的行為。
在某些情況下,服務器可能要求VPN客戶端加載並與包含JavaScript的網頁進行交互。根據網頁的複雜性,解釋網頁可能無法觸及命令行程序,例如OpenFortivPn。
在這種情況下,您可以使用外部程序來產生成熟的Web瀏覽器,例如OpenFortivPn-WebView來驗證和檢索會話cookie。可以使用選項--cookie-on-stdin
將此cookie餵給OpenFortivPn。顯然,這樣的解決方案需要圖形會話。
隨意提出拉!
C編碼樣式應遵循Linux內核編碼樣式。