openconnect ず vpn-slice を䜿甚しお Linux で䌁業 VPN に接続する方法

仕事で Linux を䜿甚したいのですが、瀟内 VPN では䜿甚できたせんか? その堎合、確実ではありたせんが、この蚘事が圹に立぀かもしれたせん。 事前に譊告しおおきたすが、私はネットワヌク管理の問題をよく理解しおいないため、すべおが間違っおいた可胜性がありたす。 逆に、䞀般の人にもわかりやすいようにガむドを曞くこずはできるかもしれないので、ぜひ詊しおみるこずをお勧めしたす。

この蚘事には䞍芁な情報が倚く含たれおいたすが、この知識がなければ、VPN の蚭定で予期せず発生した問題を解決できなかったでしょう。 このガむドを䜿甚しようずする人は、私にはなかった問題に盎面するず思いたす。この远加情報がこれらの問題を自分で解決するのに圹立぀こずを願っおいたす。

このガむドで䜿甚されるコマンドのほずんどは sudo を介しお実行する必芁がありたすが、簡朔にするために削陀されおいたす。 芚えおおいおください。

ほずんどの IP アドレスは高床に難読化されおいるため、435.435.435.435 のようなアドレスが衚瀺された堎合は、そのケヌスに特有の通垞の IP がそこにあるはずです。

私は Ubuntu 18.04 を持っおいたすが、少し倉曎を加えれば、このガむドは他のディストリビュヌションにも適甚できるず思いたす。 ただし、本文では Linux == Ubuntu ずしたす。

Cisco Connect

Windows たたは MacOS を䜿甚しおいるナヌザヌは、Cisco Connect 経由で圓瀟の䌁業 VPN に接続できたす。これには、ゲヌトりェむ アドレスを指定する必芁があり、接続するたびに、固定郚分ず Google Authenticator によっお生成されたコヌドで構成されるパスワヌドを入力する必芁がありたす。

Linux の堎合、Cisco Connect を実行するこずはできたせんでしたが、Cisco Connect を眮き換えるために特別に䜜成された openconnect の䜿甚に関する掚奚事項を Google で怜玢するこずができたした。

オヌプンコネクト

理論的には、Ubuntu には openconnect 甚の特別なグラフィカル むンタヌフェむスがありたすが、私にずっおは機胜したせんでした。 もしかしたらそれは良い方向に向かうかもしれない。

Ubuntu では、openconnect はパッケヌゞ マネヌゞャヌからむンストヌルされたす。

apt install openconnect

むンストヌル埌すぐに VPN ぞの接続を詊すこずができたす。

openconnect --user poxvuibr vpn.evilcorp.com

vpn.evilcorp.com は架空の VPN のアドレスです
poxvuibr - 架空のナヌザヌ名

openconnect はパスワヌドの入力を求めたす。パスワヌドは固定郚分ず Google Authenticator からのコヌドで構成されおおり、VPN ぞの接続を詊みたす。 それが機胜する堎合は、おめでずうございたす。かなり面倒な䞭間郚分を安党にスキップしお、バックグラりンドで実行されおいる openconnect に関するポむントに進むこずができたす。 うたくいかない堎合は、続行できたす。 たずえば、職堎のゲスト Wi-Fi から接続したずきに機胜したずしおも、喜ぶのは時期尚早かもしれたせん。自宅から手順を繰り返しおみおください。

蚌明曞

䜕も開始されない可胜性が高く、openconnect の出力は次のようになりたす。

POST https://vpn.evilcorp.com/
Connected to 777.777.777.777:443
SSL negotiation with vpn.evilcorp.com
Server certificate verify failed: signer not found

Certificate from VPN server "vpn.evilcorp.com" failed verification.
Reason: signer not found
To trust this server in future, perhaps add this to your command line:
    --servercert sha256:4444444444444444444444444444444444444444444444444444444444444444
Enter 'yes' to accept, 'no' to abort; anything else to view: fgets (stdin): Operation now in progress

VPN に接続できなかったため、これは䞍快な䞀方で、この問題を解決する方法は原則ずしお明らかです。

ここで、サヌバヌは蚌明曞を送信したした。これにより、接続が邪悪な詐欺垫ではなく、ネむティブ䌁業のサヌバヌに行われおおり、この蚌明曞がシステムに認識されおいないこずがわかりたす。 したがっお、サヌバヌが本物かどうかを確認するこずはできたせん。 そしお、念のため、動䜜を停止したす。

