рдирдорд╕реНрддреЗ рддреЛ 5k рдХреНрд▓рд╛рдЗрдВрдЯ рдХрд╛ рдПрдХ рдиреЗрдЯрд╡рд░реНрдХ рд╣реИред рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдПрдХ рдмрд╣реБрдд рд╣реА рд╕реБрдЦрдж рдХреНрд╖рдг рд╕рд╛рдордиреЗ рдЖрдпрд╛ - рдиреЗрдЯрд╡рд░реНрдХ рдХреЗ рдХреЗрдВрджреНрд░ рдореЗрдВ рдФрд░ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдмреНрд░реЛрдХреЗрдб рдЖрд░рдПрдХреНрд╕ 8 рд╣реИ рдФрд░ рдЗрд╕рдиреЗ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдЕрдирдЬрд╛рди-рдпреВрдирд┐рдХрд╕реНрдЯ рдкреИрдХреЗрдЯ рднреЗрдЬрдиреЗ рд╢реБрд░реВ рдХрд░ рджрд┐рдП рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдиреЗрдЯрд╡рд░реНрдХ рдХреЛ vlans рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ - рдпрд╣ рдЖрдВрд╢рд┐рдХ рд░реВрдк рд╕реЗ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИ рд▓реЗрдХрд┐рди рд╕рдлреЗрдж рдкрддреЛрдВ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реЗрд╖ vlans рд╣реИрдВ, рдЖрджрд┐ред рдФрд░ рд╡реЗ рдиреЗрдЯрд╡рд░реНрдХ рдХреА рд╕рднреА рджрд┐рд╢рд╛рдУрдВ рдореЗрдВ рдлреИрд▓реЗ рд╣реБрдП рд╣реИрдВред рддреЛ рдЕрдм рдЖрдиреЗ рд╡рд╛рд▓реЗ рд╕реНрдЯреНрд░реАрдо рдХреА рдХрд▓реНрдкрдирд╛ рдПрдХ рдРрд╕реЗ рдЧреНрд░рд╛рд╣рдХ рдХреЗ рдкрддреЗ рдкрд░ рдХрд░реЗрдВ рдЬреЛ рдмреЛрд░реНрдбрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдЕрдзреНрдпрдпрди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдпрд╣ рд╕реНрдЯреНрд░реАрдо рдХреБрдЫ (рдФрд░ рд╣рд░ рдЪреАрдЬ рдкрд░) рдЧрд╛рдБрд╡ рдХреЗ рд░реЗрдбрд┐рдпреЛ рд▓рд┐рдВрдХ рдХреА рдУрд░ рдЙрдбрд╝рддрд╛ рд╣реИ - рдЪреИрдирд▓ рднрд░рд╛ рд╣реБрдЖ рд╣реИ - рдЧреНрд░рд╛рд╣рдХ рдмреБрд░реЗ - рдмреБрд░реЗ ...
рдХрд╛рд░реНрдп рдмрдЧ рдХреЛ рдлреАрдЪрд░ рдореЗрдВ рдмрджрд▓рдирд╛ рд╣реИред рдореИрдВрдиреЗ рдПрдХ рдкреВрд░реНрдг рдЧреНрд░рд╛рд╣рдХ-рд╡рд▓рди рдХреЗ рд╕рд╛рде q-in-q рдХреА рджрд┐рд╢рд╛ рдореЗрдВ рд╕реЛрдЪрд╛ рдерд╛, рд▓реЗрдХрд┐рди P3310 рдЬреИрд╕реЗ рд▓реЛрд╣реЗ рдХреЗ рд╕рднреА рдкреНрд░рдХрд╛рд░ рдХреЗ рдЯреБрдХрдбрд╝реЗ рдЬрдм рдореИрдВ рдбреЙрдЯ 1 рдХреЛ рдЪрд╛рд▓реВ рдХрд░рддрд╛ рд╣реВрдВ, рддреЛ рдбреАрдПрдЪрд╕реАрдкреА рдкрд╛рд╕ рдХрд░рдирд╛ рдмрдВрдж рдХрд░ рджреЗрддрд╛ рд╣реИ, рдлрд┐рд░ рднреА рд╡реЗ рдпрд╣ рдирд╣реАрдВ рдЬрд╛рдирддреЗ рдХрд┐ рдЪрдпрдирд╛рддреНрдордХ рдХреНрдпреВрдиреАрдХ рдФрд░ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдкрд╛рдиреА рдХреЗ рдиреАрдЪреЗ рдмреИрд╕рд╛рдЦреА рдХреИрд╕реЗред IP-unnambered рдХреНрдпрд╛ рд╣реИ рдФрд░ рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ? рдпрджрд┐ рдмрд╣реБрдд рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ - рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдкрд░ рдкреНрд░рд╡реЗрд╢ рджреНрд╡рд╛рд░ рдХрд╛ рдкрддрд╛ + рдорд╛рд░реНрдЧред рд╣рдорд╛рд░реЗ рдХрд╛рд░реНрдп рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдпрд╣ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ: рдЖрдХрд╛рд░ рдореЗрдВ рдХрдЯреМрддреА, рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреЛ рдкрддреЗ рд╡рд┐рддрд░рд┐рдд рдХрд░рдирд╛, рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреЗ рд▓рд┐рдП рдорд╛рд░реНрдЧ рдЬреЛрдбрд╝рдирд╛ред рдпрд╣ рд╕рдм рдХреИрд╕реЗ рдХрд░реЗрдВ? рд╢реЗрдкрд░ - рджреЛ рд╕реНрд╡рддрдВрддреНрд░ рд╕рд░реНрд╡рд░ рдкрд░ lisg, dhcp - db2dhcp, рдПрдХреНрд╕реЗрд╕ рд╕рд░реНрд╡рд░ рдкрд░ dhcprelay рдЪрд▓ рд░рд╣рд╛ рд╣реИ, ucarp рдмреИрдХрдЕрдк рдХреЗ рд▓рд┐рдП рдПрдХреНрд╕реЗрд╕ рд╕рд░реНрд╡рд░ рдкрд░ рднреА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдорд╛рд░реНрдЧреЛрдВ рдХреЛ рдХреИрд╕реЗ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдП? рдЖрдк рдкрд╣рд▓реЗ рд╕реЗ рдПрдХ рдмрдбрд╝реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рд╕рдм рдХреБрдЫ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ - рд▓реЗрдХрд┐рди рдпрд╣ рд╕рдЪ рдирд╣реАрдВ рд╣реИред рддреЛ рд╣рдо рдПрдХ рд╕реНрд╡-рдирд┐рд░реНрдорд┐рдд рдмреИрд╕рд╛рдЦреА рдХреЛ рдмрд╛рдбрд╝ рджреЗрдВрдЧреЗред
рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд░рдордгреАрдп рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рдореИрдВрдиреЗ c ++ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрджреНрднреБрдд рдЙрдЪреНрдЪ-рд╕реНрддрд░реАрдп рдкреБрд╕реНрддрдХрд╛рд▓рдп рдкрд╛рдпрд╛, рдЬреЛ рдЖрдкрдХреЛ рдЯреНрд░реИрдлрд╝рд┐рдХ рдХреЛ рдЦреВрдмрд╕реВрд░рддреА рд╕реЗ рд╕реВрдБрдШрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдорд╛рд░реНрдЧреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рд╡рд╛рд▓реЗ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреА рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╣реИ - рд╣рдо рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдкрд░ arp рдХреЗ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рд╕реБрдирддреЗ рд╣реИрдВ, рдЕрдЧрд░ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ lo рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдкрд░ рдПрдХ рд╕рд░реНрд╡рд░ рдкрддрд╛ рд╣реИ, рдЬреЛ рд╣рдо рдЕрдиреБрд░реЛрдз рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдорд╛рд░реНрдЧ рдЬреЛрдбрд╝реЗрдВ рдФрд░ рдЗрд╕ рдЖрдИрдкреА рдореЗрдВ рдПрдХ рд╕реНрдерд┐рд░ arp рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдЬреЛрдбрд╝реЗрдВ - рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдХреБрдЫ рдХреЙрдкреА-рдкреЗрд╕реНрдЯ, рдереЛрдбрд╝рд╛ рдЧреИрдЧ рдФрд░ рдЖрдк рдХрд░ рд░рд╣реЗ рд╣реИрдВ
'рдорд┐рдиреАрдмрд╕' рдХреЗ рд╕реНрд░реЛрдд#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; } }
рд▓рд┐рдкреНрдЯрд┐рди рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдмрд╛рдЗрдирд░реА рдмрдирд╛рдиреЗ рдХреА рдХрдорд╛рди 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 рд╕рд┐рдЧреНрдирд▓ рдкрд░ рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рддрд╛ рд╣реИред рдиреЗрдЯрд▓рд┐рдВрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреНрдпреЛрдВ рдирд╣реАрдВ рдХрд┐рдпрд╛? рдЖрд▓рд╕реНрдп рдмрд╕ рд╣рд╛рдБ рд╣реИ, рдФрд░ рд▓рд┐рдирдХреНрд╕ рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкрд░ рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣реИ - рддрд╛рдХрд┐ рд╕рдм рдХреБрдЫ рдареАрдХ рд╣реЛред рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдорд╛рд░реНрдЧреЛрдВ рдорд╛рд░реНрдЧреЛрдВ, рдЖрдЧреЗ рдХреНрдпрд╛ рд╣реИ? рдЕрдЧрд▓рд╛, рд╣рдореЗрдВ рдЙрди рдорд╛рд░реНрдЧреЛрдВ рдХреЛ рднреЗрдЬрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬреЛ рдЗрд╕ рд╕рд░реНрд╡рд░ рдкрд░ рд╕реАрдорд╛ рдкрд░ рд╣реИрдВ - рдпрд╣рд╛рдВ, рд▓реЛрд╣реЗ рдХреЗ рдПрдХ рд╣реА рдкреБрд░рд╛рдиреЗ рдЯреБрдХрдбрд╝реЗ рдХреЗ рдХрд╛рд░рдг, рд╣рдо рдХрдо рд╕реЗ рдХрдо рдкреНрд░рддрд┐рд░реЛрдз рдХреЗ рд╕рд╛рде рд░рд╛рд╕реНрддрд╛ рддрдп рдХрд░рддреЗ рд╣реИрдВ - рд╣рдордиреЗ рдЗрд╕ рдХрд╛рд░реНрдп рдХреЛ рдмреАрдЬреАрдкреА рдкрд░ рд░рдЦрд╛ред
рдмреАрдЬреАрдкреА рд╡рд┐рдиреНрдпрд╛рд╕рд╣реЛрд╕реНрдЯрдирд╛рдо *******
рдкрд╛рд╕рд╡рд░реНрдб *******
рд▓реЙрдЧ рдлрд╝рд╛рдЗрд▓ /var/log/bgp.log
!
# рдкрддрд╛, рдкрддрд╛ рдФрд░ рдиреЗрдЯрд╡рд░реНрдХ рдХрд╛ рдирдВрдмрд░
рд░реВрдЯрд░ bgp 12345
bgp рд░рд╛рдЙрдЯрд░-рдЖрдИрдбреА 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 рд╕реЗ рдЗрдирдХрд╛рд░ рдХрд░рддреЗ рд╣реИрдВ
рд╣рдо рдЬрд╛рд░реА рд░рдЦрддреЗ рд╣реИрдВред рд╕рд░реНрд╡рд░ рдХреЗ рд▓рд┐рдП arp рдЕрдиреБрд░реЛрдзреЛрдВ рдХрд╛ рдЬрд╡рд╛рдм рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ arp рдкреНрд░реЙрдХреНрд╕реА рд╕рдХреНрд╖рдо рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
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"
Dhcprelay рдХреЗ рд▓рд┐рдП рдПрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдкрд░ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЗрд╕реЗ рдПрдХ рдкрддреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдЗрд╕рд▓рд┐рдП, рд╣рдорд╛рд░реЗ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдЗрдВрдЯрд░рдлреЗрд╕ рдкрд░, рд╣рдо рдмрд╛рдПрдВ рдкрддреЗ рдЬреЛрдбрд╝ рджреЗрдВрдЧреЗ - рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, 10.255.255.1/32, 10.255.255.2/32, рдЖрджрд┐ред рдореИрдВрдиреЗ рдЖрдкрдХреЛ рд░рд┐рд▓реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХрд╛ рддрд░реАрдХрд╛ рдирд╣реАрдВ рдмрддрд╛рдпрд╛ - рд╡рд╣рд╛рдВ рд╕рдм рдХреБрдЫ рд╕рд░рд▓ рд╣реИред
рддреЛ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХреНрдпрд╛ рд╣реИред рдмреИрдХрдЕрдк рдЧреЗрдЯрд╡реЗ, рдСрдЯреЛ-рдЯреНрдпреВрдирд┐рдВрдЧ рдорд╛рд░реНрдЧ, dhcpред рдпрд╣ рдиреНрдпреВрдирддрдо рд╕реЗрдЯ рд╣реИ - рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЗрд╕ рдкрд░ рд▓рд┐рд╕реНрдЧ рднреА рдЦрд░рд╛рдм рд╣реИ рдФрд░ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рд╢реЗрдкрд░ рд╣реИред рд╕рдм рдХреБрдЫ рдЗрддрдирд╛ рд▓рдВрдмрд╛ рдФрд░ рдардВрдбрд╛ рдХреНрдпреЛрдВ рд╣реИ? рдХреНрдпрд╛ рдпрд╣ рддреНрд╡рд░рд┐рдд-рдкреАрдкреАрдкреА рд▓реЗрдирд╛ рдЖрд╕рд╛рди рдирд╣реАрдВ рд╣реИ рдФрд░ рдЖрдо рддреМрд░ рдкрд░ рдкрдкреНрдкреВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ? рдирд╣реАрдВ, рдпрд╣ рдЖрд╕рд╛рди рдирд╣реАрдВ рд╣реИ - рд▓реЛрдЧ рд╢рд╛рдпрдж рд╣реА рдХрд┐рд╕реА рд░рд╛рдЙрдЯрд░ рдореЗрдВ рдкреИрдЪрдХрд╛рд░реНрдб рдХреЛ рд╣рд┐рд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВ, рди рдХрд┐ рдкрдкреНрдкреА рдХреЛред рд╕реНрдкреАрдб-рдкреАрдкреАрдкреА рдПрдХ рдардВрдбреА рдЪреАрдЬ рд╣реИ - рд▓реЗрдХрд┐рди рдпрд╣ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ - рдХреЛрдб рдореЗрдВ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХрд╛ рдПрдХ рдЧреБрдЪреНрдЫрд╛ - рдпрд╣ рд░реЛрд▓ рдХрд░рддрд╛ рд╣реИ, рдХреБрдЯрд┐рд▓рддрд╛ рд╕реЗ рдХрдЯрддрд╛ рд╣реИ, рдФрд░ рджреБрдЦ рдХреА рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдЕрдЧрд░ рдпрд╣ рдЙрдЬреНрдЬреНрд╡рд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд▓реЛрдЧреЛрдВ рдХреЛ рд╕рдм рдХреБрдЫ рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ - рдлреЛрди рд▓рд╛рд▓ рд╣реИрдВ - рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ, рдпрд╣ рдлрд┐рдЯ рдирд╣реАрдВ рд╣реИред рд░рдЦрдиреЗ рдХреЗ рдмрдЬрд╛рдп ucarp рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдкреНрд▓рд╕ рдХреНрдпрд╛ рд╣реИ? рд╣рд╛рдВ, рд╣рд░ рдЪреАрдЬ рдореЗрдВ - 100 рдкреНрд░рд╡реЗрд╢ рджреНрд╡рд╛рд░ рд╣реИрдВ, рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдФрд░ рд╡рд┐рдиреНрдпрд╛рд╕ рдореЗрдВ рдПрдХ рддреНрд░реБрдЯрд┐ - рд╕рдм рдХреБрдЫ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред 1 рдЧреЗрдЯрд╡реЗ ucarp рдХреЗ рд╕рд╛рде рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рд╕реБрд░рдХреНрд╖рд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ, рд╡реЗ рдХрд╣рддреЗ рд╣реИрдВ рдХрд┐ рдкрддреЗ рдмрд╛рдПрдВ-рд╣рд╛рде рдХреЗ рд╣реЛрдВрдЧреЗ рдФрд░ рдЧреЗрдВрдж рдкрд░ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдПрдВрдЧреЗ - рдЗрд╕ рдкрд▓ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рд╕рднреА рд╕реНрд╡рд┐рдЪ / alt / рдЕрдбреНрдбреЛрдВ рдкрд░ dhcp-snooping + source-guard + arp рдирд┐рд░реАрдХреНрд╖рдг рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рддреЗ рд╣реИрдВред рдпрджрд┐ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ рдкрд╛рд╕ dhpc рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рд╕реНрдЯреИрдЯрд┐рдХреНрд╕ - рдкреЛрд░реНрдЯ рдкрд░ рдПрд╕реЗрд╕-рд▓рд┐рд╕реНрдЯ рд╣реИред
рдпрд╣ рд╕рдм рдХреНрдпреЛрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛? рдпрд╛рддрд╛рдпрд╛рдд рдХреЛ рдирд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдо рдкрд╕рдВрдж рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред рдЕрдм, рдкреНрд░рддреНрдпреЗрдХ рд╕реНрд╡рд┐рдЪ рдХрд╛ рдЕрдкрдирд╛ рд╡рд▓рд╛рди рд╣реИ рдФрд░ рдЕрдЬреНрдЮрд╛рдд-рдпреВрдирд┐рдХрд╕реНрдЯ рдЕрдм рдбрд░рддрд╛ рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕реЗ рдХреЗрд╡рд▓ рдПрдХ рдкреЛрд░реНрдЯ рдкрд░ рдЬрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдФрд░ рдпрд╣ рд╕рдм рдирд╣реАрдВ ... рдЦреИрд░, рд╕рд╛рдЗрдб рдЗрдлреЗрдХреНрдЯ рдПрдХ рдорд╛рдирдХреАрдХреГрдд рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдФрд░ рдПрдбреНрд░реЗрд╕ рд╕реНрдкреЗрд╕ рдЖрд╡рдВрдЯрди рдХреА рдПрдХ рдЙрдЪреНрдЪ рджрдХреНрд╖рддрд╛ рд╣реИред
рдХреИрд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП lisg рдПрдХ рдЕрд▓рдЧ рд╡рд┐рд╖рдп рд╣реИред рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рд▓рд┐рдВрдХ рд╕рдВрд▓рдЧреНрди рд╣реИрдВред рд╢рд╛рдпрдж рдХреЛрдИ рдЕрдкрдиреЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рдЙрдкрд░реЛрдХреНрдд рдорджрдж рдХрд░реЗрдЧрд╛ред рд╣рдо рдЕрднреА рддрдХ рдЕрдкрдиреЗ рдиреЗрдЯрд╡рд░реНрдХ рдкрд░ рд╕рдВрд╕реНрдХрд░рдг 6 рдХреЛ рдкреЗрд╢ рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВ - рд▓реЗрдХрд┐рди рдПрдХ рд╕рдорд╕реНрдпрд╛ рд╣реЛрдЧреА - рд╕рдВрд╕реНрдХрд░рдг 6 рдХреЗ рд▓рд┐рдП рд▓рд┐рд╕реНрдЧ рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдиреЗ рдХреА рдпреЛрдЬрдирд╛ рд╣реИ рдФрд░, рдареАрдХ рд╣реИ, рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЛ рдореЛрдбрд╝рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реЛрдЧрд╛, рдЬреЛ рдорд╛рд░реНрдЧреЛрдВ рдХреЛ рдЬреЛрдбрд╝рддрд╛ рд╣реИред
рд▓рд┐рдирдХреНрд╕ ISGDB2DHCPLibtinsрдпреБрдкреАрдбреАред
рд╕рдм рдХреБрдЫ рдереЛрдбрд╝рд╛ рдФрд░ рдЬрдЯрд┐рд▓ рд╣реЛ рдЧрдпрд╛ ... рдореБрдЭреЗ рдХрдо рдпрд╛ рдЬреНрдпрд╛рджрд╛ рд╕рд╛рдорд╛рдиреНрдп рджрд╛рдирд╡ рд▓рд┐рдЦрдирд╛ рдкрдбрд╝рд╛ред рдФрд░ рдкреНрд░реЙрдХреНрд╕реА arp рдХреЗ рдмрд┐рдирд╛ рдХрд░рддреЗ рд╣реИрдВред рдЕрдм рдореЗрд░рд╛ рдбреЗрдорди рдЬрд╡рд╛рдм рджреЗрддрд╛ рд╣реИ, рдпрд╣ рд╕рдмрдиреЗрдЯ рдкрд░ рд░реВрдЯ рдХреЛ рдХреНрд▓рд╛рдЗрдВрдЯреНрд╕ рдореЗрдВ рдЬреЛрдбрд╝рддрд╛ / рд╣рдЯрд╛рддрд╛ рд╣реИ, рдореБрдЭреЗ рдпрд╣ рднреА рд╕реАрдЦрдирд╛ рдерд╛ рдХрд┐ рдиреЗрдЯрд▓рд┐рдВрдХ рдХреЗ рд╕рд╛рде рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рдирд╛ рд╣реИред рдФрд░ рдЗрд╕рдиреЗ рдПрдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдпрд╛ - рдЬрдм рд▓рд┐рдирдХреНрд╕ рдХреБрдЫ рдкрддреЗ рдХреЗ рд▓рд┐рдП arp рдХреЛ рдкрд╣рдЪрд╛рдирддрд╛ рд╣реИ, рддреЛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдЦреЛрдЬрдиреЗ рдХреЗ рдмрд╛рдж - рдпрд╣ рдкрд╣рд▓рд╛ рдкрддрд╛ рд▓реЗрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЖрдЦрд┐рд░реА рд╕реЗ рдЖрддрд╛ рд╣реИ - рдЬреЛ рдХреБрдЫ рдЧреНрд░рд╛рд╣рдХ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ - рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рд▓рд┐рдВрдХ рдХреЗ рд▓рд┐рдП рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рд╡рд┐рдХрд▓реНрдк рд╣реЛрддрд╛ рд╣реИ - рд╡рд╣рд╛рдБ, рд╡реИрд╕реЗ, рдорд╛рд░реНрдЧреЛрдВ рдФрд░ рдкрддреЛрдВ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХреЛ рд╕реБрдирдирд╛ рдФрд░ рдиреЗрдЯрд▓рд┐рдВрдХ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдорд╛рд░реНрдЧ рд╣рдЯрд╛рдиреЗ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ (рдмрд╛рдж рдХреЗ рд╕рд╛рде, рд╕рд┐рд░рджрд░реНрдж рднрдпрд╛рдирдХ рдерд╛)
GitHub