เชจเชฎเชธเซเชคเซ. เชเชจเซ เช เชฐเซเชฅ เช เชเซ เชเซ เชคเซเชฏเชพเช 5k เชเซเชฐเชพเชนเชเซเชจเซเช เชจเซเชเชตเชฐเซเช เชเซ. เชคเชพเชเซเชคเชฐเชฎเชพเช เชเช เชเซเชฌ เช เชธเซเชเชฆ เชเซเชทเชฃ เชเชตเซ เชจเชฅเซ - เชจเซเชเชตเชฐเซเชเชจเซ เชฎเชงเซเชฏเชฎเชพเช เช เชฎเชพเชฐเซ เชชเชพเชธเซ เชฌเซเชฐเซเชเซเชก RX8 เชเซ เช เชจเซ เชคเซ เชเชฃเชพ เชฌเชงเชพ เช เชเชพเชฃเซเชฏเชพ-เชฏเซเชจเชฟเชเชพเชธเซเช เชชเซเชเซเชเซ เชฎเซเชเชฒเชตเชพเชจเซเช เชถเชฐเซ เชเชฐเซ เชเซ, เชเชพเชฐเชฃ เชเซ เชจเซเชเชตเชฐเซเช vlans เชฎเชพเช เชตเชนเซเชเชเชพเชฏเซเชฒเซเช เชเซ - เช เชเชเชถเชฟเช เชฐเซเชคเซ เชเซเช เชธเชฎเชธเซเชฏเชพ เชจเชฅเซ, เชชเชฐเชเชคเซ เชคเซเชฏเชพเช เชเซ. เชธเชซเซเชฆ เชธเชฐเชจเชพเชฎเชพเชเช เชฎเชพเชเซ เชเชพเชธ vlans, เชตเชเซเชฐเซ. เช เชจเซ เชคเซเช เชจเซเชเชตเชฐเซเชเชจเซ เชฌเชงเซ เชฆเชฟเชถเชพเชฎเชพเช เชตเชฟเชธเซเชคเชฐเซเชฒ เชเซ. เชคเซ เชนเชตเซ เชเชฒเซเชชเชจเชพ เชเชฐเซ เชเซ เชเช เชเซเชฒเชพเชฏเชจเซเชเชจเชพ เชธเชฐเชจเชพเชฎเชพ เชชเชฐ เชเชตเชจเชพเชฐเชพ เชชเซเชฐเชตเชพเชนเชจเซ เชเชฒเซเชชเชจเชพ เชเชฐเซ เชเซ เชฌเซเชฐเซเชกเชฐ เชธเซเชเซเชกเชจเซเช เชคเชฐเซเชเซ เชญเชฃเชคเซ เชจเชฅเซ เช เชจเซ เช เชชเซเชฐเชตเชพเชน เช เชฎเซเช (เช เชฅเชตเชพ เชฌเชงเชพ) เชเชพเชฎเชจเซ เชฐเซเชกเชฟเชฏเซ เชฒเชฟเชเช เชคเชฐเชซ เชเชกเซ เชเซ - เชเซเชจเชฒ เชญเชฐเชพเช เชเช เชเซ - เชเซเชฐเชพเชนเชเซ เชเซเชธเซเชธเซ เชเซ - เชเชฆเชพเชธเซ...
เชฌเชเชจเซ เชธเซเชตเชฟเชงเชพเชฎเชพเช เชซเซเชฐเชตเชตเชพเชจเซ เชงเซเชฏเซเชฏ เชเซ. เชนเซเช เชธเชเชชเซเชฐเซเชฃ เชเซเชฒเชพเชฏเชเช เชตเซเชฒเชพเชจ เชธเชพเชฅเซ q-in-q เชจเซ เชฆเชฟเชถเชพเชฎเชพเช เชตเชฟเชเชพเชฐเซ เชฐเชนเซเชฏเซ เชนเชคเซ, เชชเชฐเชเชคเซ P3310 เชเซเชตเชพ เชคเชฎเชพเชฎ เชชเซเชฐเชเชพเชฐเชจเชพ เชนเชพเชฐเซเชกเชตเซเชฐ, เชเซเชฏเชพเชฐเซ dot1q เชธเชเซเชทเชฎ เชนเซเชฏ, เชคเซเชฏเชพเชฐเซ DHCP เชจเซ เชชเชธเชพเชฐ เชฅเชตเชพ เชฆเซเชคเซเช เชฌเชเชง เชเชฐเซ เชเซ, เชคเซเช เช เชชเชฃ เชเชพเชฃเชคเชพ เชจเชฅเซ เชเซ เชเซเชตเซ เชฐเซเชคเซ เชชเชธเชเชฆ เชเชฐเชตเซเช เช เชจเซ เชเชฃเชพ เชฌเชงเชพ เชคเซ เชชเซเชฐเชเชพเชฐเชจเซ เชฎเซเชถเซเชเซเชฒเซเช. เชเชเชชเซ-เช เชจเชพเชฎเซเชฌเชฐ เชถเซเช เชเซ เช เชจเซ เชคเซ เชเซเชตเซ เชฐเซเชคเซ เชเชพเชฐเซเชฏ เชเชฐเซ เชเซ? เชเซเชฌ เช เชธเชเชเซเชทเชฟเชชเซเชคเชฎเชพเช: เชเซเชเชตเซ เชธเชฐเชจเชพเชฎเซเช + เชเชจเซเชเชฐเชซเซเชธ เชชเชฐเชจเซ เชฎเชพเชฐเซเช. เช เชฎเชพเชฐเชพ เชเชพเชฐเซเชฏ เชฎเชพเชเซ, เช เชฎเชพเชฐเซ เช เชเชฐเชตเชพเชจเซ เชเชฐเซเชฐ เชเซ: เชถเซเชชเชฐเชจเซ เชเชพเชชเซ, เชเซเชฒเชพเชฏเชเชเชจเซ เชธเชฐเชจเชพเชฎเชพเชเชเชจเซเช เชตเชฟเชคเชฐเชฃ เชเชฐเซ, เชเซเชเซเชเชธ เชเชจเซเชเชฐเชซเซเชธ เชฆเซเชตเชพเชฐเชพ เชเซเชฒเชพเชฏเชเช เชฎเชพเชเซ เชฐเซเช เชเชฎเซเชฐเซ. เช เชฌเชงเซเช เชเซเชตเซ เชฐเซเชคเซ เชเชฐเชตเซเช? เชถเซเชชเชฐ - lisg, dhcp - db2dhcp เชฌเซ เชธเซเชตเชคเชเชคเซเชฐ เชธเชฐเซเชตเชฐเซเชธ เชชเชฐ, dhcprelay เชเชเซเชธเซเชธ เชธเชฐเซเชตเชฐเซเชธ เชชเชฐ เชเชพเชฒเซ เชเซ, ucarp เชชเชฃ เชเชเซเชธเซเชธ เชธเชฐเซเชตเชฐเซเชธ เชชเชฐ เชเชพเชฒเซ เชเซ - เชฌเซเชเช เชช เชฎเชพเชเซ. เชชเชฐเชเชคเซ เชฎเชพเชฐเซเชเซ เชเซเชตเซ เชฐเซเชคเซ เชเชฎเซเชฐเชตเซเช? เชคเชฎเซ เชฎเซเชเซ เชธเซเชเซเชฐเชฟเชชเซเช เชธเชพเชฅเซ เช เชเชพเชเชฅเซ เชฌเชงเซเช เชเชฎเซเชฐเซ เชถเชเซ เชเซ - เชชเชฐเชเชคเซ เช เชธเชพเชเซเช เชจเชฅเซ. เชคเซเชฅเซ เช เชฎเซ เชธเซเชต-เชฒเซเชเชฟเชค เชเซเชฐเซเช เชฌเชจเชพเชตเซเชถเซเช.
เชเชจเซเชเชฐเชจเซเช เชชเชฐ เชธเชเชชเซเชฐเซเชฃ เชถเซเชง เชเชฐเซเชฏเชพ เชชเชเซ, เชฎเชจเซ C++ เชฎเชพเชเซ เชเช เช เชฆเซเชญเซเชค เชเชเซเช-เชธเซเชคเชฐเชจเซ เชฒเชพเชเชฌเซเชฐเซเชฐเซ เชฎเชณเซ, เชเซ เชคเชฎเชจเซ เชเซเชฐเชพเชซเชฟเชเชจเซ เชธเซเชเชฆเชฐ เชฐเซเชคเซ เชธเซเชเชเชตเชพ เชฆเซ เชเซ. เชชเซเชฐเซเชเซเชฐเชพเชฎ เชฎเชพเชเซเชจเซเช เช เชฒเซเชเซเชฐเชฟเชงเชฎ เชเซ เชฐเซเชเซเชธ เชเชฎเซเชฐเซ เชเซ เชคเซ เชจเซเชเซ เชฎเซเชเชฌ เชเซ - เช เชฎเซ เชเชจเซเชเชฐเชซเซเชธ เชชเชฐ เชเชเชฐเชชเซ เชตเชฟเชจเชเชคเซเช เชธเชพเชเชญเชณเซเช เชเซเช, เชเซ เช เชฎเชพเชฐเซ เชชเชพเชธเซ เชธเชฐเซเชตเชฐ เชชเชฐ เชฒเซ เชเชจเซเชเชฐเชซเซเชธ เชชเชฐ เชเซเช เชธเชฐเชจเชพเชฎเซเช เชนเซเชฏ เชเซ เชตเชฟเชจเชเชคเซ เชเชฐเชตเชพเชฎเชพเช เชเชตเซ เชเซ, เชคเซ เช เชฎเซ เช เชเชจเซเชเชฐเชซเซเชธ เชฆเซเชตเชพเชฐเชพ เชเช เชฎเชพเชฐเซเช เชเชฎเซเชฐเซเช เชเซเช เช เชจเซ เชธเซเชฅเชฟเชฐ เชเชเชฐเชชเซ เชเชฎเซเชฐเซเช เชเซเช. เช เชเชเชชเซ เชชเชฐ เชฐเซเชเซเชฐเซเชก เชเชฐเซ - เชธเชพเชฎเชพเชจเซเชฏ เชฐเซเชคเซ, เชฅเซเชกเซ เชเซเชชเซ-เชชเซเชธเซเช, เชฅเซเชกเซเช เชตเชฟเชถเซเชทเชฃ เช เชจเซ เชคเชฎเซ เชชเซเชฐเซเชฃ เชเชฐเซ เชฒเซ
'เชฐเชพเชเชเชฐ' เชจเชพ เชธเซเชคเซเชฐเซเชคเซ
#include <stdio.h>
#include <sys/types.h>
#include <ifaddrs.h>
#include <netinet/in.h>
#include <string.h>
#include <arpa/inet.h>
#include <tins/tins.h>
#include <map>
#include <iostream>
#include <functional>
#include <sstream>
using std::cout;
using std::endl;
using std::map;
using std::bind;
using std::string;
using std::stringstream;
using namespace Tins;
class arp_monitor {
public:
void run(Sniffer &sniffer);
void reroute();
void makegws();
string iface;
map <string, string> gws;
private:
bool callback(const PDU &pdu);
map <string, string> route_map;
map <string, string> mac_map;
map <IPv4Address, HWAddress<6>> addresses;
};
void arp_monitor::makegws() {
struct ifaddrs *ifAddrStruct = NULL;
struct ifaddrs *ifa = NULL;
void *tmpAddrPtr = NULL;
gws.clear();
getifaddrs(&ifAddrStruct);
for (ifa = ifAddrStruct; ifa != NULL; ifa = ifa->ifa_next) {
if (!ifa->ifa_addr) {
continue;
}
string ifName = ifa->ifa_name;
if (ifName == "lo") {
char addressBuffer[INET_ADDRSTRLEN];
if (ifa->ifa_addr->sa_family == AF_INET) { // check it is IP4
// is a valid IP4 Address
tmpAddrPtr = &((struct sockaddr_in *) ifa->ifa_addr)->sin_addr;
inet_ntop(AF_INET, tmpAddrPtr, addressBuffer, INET_ADDRSTRLEN);
} else if (ifa->ifa_addr->sa_family == AF_INET6) { // check it is IP6
// is a valid IP6 Address
tmpAddrPtr = &((struct sockaddr_in6 *) ifa->ifa_addr)->sin6_addr;
inet_ntop(AF_INET6, tmpAddrPtr, addressBuffer, INET6_ADDRSTRLEN);
} else {
continue;
}
gws[addressBuffer] = addressBuffer;
cout << "GW " << addressBuffer << " is added" << endl;
}
}
if (ifAddrStruct != NULL) freeifaddrs(ifAddrStruct);
}
void arp_monitor::run(Sniffer &sniffer) {
cout << "RUNNED" << endl;
sniffer.sniff_loop(
bind(
&arp_monitor::callback,
this,
std::placeholders::_1
)
);
}
void arp_monitor::reroute() {
cout << "REROUTING" << endl;
map<string, string>::iterator it;
for ( it = route_map.begin(); it != route_map.end(); it++ ) {
if (this->gws.count(it->second) && !this->gws.count(it->second)) {
string cmd = "ip route replace ";
cmd += it->first;
cmd += " dev " + this->iface;
cmd += " src " + it->second;
cmd += " proto static";
cout << cmd << std::endl;
cout << "REROUTE " << it->first << " SRC " << it->second << endl;
system(cmd.c_str());
cmd = "arp -s ";
cmd += it->first;
cmd += " ";
cmd += mac_map[it->first];
cout << cmd << endl;
system(cmd.c_str());
}
}
for ( it = gws.begin(); it != gws.end(); it++ ) {
string cmd = "arping -U -s ";
cmd += it->first;
cmd += " -I ";
cmd += this->iface;
cmd += " -b -c 1 ";
cmd += it->first;
system(cmd.c_str());
}
cout << "REROUTED" << endl;
}
bool arp_monitor::callback(const PDU &pdu) {
// Retrieve the ARP layer
const ARP &arp = pdu.rfind_pdu<ARP>();
if (arp.opcode() == ARP::REQUEST) {
string target = arp.target_ip_addr().to_string();
string sender = arp.sender_ip_addr().to_string();
this->route_map[sender] = target;
this->mac_map[sender] = arp.sender_hw_addr().to_string();
cout << "save sender " << sender << ":" << this->mac_map[sender] << " want taregt " << target << endl;
if (this->gws.count(target) && !this->gws.count(sender)) {
string cmd = "ip route replace ";
cmd += sender;
cmd += " dev " + this->iface;
cmd += " src " + target;
cmd += " proto static";
// cout << cmd << std::endl;
/* cout << "ARP REQUEST FROM " << arp.sender_ip_addr()
<< " for address " << arp.target_ip_addr()
<< " sender hw address " << arp.sender_hw_addr() << std::endl
<< " run cmd: " << cmd << endl;*/
system(cmd.c_str());
cmd = "arp -s ";
cmd += arp.sender_ip_addr().to_string();
cmd += " ";
cmd += arp.sender_hw_addr().to_string();
cout << cmd << endl;
system(cmd.c_str());
}
}
return true;
}
arp_monitor monitor;
void reroute(int signum) {
monitor.makegws();
monitor.reroute();
}
int main(int argc, char *argv[]) {
string test;
cout << sizeof(string) << endl;
if (argc != 2) {
cout << "Usage: " << *argv << " <interface>" << endl;
return 1;
}
signal(SIGHUP, reroute);
monitor.iface = argv[1];
// Sniffer configuration
SnifferConfiguration config;
config.set_promisc_mode(true);
config.set_filter("arp");
monitor.makegws();
try {
// Sniff on the provided interface in promiscuous mode
Sniffer sniffer(argv[1], config);
// Only capture arp packets
monitor.run(sniffer);
}
catch (std::exception &ex) {
std::cerr << "Error: " << ex.what() << std::endl;
}
}
libtins เชเชจเซเชธเซเชเซเชฒเซเชถเชจ เชธเซเชเซเชฐเชฟเชชเซเช
#!/bin/bash
git clone https://github.com/mfontanini/libtins.git
cd libtins
mkdir build
cd build
cmake ../
make
make install
ldconfig
เชฌเชพเชเชจเชฐเซ เชฌเชจเชพเชตเชตเชพเชจเซ เชเชฆเซเชถ
g++ main.cpp -o arp-rt -O3 -std=c++11 -lpthread -ltins
เชคเซเชจเซ เชเซเชตเซ เชฐเซเชคเซ เชฒเซเชจเซเช เชเชฐเชตเซเช?
start-stop-daemon --start --exec /opt/ipoe/arp-routes/arp-rt -b -m -p /opt/ipoe/arp-routes/daemons/eth0.800.pid -- eth0.800
เชนเชพ - เชคเซ HUP เชธเชฟเชเซเชจเชฒเชจเชพ เชเชงเชพเชฐเซ เชเซเชทเซเชเชเซเชจเซเช เชชเซเชจเชเชจเชฟเชฐเซเชฎเชพเชฃ เชเชฐเชถเซ. เชคเชฎเซ เชจเซเชเชฒเชฟเชเชเชจเซ เชเชชเชฏเซเช เชเซเชฎ เชจ เชเชฐเซเชฏเซ? เชคเซ เชฎเชพเชคเซเชฐ เชเชณเชธ เชเซ เช เชจเซ Linux เช เชธเซเชเซเชฐเชฟเชชเซเช เชชเชฐเชจเซ เชธเซเชเซเชฐเชฟเชชเซเช เชเซ - เชคเซเชฅเซ เชฌเชงเซเช เชธเชพเชฐเซเช เชเซ. เช เซเช เชเซ, เชฎเชพเชฐเซเชเซ เชฎเชพเชฐเซเชเซ เชเซ, เชเชเชณ เชถเซเช เชเซ? เชเชเชณ, เชเชชเชฃเซ เช เชธเชฐเซเชตเชฐ เชชเชฐเชจเชพ เชฐเซเชเชจเซ เชธเชฐเชนเชฆ เชชเชฐ เชฎเซเชเชฒเชตเชพเชจเซ เชเชฐเซเชฐ เชเซ - เช เชนเซเช, เชธเชฎเชพเชจ เชเซเชจเชพ เชนเชพเชฐเซเชกเชตเซเชฐเชจเซ เชเชพเชฐเชฃเซ, เช เชฎเซ เชเชเชพเชฎเชพเช เชเชเชพ เชชเซเชฐเชคเชฟเชเชพเชฐเชจเซ เชฎเชพเชฐเซเช เช เชชเชจเชพเชตเซเชฏเซ - เช เชฎเซ เช เชเชพเชฐเซเชฏ BGPเชจเซ เชธเซเชเชชเซเชฏเซเช.
bgp เชฐเซเชชเชฐเซเชเชพเชฏเชเชฎเชพเชจ เชจเชพเชฎ *******
เชชเชพเชธเชตเชฐเซเชก *******
เชฒเซเช เชซเชพเชเชฒ /var/log/bgp.log
!
# AS เชจเชเชฌเชฐ, เชธเชฐเชจเชพเชฎเชพเช เช
เชจเซ เชจเซเชเชตเชฐเซเช เชเชพเชฒเซเชชเชจเชฟเช เชเซ
เชฐเชพเชเชเชฐ bgp 12345
bgp เชฐเชพเชเชเชฐ-id 1.2.3.4
เชเชจเซเชเซเชเซเชก เชชเซเชจเชเชตเชฟเชคเชฐเชฟเชค เชเชฐเซ
เชธเซเชฅเชฟเชฐ เชชเซเชจเชเชตเชฟเชคเชฐเชฟเชค เชเชฐเซ
เชชเชพเชกเซเชถเซ 1.2.3.1 เชฐเชฟเชฎเซเช-เชเช 12345
เชชเชพเชกเซเชถเซ 1.2.3.1 เชจเซเชเซเชธเซเช-เชนเซเชช-เชธเซเชฒเซเชซ
เชชเชพเชกเซเชถเซ 1.2.3.1 เชฐเซเช-เชฎเซเชชเชฎเชพเช เชเซเช เชจเชนเซเช
เชชเชพเชกเซเชถเซ 1.2.3.1 เชฐเซเช-เชจเชเชถเซ เชจเชฟเชเชพเชธ เชเชฐเซ
!
เชเชเซเชธเซเชธ-เชฒเชฟเชธเซเช เชเชเซเชธเชชเซเชฐเซเช เชชเชฐเชฎเชฟเช 1.2.3.0/24
!
เชฐเซเช-เชจเชเชถเซ เชจเชฟเชเชพเชธ เชชเชฐเชตเชพเชจเชเซ 10
เชเชเชชเซ เชเชกเซเชฐเซเชธ เชจเชฟเชเชพเชธ เชธเชพเชฅเซ เชฎเซเชณ เชเชฐเซ
!
เชฐเซเช-เชจเชเชถเซ เชจเชฟเชเชพเชธ เชจเชพเชฎเชเชเซเชฐ 20
เชเชพเชฒเซ เชเชพเชฒเซ เชฐเชพเชเซเช. เชธเชฐเซเชตเชฐ เชเชเชฐเชชเซ เชตเชฟเชจเชเชคเซเชเชจเซ เชเชตเชพเชฌ เชเชชเชตเชพ เชฎเชพเชเซ, เชคเชฎเชพเชฐเซ เชเชเชฐเชชเซ เชชเซเชฐเซเชเซเชธเซเชจเซ เชธเชเซเชทเชฎ เชเชฐเชตเซเช เชเชตเชถเซเชฏเช เชเซ.
echo 1 > /proc/sys/net/ipv4/conf/eth0.800/proxy_arp
เชเชพเชฒเซ เชเชเชณ เชตเชงเซเช - ucarp. เช เชฎเซ เช เชเชฎเชคเซเชเชพเชฐ เชฎเชพเชเซ เชฒเซเชจเซเช เชธเซเชเซเชฐเชฟเชชเซเชเซ เชเชพเชคเซ เชฒเชเซเช เชเซเช.
เชเช เชกเชฟเชฎเชจ เชเชฒเชพเชตเชตเชพเชจเซเช เชเชฆเชพเชนเชฐเชฃ
start-stop-daemon --start --exec /usr/sbin/ucarp -b -m -p /opt/ipoe/ucarp-gen2/daemons/$iface.$vhid.$virtualaddr.pid -- --interface=eth0.800 --srcip=1.2.3.4 --vhid=1 --pass=carpasword --addr=10.10.10.1 --upscript=/opt/ipoe/ucarp-gen2/up.sh --downscript=/opt/ipoe/ucarp-gen2/down.sh -z -k 10 -P --xparam="10.10.10.0/24"
up.sh
#!/bin/bash
iface=$1
addr=$2
gw=$3
vlan=`echo $1 | sed "s/eth0.//"`
ip ad ad $addr/32 dev lo
ip ro add blackhole $gw
echo 1 > /proc/sys/net/ipv4/conf/$iface/proxy_arp
killall -9 dhcrelay
/etc/init.d/dhcrelay zap
/etc/init.d/dhcrelay start
killall -HUP arp-rt
down.sh
#!/bin/bash
iface=$1
addr=$2
gw=$3
ip ad d $addr/32 dev lo
ip ro de blackhole $gw
echo 0 > /proc/sys/net/ipv4/conf/$iface/proxy_arp
killall -9 dhcrelay
/etc/init.d/dhcrelay zap
/etc/init.d/dhcrelay start
dhcprelay เชจเซ เชเชจเซเชเชฐเชซเซเชธ เชชเชฐ เชเชพเชฎ เชเชฐเชตเชพ เชฎเชพเชเซ, เชคเซเชจเซ เชธเชฐเชจเชพเชฎเชพเชจเซ เชเชฐเซเชฐ เชเซ. เชคเซเชฅเซ, เช เชฎเซ เชเซ เชเชจเซเชเชฐเชซเซเชธเชจเซ เชเชชเชฏเซเช เชเชฐเซเช เชเซเช เชคเซเชจเชพ เชชเชฐ เช เชฎเซ เชกเชพเชฌเชพ เชธเชฐเชจเชพเชฎเชพเช เชเชฎเซเชฐเซเชถเซเช - เชเชฆเชพเชนเชฐเชฃ เชคเชฐเซเชเซ 10.255.255.1/32, 10.255.255.2/32, เชตเชเซเชฐเซ. เชฐเชฟเชฒเซเชจเซ เชเซเชตเซ เชฐเซเชคเซ เชเซเช เชตเชตเซเช เชคเซ เชนเซเช เชคเชฎเชจเซ เชเชนเซเชถ เชจเชนเซเช - เชฌเชงเซเช เชธเชฐเชณ เชเซ.
เชคเซ เชเชชเชฃเซ เชชเชพเชธเซ เชถเซเช เชเซ? เชเซเชเชตเซเชจเซ เชฌเซเชเช เชช, เชฐเซเชเซเชธเชจเซเช เชธเซเชตเชคเช-เชฐเซเชชเชฐเซเชเชพเชเชเชจ, dhcp. เช เชจเซเชฏเซเชจเชคเชฎ เชธเซเช เชเซ - lisg เชคเซเชจเซ เชเชธเชชเชพเชธเชจเซ เชฆเชฐเซเช เชตเชธเซเชคเซเชจเซ เชชเชฃ เชฒเชชเซเชเซ เชฒเซ เชเซ เช เชจเซ เช เชฎเชพเชฐเซ เชชเชพเชธเซ เชชเชนเซเชฒเซเชฅเซ เช เชถเซเชชเชฐ เชเซ. เชถเชพ เชฎเชพเชเซ เชฌเชงเซเช เชเชเชฒเซเช เชฒเชพเชเชฌเซ เช เชจเซ เชเซเชเชเชตเชฃเชญเชฐเซเชฏเซเช เชเซ? เชถเซเช เชเชเซเชธเซเชฒ-เชชเซเชชเซเชชเซเชกเซ เชฒเซเชตเซเช เช เชจเซ เชชเซเชชเซเชชเซเช เชเชเชธเชพเชฅเซ เชตเชพเชชเชฐเชตเซเช เชธเชฐเชณ เชจเชฅเซ? เชจเชพ, เชคเซ เชธเชฐเชณ เชจเชฅเซ - เชฒเซเชเซ เชญเชพเชเซเชฏเซ เช เชชเซเชเชเซเชฐเซเชกเชจเซ เชฐเชพเชเชเชฐเชฎเชพเช เชซเชฟเช เชเชฐเซ เชถเชเซ เชเซ, pppoe เชจเซ เชเชฒเซเชฒเซเช เชจ เชเชฐเชตเซ. accel-ppp เช เชเช เชธเชฐเชธ เชตเชธเซเชคเซ เชเซ - เชชเชฐเชเชคเซ เชคเซ เช เชฎเชพเชฐเชพ เชฎเชพเชเซ เชเชพเชฎ เชเชฐเชคเซเช เชจเชฅเซ - เชเซเชกเชฎเชพเช เชเชฃเซ เชฌเชงเซ เชญเซเชฒเซ เชเซ - เชคเซ เชเซเชทเซเชฃ เชฅเช เชเชพเชฏ เชเซ, เชคเซ เชเซเชเชฟเชฒ เชฐเซเชคเซ เชเชพเชชเซ เชจเชพเชเซ เชเซ, เช เชจเซ เชธเซเชฅเซ เชฆเซเชเชเชจเซ เชตเชพเชค เช เชเซ เชเซ เชเซ เชคเซ เชคเซเชเชธเซเชตเซ เชฅเชพเชฏ เชเซ - เชคเซ เชฒเซเชเซเชจเซ เชซเชฐเซเชฅเซ เชฒเซเชก เชเชฐเชตเชพเชจเซ เชเชฐเซเชฐ เชเซ เชฌเชงเซเช - เชซเซเชจ เชฒเชพเชฒ เชเซ - เชคเซ เชฌเชฟเชฒเชเซเชฒ เชเชพเชฎ เชเชฐเชคเซเช เชจเชฅเซ. Keepalived เชเชฐเชคเชพเช เชฏเซเชเชพเชฐเซเชชเชจเซ เชเชชเชฏเซเช เชเชฐเชตเชพเชจเซ เชถเซเช เชซเชพเชฏเชฆเซ เชเซ? เชนเชพ, เชฆเชฐเซเช เชตเชธเซเชคเซเชฎเชพเช - 100 เชเซเชเชตเซ เชเซ, เชเซเชชเชฒเชพเชเชต เชเซ เช เชจเซ เชฐเซเชชเชฐเซเชเชพเชฎเชพเช เชเช เชญเซเชฒ เชเซ - เชฌเชงเซเช เชเชพเชฎ เชเชฐเชคเซเช เชจเชฅเซ. 1 เชเซเชเชตเซ ucarp เชธเชพเชฅเซ เชเชพเชฎ เชเชฐเชคเซเช เชจเชฅเซ. เชธเซเชฐเชเซเชทเชพ เช เชเชเซ, เชคเซเช เชเชนเซ เชเซ เชเซ เชกเชพเชฌเซเชฐเซเช เชชเซเชคเชพเชจเชพ เชฎเชพเชเซ เชธเชฐเชจเชพเชฎเชพเช เชฐเชเซเชธเซเชเชฐ เชเชฐเชถเซ เช เชจเซ เชถเซเชฐ เชชเชฐ เชคเซเชจเซ เชเชชเชฏเซเช เชเชฐเชถเซ - เช เชเซเชทเชฃเชจเซ เชจเชฟเชฏเชเชคเซเชฐเชฟเชค เชเชฐเชตเชพ เชฎเชพเชเซ, เช เชฎเซ เชคเชฎเชพเชฎ เชธเซเชตเซเชเซ/olts/เชฌเซเช เชชเชฐ dhcp-snooping + source-guard + arp เชเชจเซเชธเซเชชเซเชเซเชถเชจ เชธเซเช เชเชฐเซเชฏเซเช เชเซ. เชเซ เชเซเชฒเชพเชฏเชจเซเช เชชเชพเชธเซ dhpc เชจเชฅเซ เชชเชฐเชเชคเซ เชชเซเชฐเซเช เชชเชฐ เชธเซเชเซเชเชฟเช - เชเชเซเชธเซเชธ-เชฒเชฟเชธเซเช เชเซ.
เช เชฌเชงเซเช เชถเชพ เชฎเชพเชเซ เชเชฐเชตเชพเชฎเชพเช เชเชตเซเชฏเซเช? เช เชจเชฟเชเซเชเชจเซเชฏ เชเซเชฐเชพเชซเชฟเชเชจเซ เชจเชพเชถ เชเชฐเชตเชพ. เชนเชตเซ เชฆเชฐเซเช เชธเซเชตเซเชเชจเซเช เชชเซเชคเชพเชจเซเช vlan เชเซ เช เชจเซ เช เชเซเชเชพเชค-เชฏเซเชจเชฟเชเชพเชธเซเช เชนเชตเซ เชกเชฐเชพเชฎเชฃเซ เชจเชฅเซ, เชเชพเชฐเชฃ เชเซ เชคเซเชจเซ เชซเชเซเชค เชเช เช เชชเซเชฐเซเช เชชเชฐ เชเชตเชพเชจเซ เชเชฐเซเชฐ เชเซ เช เชจเซ เชฌเชงเชพ เชชเชฐ เชจเชนเซเช... เชธเชพเชฐเซเช, เชเชกเช เชธเชฐ เช เชชเซเชฐเชฎเชพเชฃเชฟเชค เชธเชพเชงเชจเซเชจเซ เชเซเช เชตเชฃเซ เชเซ, เชธเชฐเชจเชพเชฎเชพเชเชจเซ เชเชเซเชฏเชพ เชซเชพเชณเชตเชตเชพเชฎเชพเช เชตเชงเซ เชเชพเชฐเซเชฏเชเซเชทเชฎเชคเชพ.
lisg เชจเซ เชเซเชตเซ เชฐเซเชคเซ เชเซเช เชตเชตเซเช เชคเซ เชเช เช เชฒเช เชตเชฟเชทเชฏ เชเซ. เชชเซเชธเซเชคเชเชพเชฒเชฏเซเชจเซ เชฒเชฟเชเชเซเชธ เชเซเชกเชพเชฏเซเชฒ เชเซ. เชเชฆเชพเช เชเชชเชฐเซเชเซเชค เชเซเชเชจเซ เชคเซเชฎเชจเชพ เชฒเชเซเชทเซเชฏเซเชจเซ เชชเซเชฐเชพเชชเซเชค เชเชฐเชตเชพเชฎเชพเช เชฎเชฆเชฆ เชเชฐเชถเซ. เชธเชเชธเซเชเชฐเชฃ 6 เชนเชเซ เชธเซเชงเซ เช เชฎเชพเชฐเชพ เชจเซเชเชตเชฐเซเช เชชเชฐ เช เชฎเชฒเชฎเชพเช เชฎเซเชเชตเชพเชฎเชพเช เชเชตเซเชฏเซเช เชจเชฅเซ - เชชเชฐเชเชคเซ เชคเซเชฏเชพเช เชเช เชธเชฎเชธเซเชฏเชพ เชนเชถเซ - เชธเชเชธเซเชเชฐเชฃ 6 เชฎเชพเชเซ lisg เชซเชฐเซเชฅเซ เชฒเชเชตเชพเชจเซ เชฏเซเชเชจเชพ เชเซ, เช เชจเซ เชคเซ เชชเซเชฐเซเชเซเชฐเชพเชฎเชจเซ เชธเซเชงเชพเชฐเชตเชพ เชฎเชพเชเซ เชเชฐเซเชฐเซ เชเซ เชเซ เชฐเซเชเซเชธ เชเชฎเซเชฐเซ เชเซ.
เชธเซเชฐเซเชธ: www.habr.com