ペり玠閉じたWiFiを介したDNSトンネル

むンタヌネットの完党な䞍圚ず、ログむンパスワヌドの入力を提案する著名なWiFiホットスポット。 たたは、むンタヌネットがないお金がなくなったため3Gが、それを提䟛するための提案を含むプロバむダヌのペヌゞがありたす。

タスクDNSを介しおトンネリングするこずにより、むンタヌネット合法メ゜ッドを取埗したす。

解決策linux +ペり玠+ルヌティング+ NAT + squid。これらはすべおネットワヌクマネヌゞャヌによっお管理されたす。

蚘事では、ペり玠プログラムを䜿甚したDNSトンネルの構成の説明、圢成されたトンネルを通るルヌティングの構成のニュアンス、ペり玠の自助ヘルパヌ、およびネットワヌクマネヌゞャヌ。



歌詞運呜は私をキプロスの茝かしい島に連れお行きたした。キプロスはそのP /パトス、フラッペ、むンタヌネットで有名で、その埌ロシアのオプ゜スは肉の倩䜿のように芋え始めたす。 特に、むンタヌネットぞの接続の詊みは、ロヌカルプロバむダヌytaが慈悲を持っおいるずの期埅で終了したしたが、このフラッペを飲んで䞍朔なADSL 4Mb / 768kbitをたった151ナヌロ接続+月40ナヌロ4メガビット > _ <。 埅機は匕きずられお䌞び3週目がすでに過ぎたかのように、近くには茝かしいPrimeTelがいたした。圌はここで、今ではほずんど目に芋えないWiFiを1時間あたり4ナヌロ172r /時間でむンタヌネットに満足させおくれたした。 私も同意したすが、アクセスポむントはバルコニヌでのみ衚瀺され、アパヌトでは接続が䞍安定で、しばしば倱われたした。 したがっお、PrimeTelが未登録のサブコネクタに提䟛するDNSサヌビスを無料で、぀たり無料で悪甚するずいう、隣人のWEPネットワヌクのハッキングに加えお、完党に犯眪的な1぀の゜リュヌションしかありたせんでした。



「ハりツヌ」に興味のある人は、テキストの埌半で解決策を芋぀けるでしょうが、今のずころはプロセスの理論から始めたしょう。



DNSトンネリング



䜿甚可胜なDNSリゟルバヌ぀たり、再垰が有効になっおいるDNSサヌバヌが手元にある堎合、.comのfoobar.example.comホストのIPアドレスのリク゚ストに進み、そこで応答するサヌバヌのアドレスを芋぀けたす。 com、example.comにアクセスしお、foobarの責任者を芋぀け、指定されたサヌバヌで詳现を確認したす。 IPアドレスAおよびAAAAレコヌドだけでなく、DNSに保存できるその他の情報も認識できたす。 特に



ここでは、DNSずは䜕か、そしおそれがどのように機胜するかに぀いおの300kbの講矩は倱われたした。

必芁に応じお、これから簡単なこずを行いたす。foobar.example.comから小さな情報を芋぀けるようにリゟルバヌに䟝頌できたす。 リゟルバヌは、キャッシュを怜玢し、再床怜玢し、キャッシュから回答したす。 このゟヌン内の異なる名前たたは異なるタむプのレコヌドに察しお異なるレコヌドを芁求するたびに、リゟルバヌは玠盎に歩いお解決したす。 毎回。 プロセスを高速化するために、「誰がそのような情報にアクセスすべきか」ずいう情報をキャッシュし、プロセスは1ホップで続行するこずに泚意しおください。



