Surfshark VPNにCentOS&OpenVPNで接続してキルスイッチを作成する設定方法

VPN

キルスイッチとは

キルスイッチとは、何らかの理由でVPNとの接続が切れた際に、ネットワーク接続を遮断する機能です。

せっかくVPNでプライバシーを守っているのに、VPNの接続ソフトが落ちるなどで、気づかぬうちにIPアドレスを隠せてないとか最悪ですからね。

多くのVPNではキルスイッチ機能が配布しているVPN接続ソフトに組み込まれています。

SurfSharkでもVPN接続ソフトのMac版やWindows版にはキルスイッチ機能が組み込まれています。Linux CentOS版ではVPN接続ソフトがないので、自分でキルスイッチ機能をつくらないといけません。

その作り方を紹介します。

CentOSでキルスイッチ機能を作成する方法

UbuntuなどのDebian系Linux OSならSurfsharkに.debパッケージがあるのでそれをそのままインストールすると設定をやってくれるので便利ですが、RedHat系のパッケージは用意されていないので、CentOSでSurfshark VPNに接続するときはOpenVPNを使って設定を行う必要があります。

Surfshark の純正パッケージも裏側ではOpenVPNを利用しているので結果は同じです。

su
yum install openvpn unzip

Surfshark VPN用の設定ファイルをダウンロードします。

wget https://account.surfshark.com/api/v1/server/configurations
unzip configurations

とすると大量の.ovpnファイルが解凍されます。どこかフォルダを作ってその中で行いましょう。 これをopenvpnで読み込めばSurfshark VPNに接続できます。

openvpn jp-tok.prod.surfshark.com_tcp.ovpn

でSurfshark VPNに接続できます。

ユーザー名とパスワードを聞かれます。

ユーザー名とパスワードは以下のサイトで生成しなければなりません。

https://account.surfshark.com/setup/manual

の下の方にある

ユーザー名パスワードが生成されます(必ずSurfSharkのサイトにログインした状態が必要)。

この生成されたユーザー名とパスワードをコマンドラインで入力すれば接続できます。

ユーザー名とパスワードを自動的に読み込むようにする

openvpnで接続するたびにユーザー名とパスワードを入力するのは面倒なので、

vim auth.txt
[ユーザー名]
[パスワード]

auth.txtという2行のファイルを作ります。ユーザー名とパスワードは先ほどの画面で取得したものを使います。このauth.txtをopenvpnの設定ファイルjp-tok.prod.surfshark.com_tcp.ovpnで読み込みます。

jp-tok.prod.surfshark.com_tcp.ovpn内に

auth-user-pass という項目があるのでそこを

auth-user-pass auth.txt

とすることで、auth.txt内のアカウント名とパスワードが自動的に読み込まれます。

これでopenvpnを立ち上げるたびにアカウント名とパスワードを入力する必要が無くなります。

これで、openvpn jp-tok.prod.surfshark.com_tcp.ovpnでVPN接続が実行できるようになります。

キルスイッチを実装する

このコマンドを組み込んだキルスイッチを作成します。

シェルスクリプトを作成し、openvpnでsurfshark VPNに接続するたびにキルスイッチが実行されるようにします。

openvpn_surfshark.sh

firewall-cmd --direct --permanent --add-rule ipv4 filter OUTPUT 0 -m owner --uid-owner user \! -o tun0 -j REJECT
systemctl reload firewalld

cp /etc/openvpn/surfshark/resolv.conf.surfshark /etc/openvpn/surfshark/resolv.conf

FILE="/etc/resolv.conf"
if [ -e $FILE ]; then
  rm $FILE
fi
ln -s /etc/openvpn/surfshark/resolv.conf /etc/resolv.conf
openvpn jp-tok.prod.surfshark.com_tcp.ovpn

trap "systemctl restart NetworkManager" 0

を作成してコレを実行する(root権限でsh openvpn_surfshark.sh)ことで、キルスイッチつきでSurfshark VPNに接続できる。

簡単に説明します。

firewall-cmd --direct --permanent --add-rule ipv4 filter OUTPUT 0 -m owner --uid-owner user \! -o tun0 -j REJECT 

で、-m owner --uid-owner user でuserというユーザーの通信を制限します(userを自分のユーザー名に変更してください)。

\! -o tun0 -j REJECT でtun0以外の通信をさせないようにしています。

tun0はVPNのトンネル通信経路なので、これ以外がつながらないということです。

systemctl reload firewalld

firewalldを再読み込みします。これで上の通信制限が反映されます。

cp /etc/openvpn/surfshark/resolv.conf.surfshark /etc/openvpn/surfshark/resolv.conf

FILE="/etc/resolv.conf"
if [ -e $FILE ]; then
  rm $FILE
fi
ln -s /etc/openvpn/surfshark/resolv.conf /etc/resolv.conf

 

※firewalldが動作していなければ

systemctl start firewalld

としてください。

SurfSharkは2年契約がめちゃくちゃ安いのにかなり使えるVPNです

SurfSharkは2年契約で一月2ドルとかなり安く使えるVPNです。

ExpressVPNと比べてもネットワーク速度などほとんど変らず、コスパは最強だと思います。

 

コメント