Hayao0819 / nm-vpngate

A script that makes it easy to connect Network Manager to a VPN Gate
https://www.hayao0819.com/something/nm-vpngate/
Do What The F*ck You Want To Public License
26 stars 2 forks source link

openvpn接続におけるDNSリーク対策 #5

Closed namaenonaimumei closed 2 years ago

namaenonaimumei commented 2 years ago

今のmasterではopenvpnが基準設定となっており、DNSが再設定されない恐れがあります。 確かめるには他国VPS、あるいは接続しようとしているVPNと異なる国から接続し、DNSリークテストを行うこと。

このPRでは、openvpnコンフィグファイルにopenvpn-update-resolv-confを追加し、DNSが国ごとに再設定される仕組みになっております。 PKGBUILDも更新しました。

Hayao0819 commented 2 years ago

PRありがとうございます。 DNSリークについて詳しくないのですが、このコードだと alfredopalhares/openvpn-update-resolv-conf がインストールされていない環境の場合はどうなるのでしょうか?

namaenonaimumei commented 2 years ago

一応PKGBUILD内依存パッケージとして登録しましたが、スクリプトパスが無効な場合は接続する前にエラーが出ますね。 DNSリークをざっと説明しますと、IPが違うのにリクエストされているドメインのIP検索先は更新されないという感じですね。 本来DNSリークって言うのは、VPNを通して接続する際に望ましくないのです。(ISPデータ漏れる恐れがあるのですから)

今どおりの依存パッケージ同時応用が望みでしたら、たとえばこういうのはどうでしょうか

@nm-vpngate
    #-- Add DNS extension to prevent DNS leaks --#
    [[ -f "${DNS_SCRIPT}" && $(stat --format '%U' "${DNS_SCRIPT}") = "root"  ]] && sed -i "\|<ca>|,\|^-----BEGIN CERTIFICATE-----|{s#^-----BEGIN CERTIFICATE-----#script-security 2\nup ${DNS_SCRIPT}\ndown ${DNS_SCRIPT}\n<ca>\n-----BEGIN CERTIFICATE-----#p;d}" "${_ovpn_file}" || true
@nm-vpngate.conf
    # Path to DNS setup script
    DNS_SCRIPT="/etc/openvpn/update-resolv-conf"

あるいは--skip-dnsとかのフラグを追加するのもありかと。。(基準的にはDNS_SCRIPTが有効で、使いたくはない場合vm-gate --skip-dnsで実行という考えです)

namaenonaimumei commented 2 years ago

上の提案ですが https://github.com/namaenonaimumei/nm-vpngate/pull/1 にて確認できます。 よろしいのであれば、こっちのPRにいつでもマージ可能となっております。

Hayao0819 commented 2 years ago

返信遅れてしまってすみません #1も一緒にPR送ってほしいです

namaenonaimumei commented 2 years ago

8 これでよろしいでしょうか