ドッカーと彼女はとても楽しかったですか?商用4Gの戦闘を構築するために行動します!

どのように時間がこのシリーズの前回の記事から、ハエ「の商用グレードの4G機関がガイドラインを準備するように設定[関連記事]」をリリースした時間が原因の様々な退屈なものに先週、2週間経過して、何のスタート火曜はありません空の書き込み記事、そうGUGU区。

その後、書類を準備し、我々は、エージェントが4Gのために必要なハードウェアとソフトウェアをセットアップするかを理解するだけでなく、様々なオプションの長所と短所を知っています。今、私たちは実際のビルドを開始することができ、我々はまた、待望のことを考えています。


基本的な考え方

私たちは何の関係も持っている4Gを構築する機関とドッカー、あなたは非常に好奇心旺盛であってもよいし、この記事のタイトルからプログラムは主にドッカーを構築するために使用され、この時間を見ることができますか?

ああ、素晴らしい関係、我々は全体をとかし、4Gエージェントを構築するための基本的なプロセスを見てみましょう:

  1. カードのダイヤルを呼び出し、それが成功をダイヤルした後の仮想ネットワークカードを作成します。(アクセスすることができ、通常の状況下では仮想カードを使用してください)

  2. マルチカードの場合は、最初のステップを繰り返して、あなたはより多くの仮想NICを取得します。

  3. 仮想ネットワークカードネットワークカード、ネットワークカードとして使用し、ネットワークカードなどのアクセスネットワーク内のエンティティを使用するプロキシ・サーバを起動します。

    このような使用がほとんどです

しかし、その後、私の前の試験結果によると、問題がある、Linux環境での電流は、HTTPプロキシサーバが別々に行わネットワークカードと非常に厄介ああですネットワークカードを指定することができていません...我々はそうすることができない場合は、次のように存在しますので、そのような問題:

  1. 仮想ネットワークカード上のネットワークとネットワークの両方が、あなたは、パブリックネットワークアクセスを行くためにプロキシサーバーを使用する必要があります。
  2. LANエンティティのネットワークが、ネットワークを複数のネットワークアダプタを利用することができない、特定のプロキシサーバにロックされています。

ああ...そうHTTPプロキシサーバにはない、多くの場合、SOCKS5のプロキシサーバーを操作するいくつかのショーを作るために使用されるものを使うのか?あなたはネットワークカードどうかを指定することができ、その後、HTTPプロキシSOCKS5のプロキシとしてPrivoxyのようなツールがうまく変換されます。場合 (壁をサポートするソフトウェアのよく知られているWindowsのバージョンには、HTTPプロキシを回しそうです)

私はいくつかの文書を見つけたものの、いくつかの試みの後、SOCKS5のプロキシサーバーを使用すると、いずれか、カードを指定することができますが、指示に従った後、直接、私は(上または1でロックのいずれか欲しいものに影響していないようだと言うことですではない)は、インターネット上で、いくつかの問題がありそう。あなたは、ルーティングテーブルを満たすために必要がある場合があり、それを動作するように設定されていますが、ネットワークエンジニアリングの私の理解は非常に深いではない、数日は、それらを従事ので、何かを考える必要はありませんでしたか。

それは私が事--Docker考えるとき、この問題を解決するために使用することができます!

ドッカーコンテナが作成されるため、どんなに多くの外部ネットワークカード、コンテナ内部のネットワークカードのみドッカー独自の仮想LAN(コンテナ間の通信に使用される)とローカルループバックインターフェイス(それを無視しないでください)、私たちは存在しませんコンテナ内での動作をダイヤルするときに、作成した新しい仮想ネットワークアダプタは、外の世界または他の容器には影響しませんので、あなたはプロキシサーバNICを指定する必要はありません、直接実行を開始することができるようになります!

だから今、それを見るために、実際の運用にハイパーリンクに変換プロセス全体を走りました!


システム

サンプルデバイスは、私はラズベリーパイを使用していますので、このバージョン、選択システムの多くの側面を構築するためのドッキングウィンドウの方法は、ので、ここでRaspbian(Debianののラズベリーパイ排他的なバージョン)を使用することにしました。あなたが別のデバイスを使用している場合は、うまく直接彼らの共通のシステムを選択してください。

もちろん、最初のステップは、最初のダウンロード後に準備ができているとドッカーをインストールし、ここで私は直接ドッカーの公式をインストールするスクリプトをインストールワンクリックで使用します。

curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
# 出自官方文档:https://docs.docker.com/install/linux/docker-ce/debian/#install-using-the-convenience-script
复制代码

ではない、その後、関連する情報を見つけるために、独自の検索エンジンを使用した場合のワンクリックインストールスクリプトの理論は、すべてのLinuxディストリビューションを使用することができ、結局、長い間出てきました。