䞇が䞀、サヌバヌから私たちに情報を送信するためのチャネルがありたす。 そしお戻る ただし、foobar.example.comではなくexample.comから孊習するように䟝頌するこずはできたすが、たずえば、

 0ahb282M-J2hbM-> M-nYM-VgdM-OJM-
 CM-> M-nivlm4M-T5M-FM-p1M-t5M-
 fM-uM-IvLM-HM-NM-aM-IM-eLAM-
 BM-TM-qM-KM-UDM-NM-uM-] M-WM-
 jM-DdbM-> Mk.QVM-lM-uM-`v
 M-@3kGfM-fqFa.example.com


これはむンタヌネット䞊の1぀の長いWebサむトのアドレスであり、友人ずの付き合いを続けるために列に蚘茉されおいたす



リゟルバヌはexample.comにアクセスし、このアドレスに぀いお尋ねたす。 そしお、アドレスが゚ンコヌドされたメッセヌゞである堎合は 暗号人は動揺し始めたした-名前に゚ンコヌドされたメッセヌゞ

そしお、もし..はい、正確に。 名前には暗号化されたメッセヌゞが含たれたす。 サヌバヌに情報を送信する方法を芋぀けたした。 DNSサヌバヌ たたは、DNSサヌバヌになりすたしたが、実際には名前で暗号化されたメッセヌゞをリッスンし、芁求に応じお暗号化されたメッセヌゞで応答する停のサヌバヌ。



぀たり、サヌバヌぞのデヌタチャネルず、DNSリゟルバヌを介しおサヌバヌからクラむアントぞのデヌタチャネルを取埗したす。



ペり玠ナヌティリティはこの原理に基づいおいたす。 珟時点では、私の芳察によるず、これは劥圓な量のカスタマむズを行う唯䞀の実際に機胜するアプリケヌションです。



ペり玠のセットアップ



ペり玠の蚭定は、3぀の重芁なステップになりたす。

ドメむンゟヌンを準備したす。

蚭定でサヌバヌを起動したす。

蚭定を䜿甚しおクラむアントを実行したす。



その埌、このチャネルの䜿甚方法を孊習する必芁がありたすが、これは次の章です。



それでは、難しい郚分から始めたしょう-DNSの準備。



1぀の文で蚭定ドメむンゟヌンを将来のペり玠サヌバヌに委任する必芁がありたす。

蚭定の詳现

ドメむン名を管理するためのアクセス暩が必芁です。 ドメむンがサヌバヌに委任されおいる堎合、問題ありたせん。サブドメむンをビンに登録し、それをペり玠サヌバヌに委任できたす。 「プロバむダヌ管理者パネル」のみがある堎合-問題ははるかに耇雑です-䜕らかの方法で2぀のサブドメむンを登録する必芁がありたす。そのうちの1぀はNSを瀺し、2番目のサブドメむンを瀺したす。



混乱した もう䞀床やりたしょう。 私の蚭定バむンドの䟋を次に瀺したす。



 NS
 j IN A 256.257.258.259




i.example.comにはNSずしおj.example.comサヌバヌがあり、そのIPアドレスは256.257.258.259です。



habrには、ドメむン名を制埡せずに問題を解決する方法に関する蚘事がありたす。 しかし、実際の管理者にずっおは、少なくずも䞀郚のドメむン名を制埡できないのは奇劙なこずでしょうか



2番目の郚分はサヌバヌのセットアップです。 重芁な詳现がありたすが、非垞に簡単です  通垞のDNSサヌバヌを実行するサヌバヌでペり玠を実行するこずはできたせん 。 理由は簡単です-ポヌト番号は53 / UDPで、倉曎する暩利はありたせん。



サヌバヌの起動iodinedは簡単です



iodined 10.99.99.1/24 -c i.example.com



「A」レコヌドの名前ではなく、NSを指定した名前を指定する必芁がありたす。これが行われない堎合、リゟルバヌはペり玠に到達したせん。 -cはIPチェックを無効にしたす。 詳现には觊れたせんでしたが、他の人のDNSに取り残される前に、このこずを実行する方が良いです。 先頭のアドレスは、サヌバヌが持぀トンネルtuntapのアドレスです。 顧客は、次のアドレス.2、.3などを受け取りたす。



ペり玠の打ち䞊げがスクリプト化されおいる堎合でも、パスワヌドを远加できたす iodined -P SECRET 10.99.99.1/24 -c i.example.com



。 ペヌドがトンネルを远加できるように、ルヌトから実行する必芁がありたす。 原則ずしお、rc.localに远加するか、単に名前の埌にを付けお実行できたす。



重芁ペり玠/ペり玠化バヌゞョンは䞀臎する必芁がありたす。 厳密に。 それ以倖の堎合、接続はありたせん。 Linuxの1぀のバヌゞョンがデスクトップにあり、サヌバヌに別のバヌゞョンがある堎合これは䞀般的です、サヌバヌ䞊のクラむアントからバヌゞョンをむンストヌルするこずをお勧めしたす。 リポゞトリからdeb'kuをダりンロヌドしおむンストヌルするだけです利点は䟝存関係がないこずです。



クラむアントの起動も簡単です iodine -P SECRET i.example.com



。



接続埌、リモヌトサヌバヌが䜿甚可胜なアドレスこの堎合は10.99.99.1のトンネルを取埗したす。



䜿甚できたす。



できたす。



䜿甚する。



そしおどうやっお



トンネルの終わりの人生



リモヌトサヌバヌに察しおsshを䜜成する機胜以倖のものに興味がある堎合は、他のすべおを行う必芁がありたす。 この時点たで断食するこずは、マナの芞術的な説明にすぎたせんでした。 しかし、結果ずしお生じるトンネルを実際に䜿甚するには、ゲヌトりェむの倉曎、DNSサヌバヌの「通垞の」ルヌトの維持、断片化されたパケットの問題の克服に関する問題を解決する必芁がありたす。



おおよそ、結果のトンネルを䜿甚する方法は3぀ありたす。



それらをすべお分析したすそしお、それらを構成する方法に぀いお説明したす。 ルヌティングの䞻な問題は、ネットワヌクを通過するパケットのMTUが1500バむト未満であるこずです。 はるかに少ない。 䜿甚しおいないプロバむダヌのDNSサヌバヌに応じお吊定的な意味で「䜿甚」、1344理想的なシナリオから740バむトたでのMTUを取埗したす。 ぀たり、パケットの断片化が発生したす。 そしお、パケットの断片化は非垞に悪いです。 これは、パッケヌゞの末尟を倱うず党䜓が倱われるため、パッケヌゞを倱う可胜性が2〜3倍になるこずを意味したす。 プラスは、゜リュヌションのシンプルさず優雅さ、およびすべおの゜フトりェアのれロ構成です。 オンにしお動䜜したす。 たた、䞀郚のサむトの䞀郚の愚かなCDN / IDCは、断片化されたパケットをブロックしたす。



䞀方、トンネルを介しおリモヌトサヌバヌペり玠化されたずTCPセッションを確立する機䌚がありたす。この堎合、パケットはトンネルMTUサむズで送信され、断片化は発生したせん。 このトンネルに他のtcp接続を倚重化するずフロヌレベル、぀たり゜ケット、私たちに合ったこのサむズの倖の䞖界のパケットず通信できるようになりたす。 ただし、ここでは別のセットアップを埅っおいたす。 チャネルが悪い堎合、TCPは非垞に嫌われたす。 これは䜕で衚珟されおいたすか 突然の損倱ず再詊行を䌎うチャネルでのTCPの実行時間が長いほど、送信が少なくなりたす「茻茳が原因で」パケットが倱われるず仮定。 その結果、倚重化されたチャネルの速床は埐々に䜎䞋し、䜎䞋し、䜎䞋したす...トンネリングがSSHを介しお発生する堎合、暗号化オヌバヌヘッドも課されたす。 箄10分埌、DNSが䞍十分な堎合、TCPセグメントの通過はtcpdump / wiresharkで個別に調べるこずができたす。 別の問題は、耇数のdup ackに぀ながる遅い応答での突然の遅延ですTCPが悪いか悪いかを蚀うのはあたりよくわかりたせん。 しかし、セグメントをTCPに送信するためのタむムアりトを倉曎するためのカヌネル蚭定を芋぀けるこずができたせんでしたrawsで定矩するものを陀くが、dns-tunnelの䞋でカヌネルを再構築するこずができたせんでした-むンタヌネットが接続され、問題を開発する興味が少し消えたした これは、リモヌトサヌバヌで倧きな倉曎を行わない方が良い堎合に䜿甚できる唯䞀の方法であるこずに泚意しおください。 この堎合、コマンドssh -CD 1080 10.99.99.1



を䜿甚しおサヌバヌに接続し、ブラりザヌで127.0.0.1:1080にsocks-proxyを登録し、むンタヌネットにアクセスしたす。 ブラりザから。 のみ。 残りの゜フトりェアはそれに応じお構成されたす。



原則ずしお、䞀郚のプログラムでは、tsocksナヌティリティが圹立ち、アプリケヌションからsocks-proxyぞのトラフィックを匷制的にラップしたす。 これは次のように䜿甚されたす。正しいプロキシアドレスを/etc/tsocks.conf127.0.0.1、ポヌト1080、 tsocks my_net_appication app-arguments



たすに登録しおから、 tsocks my_net_appication app-arguments



実行しtsocks my_net_appication app-arguments



。



別のより興味深い方法がありたすサヌバヌでodidを䜿甚しおsquidを起動し、iondむンタヌフェヌスでたたはトンネルアドレスでaclを䜿甚しおリッスンし、クラむアントずサヌバヌ間の暗号化されおいない接続を䜿甚するように指瀺できたす。 したがっお、最初に断片化されおいないパケットを受信し、次に、DNSサヌバヌの短期的な遅延による劣化がはるかに少ない倚くのTCPセッションがありたす。



欠点が2぀ありたす。1぀目は圧瞮がないこずですsshはトラフィックを取埗できたす。぀たり、HTTPで送信されたヘッダヌはすべお優れおいるこずがわかりたす。2぀目は、SSLが「そのたた」通過するかたったく通過したせん。



トンネルの始たりの生掻ペり玠-mn-ヘルパヌ



もう1぀の問題は、トンネル内のデフォルトゲヌトりェむの構成です。 squidはhttpのみであるため、他のすべおIMAPメヌル、JabberなどのルヌティングはNATを介しお行う必芁がありたす。



問題は、デフォルトゲヌトりェむの構成です。 問題の本質は、DNSサヌバヌが䞎えられたセグメントにない堎合たずえば、5.10.10.10 / 24が䞎えられ、DNSサヌバヌが5.11.11.22ず5.11.12.33にあった堎合、デフォルトゲヌトりェむを倉曎するず倱われたすDNSサヌバヌずの通信。



珟圚のDNSサヌバヌを芋぀けるのもかなり退屈です。 苊劎した埌、ヘルパヌスクリプトを䜜成したした github.com/amarao/iodine-nm-helper



それは非垞に䞍完党であり、さらなる改善を歓迎したす。 しかし、DNSの問題を解決する方法がわからないペり玠-クラむアント-開始スクリプトペり玠でパッケヌゞに添付より明らかに䟿利です。



このスクリプトは、NetworkMangerを䜿甚するように蚭蚈されおいたす。 残念ながら、DHCPリヌスを曎新した埌、スクリプトの繰り返し自己再起動をマスタヌしなかったため、リヌスが曎新されるたびに、ルヌティングが䞭断し、スクリプトを再起動する必芁がありたす。



パフォヌマンスず通話品質



景品の名誉ある恋人、私は倱望するこずを急ぐ。 実際の条件実隓宀倖でのDNSトンネルは非垞に䜎速であり、通垞のむンタヌネットの代わりにはなりたせん。 tele2からの゚ッゞでさえ、ブレヌキングに関しおはさらに高速です。 以䞋は、githubを開いたずきのfirebugからの写真です。 芋お、涙を流しおください-これらは数分の負荷であり、すべおがたさにそれです。







速床は非垞に䞍均䞀に倉化したす。 トンネルを介しお䜜業しおいるずきにtcpで䜕が起こっおいるかを調査するのに少し時間を費やしたした-特定の動䜜のため、倚くの再送信ず重耇するackがありたす。぀たり、tcpは数秒間パケットが「鈍る」堎合、極端に䞍均䞀なレむテンシヌに適応できたせん。たた、数十/数癟ミリ秒かかる堎合がありたす。



最小限の「無ではなく䜕か」ずしお䜿甚できたす。 たずえば、ダりンロヌドのピヌク時um ...サむズが1.6MBの巚倧ファむル、最倧8kb / sの速床を芳枬したしたが、すぐにれロに䜎䞋し、プロセスを数回再起動する必芁がありたした。 今埌数日間で良いcytaが私を接続しない堎合、この倧切な「再送信タむムアりト」を芋぀けるために、TCPの荒野をもう少し深く掘り䞋げたす。



dhcpの問題。 PrimeTelにはDHCPの短期リヌスがありたす。 同時に、リヌスを曎新するず、ルヌトの自動曎新も行われたす。぀たり、デフォルトゲヌトりェむがPaimtelovskyに眮き換えられたす。 頭を悩たせた埌、ネットワヌク0.0.0.0/0もう䞀床、れロで割った倀ぞのルヌトはもっずクヌルになるず決めたした。 同時に、ただ解決しおいないDHCPぞのルヌトが消えるずいう問題が残っおいたすアドレスは異なるネットワヌクから発行され、そのようなネットワヌクはそれぞれ独自のゲヌトりェむを持っおいるため、釘付けされたルヌトは良くありたせんが、別のネットワヌクのアドレスを取埗するこずは非倫理的で静的であるず考えたしたネットワヌク䜿甚。



したがっお、䞀般的に蚀えば、質問は未解決です。



合法性の問題



おそらく最も難しい。 正匏には、これに察しお倚額、倚額、倚額のナヌロを支払うこずなく、受け取るべきではなかったものを手に入れたす。 䞀方、WiFiオペレヌタヌのホットスポットは、自発的か぀意識的にDNSサヌバヌぞのアクセスを蚱可したした。 サヌビスをどのように䜿甚するかはすでに私の問題です。どのような皮類のハッキングも実行しないこずが重芁ですたずえば、パスワヌドの掚枬はすでに明らかな犯眪行為であり、コンピュヌタヌシステムぞの䞍正アクセスです。



私は、この問題はグレヌゟヌンにあるず信じおいたす぀たり、芖点は裁刀所の匁護士のスキルに䟝存したす。 実生掻では、誰も気にしたせん。 より正確には、オペレヌタヌは自分のDNSサヌバヌが壊れおいるかどうかは気にしないかもしれたせんが、それが機胜する限り問題ありたせん。 ペり玠が瀺す玠晎らしい速床に照らしお、数癟キロビットのトラフィックの「損倱」に぀いお真剣に議論するこずすらできたせん。 原則ずしお、この堎合のオペレヌタヌにずっお最も䞍快なのは、DNSの負荷ずwifiネットワヌクのスプリアストラフィックです。



蚭定



チュヌニングする人を陀く党員にずっおさらに退屈です。



サヌバヌ䞊

sysctl net.ipv4.ip_forward = 1

iptables -t nat -A POSTROUTING -s 10.99.99.0/24 -j MASQUERADE

ペり玠化-P SECRET 10.99.99.1/24 -c i.example.com



クラむアントで

vim /etc/iodine-nm-helper.conf蚭定を远加

./iodine-nm-helper

スクリプトはトンネルを通るルヌティングを修正したす



firefoxでは、トンネルサヌバヌのIPを介しおhttpプロキシを蚭定したす。



むカ蚭定



acl good src 10.99.99 / 24

http_accessは適切なlocalhostを蚱可したす

http_accessすべお拒吊



All Articles