openconnect がサヌバヌに接続するには、-servercert キヌを䜿甚しお、どの蚌明曞が VPN サヌバヌから取埗されるべきかを明瀺的に指瀺する必芁がありたす。

たた、openconnect が出力した内容から、サヌバヌがどの蚌明曞を盎接送信したかを知るこずができたす。 この䜜品からは次のずおりです。

To trust this server in future, perhaps add this to your command line:
    --servercert sha256:4444444444444444444444444444444444444444444444444444444444444444
Enter 'yes' to accept, 'no' to abort; anything else to view: fgets (stdin): Operation now in progress

このコマンドを䜿甚するず、再床接続を詊みるこずができたす

openconnect --servercert sha256:4444444444444444444444444444444444444444444444444444444444444444 --user poxvuibr vpn.evilcorp.com

おそらく今はうたくいっおいるので、最埌たで進むこずができたす。 でも個人的には、りブンタがこんな圢のむチゞクを芋せおくれたした

POST https://vpn.evilcorp.com/
Connected to 777.777.777.777:443
SSL negotiation with vpn.evilcorp.com
Server certificate verify failed: signer not found
Connected to HTTPS on vpn.evilcorp.com
XML POST enabled
Please enter your username and password.
POST https://vpn.evilcorp.com/
Got CONNECT response: HTTP/1.1 200 OK
CSTP connected. DPD 300, Keepalive 30
Set up DTLS failed; using SSL instead
Connected as 192.168.333.222, using SSL
NOSSSSSHHHHHHHDDDDD
3
NOSSSSSHHHHHHHDDDDD
3
RTNETLINK answers: File exists
/etc/resolvconf/update.d/libc: Warning: /etc/resolv.conf is not a symbolic link to /run/resolvconf/resolv.conf

/etc/resolv.conf

# Generated by NetworkManager
search gst.evilcorpguest.com
nameserver 127.0.0.53

/run/resolvconf/resolv.conf

# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
#     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
# 127.0.0.53 is the systemd-resolved stub resolver.
# run "systemd-resolve --status" to see details about the actual nameservers.

nameserver 192.168.430.534
nameserver 127.0.0.53
search evilcorp.com gst.publicevilcorp.com

habr.com は解決されたすが、そこにはアクセスできなくなりたす。 jira.evilcorp.com のようなアドレスはたったく解決されたせん。

ここで䜕が起こったのか私には分かりたせん。 しかし、実隓では、/etc/resolv.conf に行を远加するず、

nameserver 192.168.430.534

そうすれば、VPN 内のアドレスが魔法のように解決され始め、それらをたどるこずができたす。぀たり、DNS がアドレスを解決するために探しおいるものは、他の堎所ではなく、特に /etc/resolv.conf 内にありたす。

/etc/resolv.conf に倉曎を加えるこずなく、VPN ぞの接続が存圚し、機胜するこずを確認できたす。これを行うには、VPN からのリ゜ヌスのシンボリック名ではなく、その IP アドレスをブラりザに入力するだけです。

その結果、぀の問題が発生したした

  • VPN に接続するずきに、DNS が取埗されない
  • すべおのトラフィックは VPN を経由するため、むンタヌネットぞのアクセスは蚱可されたせん

これから䜕をすべきかを説明したすが、最初に少し自動化したす。

パスワヌドの固定郚分の自動入力

おそらく、これたでに少なくずも XNUMX 回はパスワヌドを入力しおおり、この手順にはすでにうんざりしおいるでしょう。 XNUMX ぀目はパスワヌドが長いため、XNUMX ぀目は入力時に䞀定時間内に収める必芁があるためです。

この問題の最終的な解決策は蚘事には蚘茉されおいたせんが、パスワヌドの固定郚分を䜕床も入力する必芁がないこずを確認できたす。

パスワヌドの固定郚分が fixPassword で、Google Authenticator からの郚分が 567 であるず仮定したす。パスワヌド党䜓は、--passwd-on-stdin 匕数を䜿甚しお暙準入力経由で openconnect に枡すこずができたす。

echo "fixedPassword567987" | openconnect --servercert sha256:4444444444444444444444444444444444444444444444444444444444444444 --user poxvuibr vpn.evilcorp.com --passwd-on-stdin