ドッカーをインストールしたら、2つのオプションがあります。

  1. モードに経験、操作の具体的な詳細を見つけるには、どのようにのようなものです。
  2. この一節を見てはいけない、私はホイールの最も直接的な使用を書かれている、この記事の一番下に向けます。

コンテナを開始

経験、私たちは、次のコマンドを実行し、それを起動し、そのようなドッカーコンテナに指示します:

sudo docker run -it --rm --privileged -p 3128:3128 ubuntu:18.04 bash
复制代码

上記のコマンドの意味は、コンテナUbuntu18.04ため、シェルが実行容器の内部に内部システムを開始することでbash外の世界をマッピングし、その後、外の世界に、コンテナ3128にポートをマップ;あなたはbashのを終了した場合、コマンドは自動的にコンテナを破壊しますポート3128であり、最後privilegedのパラメータは、特権モード、容器にカードをマッピングするための装置になっています。

あなたがイメージが遅いダウンロードする場合は、直接壁を支えることができる「ドッカー加速器」について検索することができます。

カードをテストするには正常です

容器の内部に入った後、我々は何を行うことができls /dev/ttyUSB*、それがある場合は、カードを見ては、適切に、(容器の外に開かれた特権モードので、同じである)認識されていない、と私は唯一の挿入、その後、4Gネットワークカードで買いましたカードの場合、あなたは4は、ttyUSB機器が表示されます。

、12は、ttyUSB機器の合計を3のようなカードのルックスを挿入します

4Gネットワ​​ークカードと異なるハードウェアの組み合わせは、実際の状況を受けて変化してもよいです。

あなたが見ることができる場合4✖4G网卡个数は、ttyUSB機器を、それは何の問題は示していない、あなたは、次のステップを開始することができます。

ダイヤルアップインターネットアクセス

次にする事はwvdialのは、このツールを使用することを選択することができます側面をダイヤルし、あなたも、このようなベンダが提供する(ダイレクトコールPPPD)などのダイヤルアップスクリプトFanconnを使用するように選択することができ、ダイヤルアップ、効果の使用いくつかの違いがあるでしょうです。ビジネスはダイヤルアップスクリプトを提供しない場合、それはそれを使用するのwvdial、それは自動的に、すなわちを始めるために、設定を生成することができます。

Fanconnの技術者が直接ダイヤルアップスクリプトを提供するため、私の側には、それから、私はこのスクリプトを使用します、wvdialの文書はオンライン、多くの非常に詳細があり、独自の検索に必要で、友人を言及するよりはありません。

あなたが(コンテナに入るためにどのように私はそれを言わないだろう?)、ダイヤルアップFanconnにこのスクリプトを使用している場合は、次に直接apt install ppp使用ダイヤルアップツール、インストール後にchmod +x quectel-pppd.sh実行する権限を追加するために、ダイヤルアップスクリプトのために、そして./quectel-pppd.sh /dev/ttyUSB3、あなたはできます。

ダイヤルは、ときに使用し/dev/ttyUSB34枚目のカード4G通信ポートの解釈を意味し、文書は次のとおりです。ttyUSB3→PPP接続の場合またはATコマンド通信、 PPP接続用またはコマンド通信AT、あるものを翻訳します。

図に見られる状態に似たツールを使ってダイヤルした後にifconfig:

前述したようにそれを見ることができる、3枚のカード、ドッカーが所有する1、(制御しない)ローカルループバックインターフェイス、生成された仮想ネットワークカードのダイヤルが存在することになります。

ドッカー容器内で使用されていない場合、wwan0(または他の名前)が存在することになる、すなわち、4Gカード本体です。

テストするかどうか、通常のインターネット

