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内核编码样式。