เจธเจค เจธเฉเจฐเฉ เจ เจเจพเจฒ. เจเจธเจฆเจพ เจฎเจคเจฒเจฌ เจนเฉ เจเจฟ เจเฉฑเจฅเฉ 5k เจเจพเจนเจเจพเจ เจฆเจพ เจเฉฑเจ เจจเฉเจเจตเจฐเจ เจนเฉเฅค เจนเจพเจฒ เจนเฉ เจตเจฟเฉฑเจ เจเฉฑเจ เจฌเจนเฉเจค เจนเฉ เจธเฉเจนเจพเจตเจฃเจพ เจชเจฒ เจจเจนเฉเจ เจเจเจ - เจจเฉเจเจตเจฐเจ เจฆเฉ เจเฉเจเจฆเจฐ เจตเจฟเฉฑเจ เจธเจพเจกเฉ เจเฉเจฒ เจเฉฑเจ เจฌเฉเจฐเฉเจเฉเจก RX8 เจนเฉ เจ เจคเฉ เจเจธ เจจเฉ เจฌเจนเฉเจค เจธเจพเจฐเฉ เจ เจฃเจเจพเจฃ-เจฏเฉเจจเฉเจเจพเจธเจ เจชเฉเจเฉเจ เจญเฉเจเจฃเฉ เจธเจผเฉเจฐเฉ เจเจฐ เจฆเจฟเฉฑเจคเฉ เจนเจจ, เจเจฟเจเจเจเจฟ เจจเฉเจเจตเจฐเจ เจจเฉเฉฐ vlans เจตเจฟเฉฑเจ เจตเฉฐเจกเจฟเจ เจเจฟเจ เจนเฉ - เจเจน เจ เฉฐเจธเจผเจ เจคเฉเจฐ 'เจคเฉ เจเฉเจ เจธเจฎเฉฑเจธเจฟเจ เจจเจนเฉเจ เจนเฉ, เจชเจฐ เจนเจจ. เจธเจซเฉเจฆ เจชเจคเจฟเจเจ เจฒเจ เจตเจฟเจธเจผเฉเจธเจผ vlans, เจเจฆเจฟเฅค เจ เจคเฉ เจเจน เจจเฉเฉฑเจเจตเจฐเจ เจฆเฉเจเจ เจธเจพเจฐเฉเจเจ เจฆเจฟเจธเจผเจพเจตเจพเจ เจตเจฟเฉฑเจ เจซเฉเจฒเฉ เจนเฉเจ เจนเจจเฅค เจเจธ เจฒเจ เจนเฉเจฃ เจเจฒเจชเจจเจพ เจเจฐเฉ เจเจฟ เจเจฟเจธเฉ เจ เจเจฟเจนเฉ เจเจพเจนเจ เจฆเฉ เจชเจคเฉ 'เจคเฉ เจเจเจฃ เจตเจพเจฒเฉ เจชเฉเจฐเจตเจพเจน เจฆเฉ เจเจฒเจชเจจเจพ เจเจฐเฉ เจเฉ เจธเจฐเจนเฉฑเจฆเฉ เจตเจฟเจฆเจฟเจเจฐเจฅเฉ เจตเจเฉเจ เจจเจนเฉเจ เจชเฉเฉเจน เจฐเจฟเจนเจพ เจนเฉ เจ เจคเฉ เจเจน เจชเฉเจฐเจตเจพเจน เจเจฟเจธเฉ (เจเจพเจ เจธเจพเจฐเฉ) เจชเจฟเฉฐเจก เจฆเฉ เจฐเฉเจกเฉเจ เจฒเจฟเฉฐเจ เจตเฉฑเจฒ เจเฉฑเจกเจฆเจพ เจนเฉ - เจเฉเจจเจฒ เจฌเฉฐเจฆ เจนเฉ - เจเจพเจนเจ เจเฉเฉฑเจธเฉ เจนเจจ - เจเจฆเจพเจธเฉ ...
เจเฉเจเจพ เจเฉฑเจ เจฌเฉฑเจ เจจเฉเฉฐ เจเฉฑเจ เจตเจฟเจธเจผเฉเจธเจผเจคเจพ เจตเจฟเฉฑเจ เจฌเจฆเจฒเจฃเจพ เจนเฉเฅค เจฎเฉเจ เจเฉฑเจ เจชเฉเจฐเฉ เจเจฒเจพเจเฉฐเจ vlan เจฆเฉ เจจเจพเจฒ q-in-q เจฆเฉ เจฆเจฟเจธเจผเจพ เจตเจฟเฉฑเจ เจธเฉเจ เจฐเจฟเจนเจพ เจธเฉ, เจชเจฐ P3310 เจตเจฐเจเฉ เจนเจฐ เจเจฟเจธเจฎ เจฆเฉ เจนเจพเจฐเจกเจตเฉเจ เจฐ, เจเจฆเฉเจ dot1q เจธเจฎเจฐเจฅเจฟเจค เจนเฉเฉฐเจฆเจพ เจนเฉ, DHCP เจจเฉเฉฐ เจชเจพเจธ เจเจฐเจจเจพ เจฌเฉฐเจฆ เจเจฐ เจฆเจฟเฉฐเจฆเจพ เจนเฉ, เจเจน เจเจน เจตเฉ เจจเจนเฉเจ เจเจพเจฃเจฆเฉ เจเจฟ เจเจฟเจธ เจคเจฐเฉเจนเจพเจ เจเฉเจฃเจจเจพ เจนเฉ qinq เจ เจคเฉ เจฌเจนเฉเจค เจธเจพเจฐเฉ เจจเฉเจเจธเจพเจจ เจเจธ เจเจฟเจธเจฎ เจฆเฉ. เจเจเจชเฉ-เจ เจจเจพเจฎเจฌเจฐเจก เจเฉ เจนเฉ เจ เจคเฉ เจเจน เจเจฟเจตเฉเจ เจเฉฐเจฎ เจเจฐเจฆเจพ เจนเฉ? เจฌเจนเฉเจค เจธเฉฐเจเฉเจช เจตเจฟเฉฑเจ: เจเฉฐเจเจฐเจซเฉเจธ 'เจคเฉ เจเฉเจเจตเฉ เจเจกเจฐเฉเฉฑเจธ + เจฐเฉเจเฅค เจธเจพเจกเฉ เจเฉฐเจฎ เจฒเจ, เจธเจพเจจเฉเฉฐ เจเจน เจเจฐเจจ เจฆเฉ เจฒเฉเฉ เจนเฉ: เจธเจผเฉเจชเจฐ เจจเฉเฉฐ เจเฉฑเจเจฃเจพ, เจเจพเจนเจเจพเจ เจจเฉเฉฐ เจชเจคเฉ เจตเฉฐเจกเจฃเจพ, เจเฉเจ เจเจพเจธ เจเฉฐเจเจฐเจซเฉเจธเจพเจ เจฐเจพเจนเฉเจ เจเจพเจนเจเจพเจ เจฒเจ เจฐเฉเจ เจเฉเฉเจจเจพเฅค เจเจน เจธเจญ เจเจฟเจตเฉเจ เจเจฐเจจเจพ เจนเฉ? เจธเจผเฉเจชเจฐ - 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 เจธเจฟเจเจจเจฒ เจฆเฉ เจ เจงเจพเจฐ 'เจคเฉ เจเฉเจฌเจฒเจพเจ เจจเฉเฉฐ เจฆเฉเจฌเจพเจฐเจพ เจฌเจฃเจพเจเจเจพเฅค เจคเฉเจธเฉเจ เจจเฉเฉฑเจเจฒเจฟเฉฐเจ เจฆเฉ เจตเจฐเจคเฉเจ เจเจฟเจเจ เจจเจนเฉเจ เจเฉเจคเฉ? เจเจน เจธเจฟเจฐเจซ เจเจฒเจธ เจนเฉ เจ เจคเฉ เจฒเฉเจจเจเจธ เจเฉฑเจ เจธเจเฉเจฐเจฟเจชเจ เจคเฉ เจเฉฑเจ เจธเจเฉเจฐเจฟเจชเจ เจนเฉ - เจเจธ เจฒเจ เจธเจญ เจเฉเจ เจ เฉเจ เจนเฉ. เจเฉเจฐ, เจฐเฉเจ เจฐเฉเจ เจนเจจ, เจ เฉฑเจเฉ เจเฉ เจนเฉ? เจ เฉฑเจเฉ, เจธเจพเจจเฉเฉฐ เจเจนเจจเจพเจ เจฐเฉเจเจพเจ เจจเฉเฉฐ เจญเฉเจเจฃ เจฆเฉ เจเจผเจฐเฉเจฐเจค เจนเฉ เจเฉ เจเจธ เจธเจฐเจตเจฐ 'เจคเฉ เจนเจจ เจฌเจพเจฐเจกเจฐ 'เจคเฉ - เจเฉฑเจฅเฉ, เจเจธเฉ เจชเฉเจฐเจพเจฃเฉ เจนเจพเจฐเจกเจตเฉเจ เจฐ เจฆเฉ เจเจพเจฐเจจ, เจ เจธเฉเจ เจเฉฑเจ เจคเฉเจ เจเฉฑเจ เจตเจฟเจฐเฉเจง เจฆเจพ เจฐเจธเจคเจพ เจฒเจฟเจ - เจ เจธเฉเจ เจเจน เจเฉฐเจฎ 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
เจเจฒเฉ เจเจพเจฐเฉ เจฐเฉฑเจเฉเจเฅค เจธเจฐเจตเจฐ เจจเฉเฉฐ 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"
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 เจเฉฑเจ เจตเจงเฉเจ เจเฉเจเจผ เจนเฉ - เจชเจฐ เจเจน เจธเจพเจกเฉ เจฒเจ เจเฉฐเจฎ เจจเจนเฉเจ เจเจฐเจฆเฉ เจนเฉ - เจเฉเจก เจตเจฟเฉฑเจ เจฌเจนเฉเจค เจธเจพเจฐเฉเจเจ เจเจฒเจคเฉเจเจ เจนเจจ - เจเจน เจเฉเฉฑเจ เจเจพเจเจฆเจพ เจนเฉ, เจเจน เจเฉเจขเฉ เจขเฉฐเจ เจจเจพเจฒ เจเฉฑเจเจฆเจพ เจนเฉ, เจ เจคเฉ เจธเจญ เจคเฉเจ เจฆเฉเจเจฆเจพเจ เจเฉฑเจฒ เจเจน เจนเฉ เจเจฟ เจเฉเจเจฐ เจเจน เจเจฎเจเจฆเจพเจฐ เจนเฉ เจเจฟเจ เจนเฉ - เจคเจพเจ เจฒเฉเจเจพเจ เจจเฉเฉฐ เจฎเฉเฉ เจฒเฉเจก เจเจฐเจจ เจฆเฉ เจฒเฉเฉ เจนเฉ เจธเจญ เจเฉเจ - เจซเฉเจจ เจฒเจพเจฒ เจนเจจ - เจเจน เจฌเจฟเจฒเจเฉเจฒ เจเฉฐเจฎ เจจเจนเฉเจ เจเจฐเจฆเจพ เจธเฉเฅค เจเฉเจชเจฒเจพเจเจต เจฆเฉ เจฌเจเจพเจ เจฏเฉเจเจพเจฐเจช เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจจ เจฆเจพ เจเฉ เจซเจพเจเจฆเจพ เจนเฉ? เจนเจพเจ, เจนเจฐ เจเฉเจเจผ เจตเจฟเฉฑเจ - เจเฉฑเจฅเฉ 100 เจเฉเจเจตเฉ, Keepalived เจ เจคเฉ เจธเฉฐเจฐเจเจจเจพ เจตเจฟเฉฑเจ เจเฉฑเจ เจเจฒเจคเฉ เจนเฉ - เจธเจญ เจเฉเจ เจเฉฐเจฎ เจจเจนเฉเจ เจเจฐเจฆเจพ. 1 เจเฉเจเจตเฉ ucarp เจจเจพเจฒ เจเฉฐเจฎ เจจเจนเฉเจ เจเจฐเจฆเจพเฅค เจธเฉเจฐเฉฑเจเจฟเจ เจฌเจพเจฐเฉ, เจเจน เจเจนเจฟเฉฐเจฆเฉ เจนเจจ เจเจฟ เจเฉฑเจฌเฉ เจชเจพเจธเฉ เจตเจพเจฒเฉ เจเจชเจฃเฉ เจฒเจ เจชเจคเฉ เจฐเจเจฟเจธเจเจฐ เจเจฐเจจเจเฉ เจ เจคเฉ เจธเจผเฉเจ เจฐ 'เจคเฉ เจเจจเฉเจนเจพเจ เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจจเจเฉ - เจเจธ เจชเจฒ เจจเฉเฉฐ เจจเจฟเจฏเฉฐเจคเจฐเจฟเจค เจเจฐเจจ เจฒเจ, เจ เจธเฉเจ เจธเจพเจฐเฉ เจธเจตเจฟเฉฑเจเจพเจ/เจเจฒเจเจธ/เจฌเฉเจธเจพเจ 'เจคเฉ dhcp-snooping + source-guard + arp เจจเจฟเจฐเฉเจเจฃ เจธเจฅเจพเจชเจค เจเจฐเจฆเฉ เจนเจพเจเฅค เจเฉ เจเจฒเจพเจเฉฐเจ เจเฉเจฒ dhpc เจจเจนเฉเจ เจนเฉ เจชเจฐ เจชเฉเจฐเจ 'เจคเฉ เจธเจฅเจฟเจฐ - เจเจเจธเฉเจธ-เจฒเจฟเจธเจ เจนเฉเฅค
เจเจน เจธเจญ เจเจฟเจเจ เจเฉเจคเจพ เจเจฟเจ? เจ เจฃเจเจพเจนเฉ เจเจตเจพเจเจพเจ เจจเฉเฉฐ เจจเจธเจผเจ เจเจฐเจจ เจฒเจ. เจนเฉเจฃ เจนเจฐ เจเฉฑเจ เจธเจตเจฟเฉฑเจ เจฆเจพ เจเจชเจฃเจพ vlan เจนเฉ เจ เจคเฉ เจ เจเจฟเจเจค-เจฏเฉเจจเฉเจเจพเจธเจ เจนเฉเจฃ เจกเจฐเจพเจเจฃเจพ เจจเจนเฉเจ เจนเฉ, เจเจฟเจเจเจเจฟ เจเจธเจจเฉเฉฐ เจธเจฟเจฐเจซเจผ เจเฉฑเจ เจชเฉเจฐเจ 'เจคเฉ เจเจพเจฃ เจฆเฉ เจฒเฉเฉ เจนเฉ เจจเจพ เจเจฟ เจธเจญ เจจเฉเฉฐ... เจเฉเจฐ, เจฎเจพเฉเฉ เจชเฉเจฐเจญเจพเจต เจเฉฑเจ เจชเฉเจฐเจฎเจพเจฃเจฟเจค เจเจชเจเจฐเจฃ เจธเฉฐเจฐเจเจจเจพ เจนเจจ, เจเจกเจฐเฉเฉฑเจธ เจธเจชเฉเจธ เจจเจฟเจฐเจงเจพเจฐเจค เจเจฐเจจ เจตเจฟเฉฑเจ เจตเจงเฉเจฐเฉ เจเฉเจธเจผเจฒเจคเจพเฅค
lisg เจจเฉเฉฐ เจเจฟเจตเฉเจ เจธเฉฐเจฐเจเจฟเจค เจเจฐเจจเจพ เจนเฉ เจเฉฑเจ เจตเฉฑเจเจฐเจพ เจตเจฟเจธเจผเจพ เจนเฉเฅค เจฒเจพเจเจฌเฉเจฐเฉเจฐเฉเจเจ เจฆเฉ เจฒเจฟเฉฐเจ เจเฉเฉเฉ เจนเฉเจ เจนเจจเฅค เจธเจผเจพเจเจฆ เจเจชเจฐเฉเจเจค เจเจฟเจธเฉ เจจเฉเฉฐ เจเจชเจฃเฉ เจเฉเจเจฟเจเจ เจจเฉเฉฐ เจชเฉเจฐเจพเจชเจค เจเจฐเจจ เจตเจฟเฉฑเจ เจฎเจฆเจฆ เจเจฐเฉเจเจพ. เจตเจฐเจเจจ 6 เจ เจเฉ เจธเจพเจกเฉ เจจเฉเจเจตเจฐเจ เจคเฉ เจฒเจพเจเฉ เจจเจนเฉเจ เจเฉเจคเจพ เจเจพ เจฐเจฟเจนเจพ เจนเฉ - เจชเจฐ เจเฉฑเจ เจธเจฎเฉฑเจธเจฟเจ เจนเฉเจตเฉเจเฉ - เจธเฉฐเจธเจเจฐเจฃ 6 เจฒเจ lisg เจจเฉเฉฐ เจฎเฉเฉ เจฒเจฟเจเจฃ เจฆเฉ เจฏเฉเจเจจเจพ เจนเฉ, เจ เจคเฉ เจฐเฉเจ เจเฉเฉเจจ เจตเจพเจฒเฉ เจชเฉเจฐเฉเจเจฐเจพเจฎ เจจเฉเฉฐ เจ เฉเจ เจเจฐเจจเจพ เจเจผเจฐเฉเจฐเฉ เจนเฉเจตเฉเจเจพเฅค
เจธเจฐเฉเจค: www.habr.com