今、あなたはカールを使用する場合--interface、要求(例えば:それから、指定された仮想ネットワークアダプタのパラメータをcurl --interface ppp0 https://ip.cn)、すでに成功した要求である、IPを使用すると、割り当てられた作業を、対応するSIMカードを使用するものです。

ドッカーミラーは通常、非常に合理化されているので、何の事前Ubuntuの鏡像のnet-toolsがないので、のiputils-pingを、 VIM、カールなど、これらのパッケージのインストールする必要があります。あなたはifconfigコマンドは、ping、カールを見つけるのであれば、vimの慌てる必要はありません、服用しないで、これは正常です、実行しapt install 包名たコマンドがインストールします。

(例:あなたが直接、成功している要求することができない場合、それはDNS解決の問題である可能性があり、あなたがパブリックIPにpingを実行しようとすることができるping 1.1.1.1)とドメイン名(例:ping ip.cn)、IPをpingを実行することができますが、ドメイン名がDNS解決が失敗したと報告されている場合、あなたは、DNSの問題を設定することを確認することができます。

4Gの問題をダイヤルするときに、DNSの設定は、通常のでダイヤルアップツールは、通常、サーバーの設定は、コンフィギュレーションに書かれているDNSのオペレータに戻らない場合は、我々は手動で見て(あなたが指定することができ、特定のDNSを強制したい)を設定することができます:

# 以下为阿里云的公共DNS
echo 'nameserver 223.5.5.5' >> /etc/resolv.conf
echo 'nameserver 223.6.6.6' >> /etc/resolv.conf
复制代码

ドッカー容器に、この/etc/resolv.conf2つのコンテンツを有する文書はまた、容器自体が必要とされることがあり、/カバーを除去しないことが推奨され、そうでない状況が容器との間のコンテナの名前を使用して相互に通信することができない表示されます。

Proxyを開始

だから、インターネットの後に実際にダイヤルすることにより、4Gカードをテストした後、我々は、プロキシサーバが起動置くことができ、私はここで使用TinyProxyです。

テスト、いくつかのリソースのイカの大きい職業を発見し、マルチカード状況での使用に助長されていません、それは4Gネットワ​​ークカードの最大数に影響します。

最初のapt install tinyproxy波は、その後、vim /etc/tinyproxy/tinyproxy.conf設定を変更します。

設定を変更するには、次のとおりです。

  • ポートは3128であるため、ポート設定項目が3128に変更し、我々はアウトマッピングされてきました。
  • 私たちは、他のデバイス上で、このプロキシサーバーを使用する必要があるため、変更された設定項目0.0.0.0を聞きます。
  • 設定項目がコメントアウトまたは0.0.0.0/0への変更許可、デフォルトの127.0.0.1は、他のデバイスがアクセスすることはできません。原因。

彼は波を保存した後、あなたは直接実行することができますtinyproxyまだ...開始しますか?

ように、実行する操作が必要です!これは、仮想ネットワークカードを指すようにデフォルトルートで、非常にシンプルな、次のコマンドを実行します。

route del -net 0.0.0.0 eth0
route add -net 0.0.0.0 ppp0
复制代码

削除するには、このカードのアクセスルートを指すeth0の、最初のデフォルト、その後1と同じ、このカードをppp0のためにルートを追加します。この2つのコマンドの意味はあります。

デフォルトルートを変更した場合の影響が終了した後、あなたが使用していない場合でも、カール、--interfaceパラメータを、また、オンラインで直接4Gカードを使用することができます。

デフォルトのルーティングを変更しない場合は、ケースには、4Gのカードをカードを指定しないとデフォルトルートポイントがあなたの元のネットワーク環境につながる独自の仮想ネットワークカード、ネットワークカードをドッキングウィンドウするために使用されることはありません。言い換えれば、IPは変更されません!

だから今、あなたは実行することができtinyproxy、プロキシサーバーを起動します。

テストのプロキシサーバ

さて、プロキシサーバーは、通常のスタートを持っている必要があり、そして今、我々はあなたが別のデバイスでインターネット4Gネットワ​​ークカードで、それを適切に使用することができるかどうかを確認し、コンテナプロキシサーバーを接続しようとすることができます。

例えば、私はここにラズベリーパイ割り当てられたIPは次のとおりです192.168.137.66、そして、私はこのcurlコマンドまたはPythonコードを使用してテストすることができます。

カール:

curl "https://ip.cn"
curl -x "192.168.137.66:3128" "https://ip.cn"
复制代码

Pythonの:

import requests
resp = requests.get("https://ip.cn", proxies={"https": "http://192.168.137.66:3128"})
no_proxy_resp = requests.get("https://ip.cn")
print(resp.text)
print(no_proxy_resp.text)
复制代码

使用プロキシIPを割り当てられたIP基地局オペレータになった後の試験結果は、容器の内部で前試験と一致しなければなりません。

IPを交換します

だから、コアの質問は、どのようにIPそれを交換するのですか?

実際には、ダイヤルアップおよびVPSは、プロキシサーバーを設定し利用する人は、我々は唯一の数は、直接IPを変更することがダイヤルを切断することができますのpppdプロセスを殺すことができるようになりますダイヤルする必要があり、再ダイヤルのスクリプトは切断を再ダイヤルした後に再び実行されます。

外しダイヤル側面Fanconn技術スタッフはまたに、スクリプトを提供してchmod +x quectel-ppp-kill行う、実行する権限を与えた後./quectel-ppp-kill、それを。

しかし、それは、切断後、ダイヤルアップセルラーネットワークは、IPはまだ(おそらくも関係を持っている基地局と接続し、特にどのくらい知っていない)の期間のために保持されることを指摘し、私たちは強制再検索ネットワークカードを作成する必要があります。

人気のヒント:電話をオフにし、フライトモードの効果を再検索ネットワークにあるが、通常は、「モバイルデータ」を閉じて結果が切断ダイヤルと一致しています。

どのようにそれを行うには?非常に単純な、2行のコマンド:

AT+CFUN=0
AT+CFUN=1
复制代码

しかし、これは下のATコマンドではなく、Linuxのシェルコマンド、我々はそれを実行する必要がある場合はATコマンドモデムは、コマンド言語である、十分に注意してください、あなたは何をする必要があります。

echo "AT+CFUN=0" > /dev/ttyUSB2
# 中间间隔1秒左右
echo "AT+CFUN=1" > /dev/ttyUSB2
复制代码

本明細書で使用する場合、/dev/ttyUSB23枚目のカード4G通信ポートの解釈を指し、ドキュメントは:ATコマンドの通信のためttyUSB2→は、第4のポートとの通信は、通信のために使用することができるコマンドで、それを使用することができないことPPP接続を除いて、同様ですのみ。

同じ通信ポートを使用しないための第四の理由は、オリジナルのカードがコマンド通信チャネル2つを提供され、別個の直接最も安全な領域を、占有される可能性があるポートです。

カードには数秒秒の10 /十ネットワーク内での再検索時間の後に、あなたが適切にダイヤルすることができない、あなたはそれが成功した初期化をダイヤルする前に待機する必要が完了すると、信号強度のための具体的な待ち時間が勝つ、私がテストしましたとき、通常はその上に5秒以内。

あなたが切断した後、ダイヤルアップ、障害を持っているのであれば、あなたはしばらく後に再度試してみたいと思うかもしれません。


概要

だから今の業務プロセスにも通じ実行し、我々はまた、我々が言及した資料の冒頭に達成できるように、全体の内部の詳細は、実行する最後のものは、各カードはそれぞれ、コンテナが割り当てられて置かれていることを理解 - 「仮想ネットワークカードの使用ネットワークカード、およびネットワーク・インターフェース」のような物理的効果を使用して、アクセスネットワーク内のカードとして。

実際の動作は、その後、ドッカーコンテナ環境変数の設定が簡単にこの機能を実現することができますを使用してコンテナを起動するときにうまく合格し、設定するには、ネットワークカードの指定された部分です。

最後に、我々はまずドッキングウィンドウ・コンテンプレート、テンプレートを構築することができ、このアイデアは、コアコンテンツは単純なコンテナクラスタ4Gネットワ​​ークカードであることを、第二は、アグリゲーションプロキシサーバのため、イカを開始することであるので、我々は唯一の使用を指定する必要がありますプロキシサーバーは、ランダムな操作がより便利に置き換えることができます。


さて、上記の考え方のドッカーバージョン建て道や建物全体のプロセスは、あなたが私の書かれたホイールで直接それを見て気にならば、ちょうど公共号[NightTeam]にメッセージ[エージェントのドッカー4G版]を送ることも可能ですそれはすることができます。

評価します

最後に、最後は、私がレビューを行うためにこのように設定しました!

これは、あまりにも多くの変数ので、完璧な構築するための方法ではありませんが、確かではないとして、多くの場所、システムレベルのネイティブサポート少ない安定した、長期使用は、奇妙な問題のすべての種類を表示されることがあります。

そして、ドッカーのフットプリントは、実際には良いですが、幸いなことだけ二十から三NIC場合ラズベリーパイのような大きな単語の数は、このような小さな記憶装置2bは、単に運ぶ場合、起動コンテナ上のメモリのかなりの量を無駄にします住んでいません。

プロキシサーバに加えて、自身がリソースを消費し、ラズベリーパイ2B小さなCPU圧力用の高周波呼び出しが、私はそれがCPUをオーバークロックされています知っているにもかかわらず、まだかなり大きい比較的高くなっているときの同時テスト、まだリラックス表示されますCPUの使用率を果たしました。

しかし!今まで、私はそれを書いていないルータベースのシステムを構築する計画2があります!だから... ...他(斜視の笑)を構築するために調整されたフォローアッププログラムをご利用いただけます。


記事の著者:「チームNightTeamの夜」 - ロコ

夜のチームは2019年に設立され、チームはCUI清カイ、周自斉、Chenxiangアン、唐イーフェイ、風水魏、カイ・ジン、大黄ジン、張イェ清およびWeishiドンが含まれます。

プログラミング言語に含める手を出しますが、Pythonの、錆、C ++、ゴー、エリアカバー爬虫類、深い学習、サービスの開発、オブジェクトストレージが、これらに限定されません。チーム非正も悪が、唯一の右だと思った、気をつけてください。

おすすめ

転載: juejin.im/post/5d7f0993e51d4561c94b106e