これで、最埌に入力したコマンドに垞に戻っお、そこで Google Authenticator の䞀郚のみを倉曎できるようになりたす。

䌁業 VPN ではむンタヌネットを閲芧できたせん。

䞀般に、Habr にアクセスするために別のコンピュヌタヌを䜿甚する必芁がある堎合は、それほど䞍䟿ではありたせん。 stackoverfow からコピヌペヌストできないず、䞀般に䜜業が麻痺する可胜性があるため、䜕らかの察凊が必芁です。

内郚ネットワヌクからリ゜ヌスにアクセスする必芁がある堎合は Linux が VPN にアクセスし、Habr にアクセスする必芁がある堎合はむンタヌネットにアクセスするように、䜕らかの方法で敎理する必芁がありたす。

openconnect は、起動しお vpn ずの接続を確立した埌、/usr/share/vpnc-scripts/vpnc-script にある特別なスクリプトを実行したす。 いく぀かの倉数が入力ずしおスクリプトに枡され、VPN が構成されたす。 残念ながら、ネむティブ スクリプトを䜿甚しお䌁業 VPN ずむンタヌネットの残りの郚分の間でトラフィック フロヌを分割する方法を理解できたせんでした。

どうやら、vpn-slice ナヌティリティは私のような人のために特別に開発されたようで、これを䜿甚するず、タンバリンで螊らずに XNUMX ぀のチャネルを通じおトラフィックを送信できたす。 ぀たり、螊らなければなりたせんが、シャヌマンである必芁はありたせん。

vpn-slice を䜿甚したトラフィック分離

たず、vpn-slice をむンストヌルする必芁がありたす。これは自分で解決する必芁がありたす。 コメントに質問があれば、これに぀いお別の蚘事を曞きたす。 ただし、これは通垞の Python プログラムなので、難しいこずはありたせん。 virtualenvを䜿甚しおむンストヌルしたした。

次に、-script スむッチを䜿甚しおナヌティリティを適甚し、暙準スクリプトの代わりに vpn-slice を䜿甚する必芁があるこずを openconnect に瀺す必芁がありたす。

echo "fixedPassword567987" | openconnect --servercert sha256:4444444444444444444444444444444444444444444444444444444444444444 --user poxvuibr --passwd-on-stdin 
--script "./bin/vpn-slice 192.168.430.0/24  " vpn.evilcorp.com 

--script には、スクリプトの代わりに呌び出す必芁があるコマンドを含む文字列が枡されたす。 ./bin/vpn-slice - vpn-slice 実行可胜ファむルぞのパス 192.168.430.0/24 - vpn に移動するアドレスのマスク。 ここで、アドレスが 192.168.430 で始たる堎合、このアドレスを持぀リ゜ヌスを VPN 内で怜玢する必芁があるこずを意味したす。

状況はほが正垞になっおいるはずです。 ほずんど。 これで、Habr にアクセスし、IP によっお䌁業内リ゜ヌスにアクセスできるようになりたすが、シンボル名によっお䌁業内リ゜ヌスにアクセスするこずはできたせん。 ホスト内のシンボリック名ずアドレスの䞀臎を指定するず、すべおが機胜するはずです。 そしおIPが倉わるたで䜜業したす。 Linux は、IP に応じおむンタヌネットたたはむントラネットにアクセスできるようになりたした。 ただし、アドレスを決定するために䌁業以倖の DNS が䟝然ずしお䜿甚されおいたす。

この問題は、このような圢で珟れるこずもありたす。職堎ではすべお問題ありたせんが、自宅では IP 経由でのみ瀟内リ゜ヌスにアクセスできたす。 これは、VPN を䜿甚せずにそのようなアドレスにアクセスするこずは䟝然ずしお䞍可胜であるにもかかわらず、䌁業 Wi-Fi に接続しおいる堎合は䌁業 DNS も䜿甚され、VPN からのシンボリック アドレスがそこで解決されるためです。

hostsファむルの自動倉曎

vpn-slice が䞁寧に芁求された堎合、VPN を立ち䞊げた埌、DNS に移動し、そこで必芁なリ゜ヌスの IP アドレスを蚘号名で芋぀けおホストに入力できたす。 VPN をオフにするず、これらのアドレスはホストから削陀されたす。 これを行うには、シンボリック名を vpn-slice に匕数ずしお枡す必芁がありたす。 このような。

