この記事では、実際には存在しないIPoEインターネットアクセステクノロジーについて説明します。 また、クライアントVLANスキームとオプション82 DHCP(DHCP Option 82)についても説明します。これらは、この存在しない技術の不可欠な部分になっています。 もちろん、これはすべて、技術的な観点から、構成の例とともに。
エンドユーザーには多くのインターネットアクセステクノロジーがあります。 ロシアでは、PPTPとPPPoEの2つが特に人気があります。 どちらの場合も、PPPトンネルが作成され、認証が実行され、サブスクライバーIPトラフィックがトンネル内を通過します。 これらのプロトコルの主な違いは、OSIネットワークモデルのさまざまなレベルで機能することです。
PPPoEは第2(リンク)レベルで機能し、特定のトンネルを識別する特別なタグをイーサネットフレームに追加します。
PPTPは第3(ネットワーク)レベルで動作し、GREでIPパケットをパッキングします。
IPoE
IPoEは 、PPTPおよびPPPoEと
は根本的に異なります。 一般的に、この技術は存在しません。 RFCはなく、RFCを記述する標準もありません。 この用語自体は、おそらくロシアで造られたものであり、抽象的なものです。 次のことを意味します
。IP over Ethernet 。 意味は復号化とまったく同じです-イーサネット上のIPトラフィック、大まかに言えば、通常のLAN。 サブスクライバには、静的または動的なホワイトIPアドレスが与えられますが、最悪の場合はNATを使用したグレーIPが与えられます。 この場合のアクセス制御は、アクセススイッチまたはBRASでIP-MACバインディングを使用するか、各サブスクライバにVLANを割り当てることで実行できます(いわゆるクライアントVLAN)。
クライアントVLAN
クライアントVLANテクノロジーを使用する場合、問題が発生します。IPアドレスを保存する方法は? 結局のところ、考えてみると、各クライアントは/ 30個のサブネットを割り当てる必要があります。 実際、問題は簡単に解決されます。 Linuxベースのルーターの例を次に示します。
ip route add到達不能192.0.2.0/24
ip addr add 192.0.2.1/32 dev lo
vconfig add eth0 101
IPリンクがeth0.101を設定する
ip route add 192.0.2.101/32 dev eth0.101 src 192.0.2.1
例で使用するために、IANAは192.0.2.0/24サブネットを推奨しています。
これは、Linux実装における古典的なシスコのアンナンバード
IPです。 ゲートウェイIP(192.0.2.1)はループバックインターフェイスでハングし、サブネット全体で
unreachable
になり、ルーティングが登録されているホストにのみパケットが送られます。 次に、VLANが上昇し、
src
ゲートウェイから特定のホスト(マスク/ 32)へのルーティングが登録されます。 そして、あなたはそれを少し違った方法で行うことができます(これもまたLinuxの柔軟性を示しています):
ip route add到達不能192.0.2.0/24
vconfig add eth0 101
IPリンクがeth0.101を設定する
ip addr add 192.0.2.1/32 dev eth0.101
ip route add 192.0.2.101/32 dev eth0.101
または:
ip route add到達不能192.0.2.0/24
vconfig add eth0 101
IPリンクがeth0.101を設定する
ip addr add 192.0.2.1/24 dev eth0.101
ip route del 192.0.2.0/24 dev eth0.101
ip route add 192.0.2.101/32 dev eth0.101
これらのオプションはすべて機能するため、最も便利な方法でインターフェイスを表示するオプションを選択できます。 すべての場合において、加入者のIPは192.0.2.101/24です。
Proxy_arp
発生する可能性のある別の問題は、異なるVLANのサブスクライバー間および同じサブネットのIPとの通信がないことです。 実際、加入者システムは宛先IPアドレスがそれと同じサブネット上にあることを認識し、ARP要求を送信してMACを判別しますが、それは何も生じません それらは異なるVLANにあります。 この問題を解決するには、
proxy_arpテクノロジーが
使用されます。 その本質は、ルーターがインターフェイスからARP要求を受信すると、他のインターフェイスに要求されたIPがあるかどうかを確認することです。 存在する場合、ARP要求への応答で、MACを発行します。 このようにして、パケットはルーターに送信され、ルーターが配信を処理します。 次のように、特定のインターフェイスのproxy_arpを有効にします。
sysctl net.ipv4.conf.eth0 / 101.proxy_arp = 1
または
エコー1> /proc/sys/net/ipv4/conf/eth0.101/proxy_arp
DHCPオプション82
IPoEを使用すると、DHCPは加入者側のネットワークの構成をゼロに簡素化します。 パッチコードを貼り付けて、オンラインにします。 問題は、DHCPがどのアドレスを誰に発行するかをどのように知るかだけです。 特にすでにIP-MACバインディングを使用している場合は、MACで識別できます。 しかし、MACバインディングには、サポートを頻繁に呼び出す必要があります。 加入者は時々機器を変更します。 DHCPプロトコルの拡張-
オプション82は、この問題に対処するのに役立ちます。 オプション82には2つのフィールドが含まれます。
- エージェント回線ID-DHCP要求が到着したDHCPリレーのポート番号。
- エージェントリモートID-DHCPリレー自体の特定の識別子。
この場合、加入者が直接接続されているアクセススイッチは、通常DHCPリレーとして機能します。 エージェントのリモートIDとして、通常はスイッチのMACが使用されます(D-Linkのデフォルト)。 オプション82は、ロシアのプロバイダーD-Link DES-3526 / 3028/3200の典型的な機器を含む幅広い機器でサポートされています。
D-Linkスイッチには、dhcp_relayとdhcp_local_relayの2つのDHCPリレーモードがあります。 dhcp_relayはすべてのポートとVLANに対してグローバルに機能しますが、オプション82が追加され、リクエストはブロードキャストとして送信されなくなり、DHCPサーバーに直接送信されます。 これは完全なDHCPリレーです。 dhcp_local_relayは特定のVLANで機能しますが、要求は本質的には関係なく、オプション82が単に追加されます。
D-Linkのdhcp_relayの基本設定:
dhcp_relayを有効にする
config dhcp_relay option_82 state enable
config dhcp_relay add ipif System 192.168.0.1
192.168.0.1-管理VLANで使用可能なDHCPサーバーのIPアドレス。
dhcp_local_relayの基本設定:
dhcp_local_relayを有効にします
config dhcp_local_relay vlan 101 state enable
そして最後に、コメント付きでISCのDHCPの基本設定を行います。
#ログに書き込む
ログ(情報、「***」);
存在する場合agent.circuit-id {
#オプション82が存在する
#発行されたIPアドレス、エージェントリモートID、エージェント回線IDをログに書き込みます
log(info、concat( "* Leased"、binary-to-ascii(10.8、 "。"、leased-address)、 "(with opt82)"));
log(info、concat( "* Remote-ID:"、binary-to-ascii(16.8、 ":"、substring(option agent.remote-id、2.6))));
log(info、concat( "* Port:"、binary-to-ascii(10.8、 ""、suffix(option agent.circuit-id、1))));
} else {
#オプション82 no
#発行されたIPアドレスをログに書き込みます
log(info、concat( "* Leased"、binary-to-ascii(10.8、 "。"、leased-address)、 "(opt82なし)));
}
ログ(情報、「***」);
#この例では192.0.2.101/24-MAC 0でスイッチに接続されたサブスクライバのIP:c:29:ec:23:64、ポート1
#VMWare仮想マシンから取得したMACアドレスが残っている
#192.168.0.0/24-スイッチ管理サブネット、DHCP要求はこのサブネットのアドレスから送信されます
#これらの2つのサブネットは、正しく動作するために1つの共有ネットワークに結合する必要があります
共有ネットワークテスト{
サブネット192.0.2.0ネットマスク255.255.255.0 {
#クラスを定義する
クラス "v101" {
#クラスに準拠するための条件を定義します。
#エージェント回線ID = 1、エージェントリモートID = 0:c:29:ec:23:64
#注-先行ゼロはエージェントリモートIDに書き込まれません(つまり、0cの代わりにcなど)
match if(binary-to-ascii(10.8、 ""、suffix(option agent.circuit-id、1))= "1")および
(binary-to-ascii(16.8、 ":"、substring(option agent.remote-id、2.6))= "0:c:29:ec:23:64");
}
#実際にIPクラスに配る
プール{
範囲192.0.2.101;
「v101」のメンバーを許可します。
}
}
サブネット192.168.0.0ネットマスク255.255.255.0 {
}
}