OpenFortIVPNは、PPP+TLS VPNトンネルサービスのクライアントです。 PPPDプロセスを生成し、ゲートウェイとこのプロセス間の通信を操作します。
Fortinet VPNSと互換性があります。
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を確認してください。
SmartCardを使用するには、少なくともpkcs11:
ユーザー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
でtoken-uriを取得できます。
現在、複数の読者はサポートされていません。
SmartCardサポートはLinuxの下でYubikeyでテストされていますが、他のPIV対応のスマートカードも機能する可能性があります。 Mac OS X Mojaveでは、PKCSエンジンバイIDが見つからないことが知られています。
一部の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
autoconf
[email protected]
pkg-config
automake
autoconf
libressl
pkgconf
automake
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
現在のバージョンのMACOSなど、PPPD <2.5.0を使用してプラットフォームをターゲットにする場合は、オプション-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は、トンネルのセットアップ中に3つのステップで高度な特権を必要とします。
/usr/sbin/pppd
プロセスを産むとき;/etc/resolv.conf
に名前を追加するとき(トンネルが上がっているとき)。これらの理由から、 sudo openfortivpn
使用する必要があります。非ソーアーユーザーが使用できるようにする必要がある場合は、 /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を含むWebページをロードして対話する必要がある場合があります。 Webページの複雑さに応じて、Webページの解釈は、OpenFortIVPNなどのコマンドラインプログラムの範囲を超えている可能性があります。
そのような場合、OpenFortIVPN-Webviewなどの本格的なWebブラウザーを生成する外部プログラムを使用して、セッションCookieを認証および取得できます。このCookieは、オプション--cookie-on-stdin
使用してOpenFortIVPNに供給できます。明らかに、このようなソリューションにはグラフィックセッションが必要です。
プルリクエストをお気軽にお問い合わせください!
Cコーディングスタイルは、Linuxカーネルコーディングスタイルに従う必要があります。