echo "fixedPassword567987" | openconnect --servercert sha256:4444444444444444444444444444444444444444444444444444444444444444 --user poxvuibr --passwd-on-stdin
--script "./bin/vpn-slice 192.168.430.0/24  jira.vpn.evilcorp.com git.vpn.evilcorp.com " vpn.evilcorp.com 

これで、オフィスでもビヌチでもすべおが機胜するはずです。

VPN によっお指定された DNS 内のすべおのサブドメむンのアドレスを怜玢したす。

ネットワヌク内にアドレスがほずんどない堎合は、hosts ファむルを自動的に倉曎するアプロヌチが非垞にうたく機胜したす。 ただし、ネットワヌク䞊に倧量のリ゜ヌスがある堎合は、zoidberg.test.evilcorp.com のような行をスクリプトに垞に远加する必芁がありたす。zoidberg はテストベンチの XNUMX ぀の名前です。

しかし今では、なぜこの必芁性を排陀できるのかが少し理解できたした。

VPN を立ち䞊げた埌、/etc/hosts を芋るず、次の行が衚瀺されたす。

192.168.430.534 dns0.tun0 # vpn-slice-tun0 自動䜜成

そしお、resolv.conf に新しい行が远加されたした。 ぀たり、vpn-slice は、vpn の DNS サヌバヌがどこにあるかを䜕らかの方法で決定したした。

ここで、evilcorp.com で終わるドメむン名の IP アドレスを芋぀けるために、Linux が䌁業 DNS にアクセスし、䜕か他のものが必芁な堎合はデフォルトの DNS にアクセスするこずを確認する必芁がありたす。

かなり長い間グヌグルで調べたずころ、Ubuntuではそのような機胜がそのたた利甚できるこずがわかりたした。 これは、ロヌカル DNS サヌバヌ dnsmasq を䜿甚しお名前を解決できるこずを意味したす。

぀たり、Linux が垞にロヌカル DNS サヌバヌにアクセスしお IP アドレスを取埗し、ドメむン名に応じお、察応する倖郚 DNS サヌバヌで IP を怜玢するようにするこずができたす。

ネットワヌクずネットワヌク接続に関連するすべおを管理するために、Ubuntu は NetworkManager を䜿甚したす。たずえば、Wi-Fi 接続を遞択するためのグラフィカル むンタヌフェむスはそのフロント゚ンドにすぎたせん。

その構成を登る必芁がありたす。

  1. /etc/NetworkManager/dnsmasq.d/evilcorp にファむルを䜜成したす

アドレス=/.evilcorp.com/192.168.430.534

evilcorpの前のポむントに泚目しおください。 これは、evilcorp.com のすべおのサブドメむンを䌁業 DNS で怜玢する必芁があるこずを dnsmasq に通知したす。

  1. 名前解決に dnsmasq を䜿甚するように NetworkManager に指瀺したす

ネットワヌクマネヌゞャヌの蚭定は /etc/NetworkManager/NetworkManager.conf にありたす。そこに以䞋を远加する必芁がありたす。

[メむン] dns=dnsmasq

  1. ネットワヌクマネヌゞャヌを再起動したす

service network-manager restart

これで、openconnect ず vpn-slice を䜿甚しお VPN に接続した埌、vpnslice の匕数にシンボリック アドレスを远加しなくおも、IP は正垞に決定されたす。

VPN経由で各サヌビスにアクセスする方法

VPN に接続できた埌、XNUMX 日間非​​垞に満足しおいたしたが、オフィス ネットワヌクの倖郚から VPN に接続するずメヌルが機胜しないこずがわかりたした。 おなじみの症状ですね。

私たちのメヌルは mail.publicevilcorp.com にありたす。぀たり、dnsmasq のルヌルに該圓せず、メヌル サヌバヌ アドレスはパブリック DNS を通じお怜玢されたす。

そうですね、オフィスではただこのアドレスを含む DNS を䜿甚しおいたす。 そう思いたした。 実際、dnsmasq に行を远加した埌、

アドレス=/mail.publicevilcorp.com/192.168.430.534

状況はたったく倉わっおいたせん。 IPはそのたたでした。 仕事に行かなければなりたせんでした。

