起動時に自動的にVPNに接続

起動時に自動的にVPNに接続

CentOS 6.5システムが起動したときにVPN接続を自動的に開始したいと思います。次のように、コマンドラインで実行するFortinet VPNクライアントがあります。

[centhost]$./forticlientsslvpn_cli --server 10.0.0.50:443 --vpnuser userxyz --keepalive
VPN Password:
Server certificate is invalid. Do you want to connect anyway? [y/n]
Connection successful.
Tunnel running.

この接続を自動化するときの問題は、VPNパスワードを入力してから無効な証明書を受け入れる必要があることです。また、VPNクライアントは接続後にデーモンではなくユーザープロセスとして実行され続けているようですが、これは問題ありませんが、バックグラウンドで実行し続けるために必要です。また、ps aux | grep fortiを実行したときにプロセスを1つだけ実行するのではなく、実際に同じプロセスを4つ実行していることを発見しました。これが私の自動化の選択に影響を与えるかどうかはわかりません。また、接続に失敗した場合は自動的に再起動したいと思います。どんな提案がありますか?

答え1

私は次のコードを使用しています(expectまずパッケージをインストールする必要があります)。

、、、およびをあなたの値にforticlientsslvpn_cli置き換えます。/opt/forticlientsslvpnIP_FORTIGATEPORT_FORTIGATEVPN_USERNAMEVPN_PASSWORD

#!/usr/bin/expect -f
set force_conservative 0  ;
if {$force_conservative} {
    set send_slow {1 .1}
    proc send {ignore arg} {
            sleep .1
            exp_send -s -- $arg
    }
}
set timeout -1
spawn $env(SHELL)
match_max 100000
send -- "cd /opt/forticlientsslvpn/\r"
send -- "./forticlientsslvpn_cli --server IP_FORTIGATE:PORT_FORTIGATE --vpnuser VPN_USERNAME"
expect -exact "./forticlientsslvpn_cli --server IP_FORTIGATE:PORT_FORTIGATE --vpnuser VPN_USERNAME"
send -- "\r"
expect -exact "\r
Password for VPN:"
send -- "VPN_PASSWORD\r"
expect -exact "\r
STATUS::Setting up the tunnel\r
STATUS::Connecting...\r"
send -- "Y\r"
expect eof

関連情報