インターネットが遅い理由を把握しようとすると、ネットワー この問題に対する多くの解決策では、監視するすべてのデバイスにソフトウェアをインストールする必要があります。 代わりに、カスタムのRaspberry Piネットワークモニターを構築しようとしました。
独自のルーターを構築する
Raspberry Pi4は、適切な状況では非常に有能なルーターです。しかし、最初に、用語を明確にしましょう。
しかし、最初に、用語を明確にしましょう。
スイッチは、ネットワークの周りのデータをシャッフルします。 ルータは、そのトラフィックを指示するのに役立ちます。
この文脈では、”ルータ”を構築することは、DHCP、DNS、およびファイアウォールを実装することを意味します。
それが何を意味するのかわからない場合は、心配しないでください。 今のところ、あなたがRaspberry Pi4を持っていると仮定しましょう(一番下の部品リストを参照)。 “バージョン4″ビットは、以前のモデル(ギガビット)よりも大幅に優れたネットワークカード(eth0
)を持っているため、重要です。 これはルータとしてRPiを使用することの最も大きい制限を指します:帯域幅は1000Mbpsで上限があります。
帯域幅とスループットはしばしば混同されます。
バンド”幅”は、システムを流れる可能性のあるデータの最大量です(この場合は、自宅からインターネットに)。バンド”幅”は、システムを流れる可能性のあ スループットは、いつでもどのくらいの帯域幅が使用されるかを測定します。
ちなみに、このガイドは、あなたがルータに有効にしたい任意のDebianベースのlinuxシステムのために働く必要があります。 より優れたハードウェアを使用して、より効果的なソリューションを作成できます。 私たちのインターネットの速度はとにかくわずか30mbps(DSL)であるため、私はPi4を選びました。 ネットワーク監視の記事で説明したように、このRaspberry Pi4は、この場合には十分であることが証明されています。 以下は私が使用した正確な製品です。Raspberry Piを初めて使用する場合は、人気のあるCanaKitsを開始するのに最適な場所です。
私はRaspberry Pi4、電源アダプタ、micro SDカード、およびヒートシンクを別々に購入することを好みます。 だけでなく、これは安いですが、それはe-wasteを削減します。以下は、私がこのプロジェクトで使用した他の部分へのアフィリエイトリンクです。
私は個人的に使用していない製品にリンクすることはありません。P>
DSL/PPP接続を持っていますか?
DslルーターとしてRaspberry Piを使用する特定の癖について読んでください。
第二のイーサネットポートが必要です(次のセクションを参照)。 私は上記のUSB3.0ギガビットコネクタを使用しました。
インターネットへの接続
ネットワークインターフェイスをwan
lan
と呼びます。
コピーアンドペーストにしたい場合は、ネットワークインターフェイスの名前を一致させることができます。 たとえば、lan
eth0
ifconfig
インターフェイスのMACアドレスを取得します(ether
ether aa:bb:cc:dd:ee:ff
/etc/udev/rules.d/10-network.rules
を作成または編集して、次のようにします。
SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="aa:bb:cc:dd:ee:ff", NAME="lan"
…してから、wan
インターフェイスのプロセスを繰り返します。
内部ネットワーク(LAN)は、WANよりも多くのスループットを処理する必要があります。
これが、LANに対してより高速なインターフェイスが選択される理由です。 この時点で、
wan
インターフェイスをISPが提供するモデムに直接接続できます。 可能であれば、Piはルーティング機能(これの詳細)を引き継いでいるので、あなたは、透過的なブリッジモードにモデムを入れたいことがあります。ここにいる間は、DHCPリースを取得するためにWANが正しく構成されていることを確認してください。標準DHCP以外の方法(PPOEなど)を使用する場合は、必要に応じてこの手順を変更する必要があります。 しかし、ほとんどの場合、
/etc/network/interfaces.d/wan
に次の内容のファイルを作成すれば十分です:PIをオンラインにすると、デバイスがPiに接続できるようになります。この例では、Raspberry PiルーターのIPアドレスは192.168.0.1
になります。p>このIPを変更する場合は注意してください!
この例では、192.168.0.0/24サブネットを使用します。 これを変更する場合は、有効なプライベートサブネットの範囲から選択してください。
これは、最初に作成または編集することを意味します
/etc/network/interfaces.d/lan
:これで、LANインターフェイスは静的IPを持ち、それ自体をルータとして扱います。 今では、ネットワーク上の他のデバイスにIPアドレスを割り当てることができるようにする時間です。 したがって、DHCPサーバーを実行すると、多くのコンピュータがPiに接続できるようになります。まず、dhcpcdを無効にしてisc-dhcp-serverをインストールします。sudo systemctl disable dhcpcdsudo apt install isc-dhcp-server
次に、
/etc/default/isc-dhcp-server
INTERFACESv4
を置き換えます。INTERFACESv4="lan"
DHCPサーバLANが含まれているインターフェイス。 今では、ホームネットワークのパラメータを知る必要があります。 この例を続けるために、サーバーに
192.168.0.100
192.168.0.199
の範囲のIPアドレスを割り当てるようにします(理由の詳細はすぐに)。 最初にドメイン名とドメインネームサーバーを変更するには、/etc/dhcp/dhcpd.conf
を編集します。option domain-name "router.local";option domain-name-servers 8.8.8.8, 1.1.1.1;
.local
サフィックスはLANの規則ですが、router
名前を置き換えることを歓迎します。 ドメインネームサーバーはすぐに変更されますが、今のところgoogleに指摘されています。また、以下を追加します。
authoritative;subnet 192.168.0.0 netmask 255.255.255.0 { range 192.168.0.100 192.168.0.199; option routers 192.168.0.1; option subnet-mask 255.255.255.0;}
これは、DHCPサーバーに、指定された範囲内で接続するデバイスにIPアドレスを割り当てることがで 比較的小さな範囲の理由は、その範囲外の静的IPアドレスを割り当てることができるからです。 たとえば、上記の
lan
と同じMACアドレスを取得し、次のセクションを追加することができます。host router { hardware ethernet aa:bb:cc:dd:ee:ff; fixed-address 192.168.0.1;}
ルータの静的IPを追加することも、DHCPサーバが混乱して誤って別のIPアドレスを割り当てることができないことを意味します。 一般に、DHCPサーバー内のIPアドレスをエンコードすることは、権限を一元化します(特定のデバイス上の静的Ipをコーディングするのではなく、はるかに脆いIMEです)。Raspberry Piを今すぐ再起動してコンピュータをlanポートに接続すると、適切な範囲のIPアドレスが見つかるはずです。
Mac OSXを使用して、Network Preferencesペインを開き、次にHardwareタブを開き、ラップトップのUSB-C To EthernetアダプタのMACアドレスを見つけました。 次に、そのアドレスに静的IP(上記のように)を割り当て、DHCPサーバーを再起動しました:p>
sudo systemctl restart isc-dhcp-server
固定アドレスが上記の範囲外であっても、この種の静的IP割り当てはどのデバイスでも機能します。 私は公共の範囲外にあるすべての私の知られている、信頼できるデバイスに静的Ipを与えるのが好きです。 これは次のことを行います:
- は、既知のデバイスを識別するのに役立ちます。
- 既知のIpにセキュリティルールを適用できます。
- サーバーを有効にします(つまり、安価なArduinoセンサーを介して温度を読み取る)。
何らかの理由でコンピュータがホームネットワークに接続できない場合、独自のDHCPサーバーを実行すると、デバッグが容易になります。
journalctl -xe | grep dhcpd
を実行すると、デバイスがホームネットワークに接続しようとする試みが表示されます。May 03 15:50:44 router dhcpd: DHCPREQUEST for 192.168.0.106 from xx:xx:xx:xx:xx via eth0May 03 15:50:44 router dhcpd: DHCPACK on 192.168.0.106 to xx:xx:xx:xx:xx via eth0
を覗いてみると、
/var/lib/dhcp/dhcpd.leases
WiFiデバイスを接続する
このためには、WiFiルーターまたはアクセスポイントが必要です。
典型的なアプローチは、オンボードのWiFiを使用することです。 これは、Raspberry Piの
wlan0
lan
hostapd
を設定する ただし、この投稿の文脈では推奨されません。 Raspberry Piを2つのイーサネットインターフェイス間のパススルーとして機能させることは、より簡単で高速なアプローチです。代わりに、WiFiルーターをRaspberry Piのlan
ポートに接続してから、ルーターをアクセスポイント(別名ブリッジ)モードにします。 クライアントがイーサネットまたはWiFi経由で接続する場合、ルータは気にしません。私はOrbiルーターの大ファンです—彼らは非常に高速ですが、あなたはラズベリーパイに基地局の”インターネット”ポートを接続し、家の周りにあなたの処分で十数の有線接続を持つことができます:
転送トラフィック
この時点で…
- ラズベリーパイはインターネット(WAN)と話すことができます。
- LAN上のデバイスは互いに通信できます。
…しかし、2つの間には通信がありません。
Enter
firewalld
:sudo apt install firewalld
Firewalldは、私がこれまでに見つけた最も簡単な解決策です。
IPテーブルとファイアウォールは苦痛になる可能性があります。
少なくとも、あなたはホームと公共ゾーンが必要になり、その後、両者の間のトラフィックを偽装します。 これはちょうどlanインターフェイスが家のためであり、wan/ppp0インターフェイスが公衆のためであること防火壁に告げる。
sudo firewall-cmd --zone=home --add-interface=lansudo firewall-cmd --zone=public --add-interface=ppp0sudo firewall-cmd --zone=public --add-interface=wansudo firewall-cmd --zone=public --add-masqueradesudo firewall-cmd --zone=home --add-service=dnssudo firewall-cmd --zone=home --add-service=dhcp
この時点で、LANに接続されたコンピュータはインターネットにアクセスできるはずです。 すべてを保存するには、
sudo firewall-cmd --runtime-to-permanent
journalctl -xe
を実行し、次のような行を探します。FINAL_REJECT: IN=ppp0 OUT= MAC= SRC=77.247.109.40 DST=...
この場合、ルールは期待どおりに機能しています。 未知のIPアドレスからの誰かが
ppp0
インターフェイス(つまり、インターネットから)。 それ以外の場合は、特定のトラフィックを許可するためにファイアウォールを開く必要がある場合があります。ゾーンベースのルールを使用する場合は、Firewalldが最も簡単です。Lanとwanの代わりにhomeとpublic(firewalldの規則に一致するように)と呼ばれる少なくとも2つのゾーンが必要になります。 また、kubernetes/dockerサブネットの構成に3番目の(オプションの)信頼ゾーンもあります。 したがって、
firewall-cmd --get-active-zones
と入力すると、次のように表示されます。home interfaces: lan lopublic interfaces: wan ppp0trusted interfaces: docker0 cni0 sources: 10.244.0.0/24 10.202.0.0/24 10.96.0.0/24
ゾーンの定義は、
/etc/firewalld/zones/
home interfaces: lan lopublic interfaces: wan ppp0trusted interfaces: docker0 cni0 sources: 10.244.0.0/24 10.202.0.0/24 10.96.0.0/24
ゾーンの定義は、
/etc/firewalld/zones/
home interfaces: lan lopublic interfaces: wan ppp0trusted interfaces: docker0 cni0 sources: 10.244.0.0/24 10.202.0.0/24 10.96.0.0/24
:トラフィックは、インターフェイスまたはソースに基づいてゾーンに分類されます。
sudo firewall-cmd --zone=public --add-interface=ppp0
sudo firewall-cmd --zone=public --add-interface=ppp0
sudo firewall-cmd --zone=public --add-interface=ppp0
sudo firewall-cmd --zone=public --add-interface=ppp0
sudo firewall-cmd --zone=public --add-interface=ppp0
ゾーンはサービスまたはポートへのトラフィックを受信できます。
sudo firewall-cmd --zone=public --add-service=http
sudo firewall-cmd --zone=home --add-port=10250/tcp
これらの変更は一時的なものであることに注意してください。 これは安全なテストを可能にする。 それらを永続的にするには、
sudo firewall-cmd --runtime-to-permanent
を実行します。 あなたはfirewalldとのより多くの助けが必要な場合はありません場合は、この記事をチェックしてください。DNSサーバー&書き換え
DNSサーバーは、この小さなルータをさらに良くすることができます。
DNSサーバーの仕事は、特定のドメイン名のIPアドレスで応答することです。 たとえば、それはあなたのコンピュータが到達するために接続する必要がありますどのようなIPアドレスを知っていますgoogle.com。多くの人々は保証およびプライバシーの理由のための彼らの専有物を動かすのを好む。たとえば、DNSサーバーとして機能する広告ブロッカーがあります。 Pi HoleまたはAdGuard Homeをインストールすることで、ネットワーク上のコンピュータが広告/スパム/マルウェアドメインを見つけることを防ぐことができます。 これらの2つのツールはどちらもDNS書き換えをサポートしているため、任意のサイトの「場所」を変更できます。div>
二つのいずれかをインストールしたら、編集するだけです
/etc/dhcp/dhcpd.conf
option domain-name-servers 192.168.0.1;
これで、ネットワークに接続するすべてのデバイスは、このDNSサーバーを使用するように指示されます。これで、ネットワークに接続するすべてのデバ
なぜ書き換えが便利なのですか?
なぜ書き換えが便利なのですか ホームサーバーの構築に関する次の投稿をチェックしてください。 書き換えにより、内部と外部で同じURLを使用できるようになり、HTTPS anywhereが有効になります。 たとえば、AdGuard Homeを使用して
*.snowy-cabin.com
192.168.0.100
house.snowy-cabin.com
https://
URLを使用してリバースプロキシに到達することができ、SSL終了が発生し、パブリックとプライベートの両方のトラフィックの安全な通信が保証されます。投稿idが見つかりません: #8977
Cheat-sheet
要約すると、ホームサーバーの重要な概念がいくつかあります。
- Static IPs:edit
/etc/dhcp/dhcpd.conf
isc-dhcp-server
を再起動し、クライ- ポート転送:実行
sudo firewall-cmd --zone=public --add-forward-port=port=443:proto=tcp:toaddr=192.168.0.100
- カスタムドメイン名:DNSサーバーを使用して、一意のドメイン名を内部および外部で動作させます。
- ネットワークトラフィックの監視:指示。
セキュリティからスピードまで、ホームネットワーク接続を理解するには多くの理由があります。 ネットワーキングの基礎を学ぶだけでなく、自宅でインターネットをスピードアップするために、独自のルータを構築します。
タグ付けされたasDIYプロジェクト、Raspberry Piプロジェクト(zane)/技術的に魔法
このサイトはDIYプロジ これは、IOTプロジェクト、技術チュートリアル、ハウツーガイドのコレクションに成長しています。 このサイトについての詳細を読みます。..p>