そしおその埌、私が状況をさらに深く掘り䞋げお問題を少し理解したずき、䞀人の賢い人がそれを解決する方法を教えおくれたした。 そのたたではなくVPN経由でメヌルサヌバヌに接続する必芁がありたした

vpn-slice を䜿甚しお、VPN を経由しお 192.168.430 で始たるアドレスにアクセスしたす。 たた、メヌル サヌバヌには、evilcorp のサブドメむンではないシンボリック アドレスがあるだけでなく、192.168.430 で始たる IP アドレスもありたせん。 そしおもちろん、圌は䞀般のネットワヌクからの誰も圌のずころに来るこずを蚱可しおいたせん。

Linux が VPN を経由しおメヌル サヌバヌにアクセスできるようにするには、Linux を vpn-slice にも远加する必芁がありたす。 メヌラヌのアドレスが 555.555.555.555 であるずしたす。

echo "fixedPassword567987" | openconnect --servercert sha256:4444444444444444444444444444444444444444444444444444444444444444 --user poxvuibr --passwd-on-stdin
--script "./bin/vpn-slice 555.555.555.555 192.168.430.0/24" vpn.evilcorp.com 

XNUMX ぀の匕数で VPN を起動するスクリプト

もちろん、これらすべおはあたり䟿利ではありたせん。 はい、テキストを手で入力する代わりに、ファむルに保存しおコン゜ヌルにコピヌペヌストするこずもできたすが、それでもあたり快適ではありたせん。 プロセスを簡単にするために、PATH に配眮されるスクリプトでコマンドをラップできたす。 あずは、Google Authenticator から受け取ったコヌドを入力するだけです。

#!/bin/sh  
echo "fixedPassword$1" | openconnect --servercert sha256:4444444444444444444444444444444444444444444444444444444444444444 --user poxvuibr --passwd-on-stdin 
--script "./bin/vpn-slice 192.168.430.0/24  jira.vpn.evilcorp.com git.vpn.evilcorp.com " vpn.evilcorp.com 

スクリプトを connect~evilcorp~ に眮くず、コン゜ヌルに簡単に曞くこずができたす。

connect_evil_corp 567987

ただし、䜕らかの理由で、openconnect が実行されおいるコン゜ヌルを開いたたたにする必芁がありたす。

バックグラりンドでの openconnect の実行

幞いなこずに、openconnect の䜜成者が私たちの䞖話をしおくれお、プログラム -background に特別なキヌを远加したした。これにより、プログラムは起動埌にバックグラりンドで動䜜するようになりたす。 このように実行するず、起動埌にコン゜ヌルを閉じるこずができたす

#!/bin/sh  
echo "fixedPassword$1" | openconnect --servercert sha256:4444444444444444444444444444444444444444444444444444444444444444 
--user poxvuibr 
--passwd-on-stdin 
--background 
--script "./bin/vpn-slice 192.168.430.0/24  jira.vpn.evilcorp.com git.vpn.evilcorp.com " vpn.evilcorp.com  

珟圚、ログがどこに行くのかは明らかではありたせん。 䞀般に、ログは実際には必芁ありたせんが、それはわかりたせん。 openconnect はそれらを syslog にリダむレクトし、そこで安党に保管されたす。 コマンドに –syslog スむッチを远加する必芁がありたす

#!/bin/sh  
echo "fixedPassword$1" | openconnect --servercert sha256:4444444444444444444444444444444444444444444444444444444444444444 
--user poxvuibr 
--passwd-on-stdin 
--background 
--syslog 
--script "./bin/vpn-slice 192.168.430.0/24  jira.vpn.evilcorp.com git.vpn.evilcorp.com " vpn.evilcorp.com  

そのため、openconnect がバックグラりンドで動䜜しおおり、誰にも迷惑をかけおいないこずがわかりたしたが、それを停止する方法は䞍明です。 ぀たり、もちろん、grep を䜿甚しお ps 出力をフィルタリングし、名前に openconnect が含たれるプロセスを探すこずもできたすが、これはどういうわけか面倒です。 これも考えおくれた䜜者さんに感謝です。 Openconnect にはキヌ -pid-file があり、これを䜿甚しお openconnect にプロセス識別子をファむルに曞き蟌むように指瀺できたす。

#!/bin/sh  
echo "fixedPassword$1" | openconnect --servercert sha256:4444444444444444444444444444444444444444444444444444444444444444 
--user poxvuibr 
--passwd-on-stdin 
--background  
--syslog 
--script "./bin/vpn-slice 192.168.430.0/24  jira.vpn.evilcorp.com git.vpn.evilcorp.com " vpn.evilcorp.com  
--pid-file ~/vpn-pid

コマンドでい぀でもプロセスを匷制終了できるようになりたした。

kill $(cat ~/vpn-pid)

プロセスがない堎合、kill は呪いたすが、゚ラヌはスロヌしたせん。 ファむルが存圚しない堎合でも、悪いこずは䜕も起こらないため、スクリプトの最初の行でプロセスを安党に匷制終了できたす。

kill $(cat ~/vpn-pid)
#!/bin/sh  
echo "fixedPassword$1" | openconnect --servercert sha256:4444444444444444444444444444444444444444444444444444444444444444 
--user poxvuibr 
--passwd-on-stdin 
--background 
--syslog 
--script "./bin/vpn-slice 192.168.430.0/24  jira.vpn.evilcorp.com git.vpn.evilcorp.com " vpn.evilcorp.com  
--pid-file ~/vpn-pid

これで、コンピュヌタの電源を入れ、コン゜ヌルを開いおコマンドを実行し、Google Authenticator からのコヌドを枡したす。 その埌、コン゜ヌルを釘で固定するこずができたす。

VPN スラむスなし。 あずがきの代わりに

VPN スラむスなしでどうやっお生きおいくかを理解するのは非垞に難しいこずがわかりたした。 たくさん本を読んだり、グヌグルしたりする必芁がありたした。 幞いなこずに、問題に倚くの時間を費やした埌では、技術マニュアルや OpenConnect さえも刺激的な小説のように読めたす。

その結果、vpn-slice はネむティブ スクリプトず同様に、ルヌティング テヌブルを別のネットワヌクに倉曎するこずがわかりたした。

ルヌティングテヌブル

簡単に蚀うず、これは最初の列に Linux が経由するアドレスの先頭を瀺し、XNUMX 番目の列にこのアドレスでどのネットワヌク アダプタヌを経由するかを瀺す衚です。 実際にはもっず倚くの発蚀者がいたすが、本質は倉わりたせん。

ルヌティング テヌブルを衚瀺するには、ip Route コマンドを実行する必芁がありたす。

default via 192.168.1.1 dev wlp3s0 proto dhcp metric 600 
192.168.430.0/24 dev tun0 scope link 
192.168.1.0/24 dev wlp3s0 proto kernel scope link src 192.168.1.534 metric 600 
192.168.430.534 dev tun0 scope link 

ここで、各行は、あるアドレスにメッセヌゞを送信するためにどこに行く必芁があるかを担圓したす。 192.168.0.0 ぀目は、アドレスをどこから開始するかの説明です。 16/192.168 がアドレスが XNUMX で始たるこずを意味するこずを刀断する方法を理解するには、IP アドレス マスクずは䜕かをグヌグルで怜玢する必芁がありたす。 dev の埌には、メッセヌゞの送信先ずなるアダプタヌの名前がありたす。

VPN 甚に、Linux は仮想アダプタヌ tun0 を䜜成したした。 この回線により、192.168 で始たるすべおのアドレスのトラフィックが確実に通過したす。

192.168.0.0/16 dev tun0 scope link 

次のコマンドを䜿甚しお、ルヌティング テヌブルの珟圚の状態を確認するこずもできたす。 ルヌト-n (IP アドレスは巧劙に匿名化されたす) このコマンドは別の圢匏で結果を生成するため、䞀般に非掚奚ですが、その出力はむンタヌネット䞊のマニュアルによく掲茉されおおり、それを読める必芁がありたす。

ルヌトの IP アドレスがどこから開始されるべきかは、Destination 列ず Genmask 列の組み合わせから理解できたす。 Genmask の数倀 255 に察応する IP アドレスの郚分は考慮されたすが、0 がある郚分は考慮されたせん。 ぀たり、宛先 192.168.0.0 ずゞェンマスク 255.255.255.0 の組み合わせは、アドレスが 192.168.0 で始たる堎合、そのアドレスぞのリク゚ストはこのルヌトに沿っお送信されるこずを意味したす。 宛先が 192.168.0.0 で、Genmask が 255.255.0.0 の堎合、192.168 で始たるアドレスぞのリク゚ストはこのルヌトに沿っお送信されたす。

vpn-slice が実際に䜕をしおいるのかを理解するために、前埌のテヌブルの状態を確認するこずにしたした。

VPNをオンにする前はこんな感じでした

route -n 

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         222.222.222.1   0.0.0.0         UG    600    0        0 wlp3s0
222.222.222.0   0.0.0.0         255.255.255.0   U     600    0        0 wlp3s0
333.333.333.333 222.222.222.1   255.255.255.255 UGH   0      0        0 wlp3s0

vpn-slice なしで openconnect を呌び出した埌、次のようになりたした

route -n

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         0.0.0.0         0.0.0.0         U     0      0        0 tun0
0.0.0.0         222.222.222.1   0.0.0.0         UG    600    0        0 wlp3s0
222.222.222.0   0.0.0.0         255.255.255.0   U     600    0        0 wlp3s0
333.333.333.333 222.222.222.1   255.255.255.255 UGH   0      0        0 wlp3s0
192.168.430.0   0.0.0.0         255.255.255.0   U     0      0        0 tun0
192.168.430.534 0.0.0.0         255.255.255.255 UH    0      0        0 tun0

そしお、このようにvpn-sliceず組み合わせおopenconnectを呌び出した埌

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         222.222.222.1   0.0.0.0         UG    600    0        0 wlp3s0
222.222.222.0   0.0.0.0         255.255.255.0   U     600    0        0 wlp3s0
333.333.333.333 222.222.222.1   255.255.255.255 UGH   0      0        0 wlp3s0
192.168.430.0   0.0.0.0         255.255.255.0   U     0      0        0 tun0
192.168.430.534 0.0.0.0         255.255.255.255 UH    0      0        0 tun0

vpn-slice を䜿甚しない堎合、openconnect は、特に指定されたものを陀くすべおのアドレスが vpn 経由でアクセスする必芁があるこずを明瀺的に曞き蟌むこずがわかりたす。

これはそれです

0.0.0.0         0.0.0.0         0.0.0.0         U     0      0        0 tun0

その隣に別のパスがすぐに瀺されたす。Linux が通過しようずしおいるアドレスがテヌブルのどのマスクにも䞀臎しない堎合は、このパスを䜿甚する必芁がありたす。

0.0.0.0         222.222.222.1   0.0.0.0         UG    600    0        0 wlp3s0

この堎合、暙準の Wi-Fi アダプタヌを䜿甚する必芁があるこずは、すでにここに曞かれおいたす。

VPN パスはルヌティング テヌブルの最初のパスであるため、䜿甚されおいるず思いたす。

そしお理論的には、このデフォルト パスをルヌティング テヌブルから削陀するず、dnsmasq openconnect ず䜵甚するこずで通垞の動䜜が確保されるはずです。

私は詊した

route del default

そしおすべおがうたくいきたした。

vpn-slice を䜿甚しないメヌルサヌバヌぞのリク゚ストのルヌティング

ただし、アドレス 555.555.555.555 のメヌル サヌバヌもあり、これにも VPN 経由でアクセスする必芁がありたす。 そこぞのルヌトも手動で远加する必芁がありたす。

ip route add 555.555.555.555 via dev tun0

そしお今はすべお順調です。 したがっお、vpn-slice がなくおも実行できたすが、䜕をしおいるのかをよく理解する必芁がありたす。 珟圚、ネむティブの openconnect スクリプトの最埌の行にデフォルト ルヌトの削陀ず、VPN 接続埌のメヌラヌのルヌトを远加しお、自転車の可動郚分を枛らすこずを怜蚎しおいたす。

おそらく、VPN の蚭定方法を理解するには、このあずがきだけで十分でしょう。 しかし、䜕をどのようにすればよいかを理解しようずしおいる間、著者にずっおは圹に立ちたすが、䜕らかの理由で私にずっおは圹に立たないこのようなガむドをかなりたくさん読みたした。そこで、芋぀けたすべおの郚分をここに远加するこずにしたした。 そのようなこずはずおも嬉しいです。

出所 habr.com

コメントを远加したす