2017-02-15 39 views
7

Jestem bardzo nowy w zakresie routingu statycznego, nasz klient poprosił o wdrożenie statycznego routingu dla gniazd. Kiedy googlełem, natknąłem się na rtentry, aby ustawić informacje o routingu. Kiedy otworzyłem tę strukturę, zobaczyłem pola do trasowania statycznego, ale jak mogę tutaj ustawić wiele wpisów? tworzenie wielu rtentry i wywoływanie ioctl(FileDes, SIOCADDRT, &rtentry) naprawi mój problem?Jak skonfigurować wiele wpisów routingu dla gniazda?

int32_t FileDes = socket(PF_INET, SOCK_DGRAM, IPPROTO_IP); 
for(auto RtEntry : RtEntriesList) 
{ 
    ioctl(FileDes, SIOCADDRT, RtEntry)` 
} 

Jeśli skonfiguruję, jak mogę to przetestować? Będzie pomocne, jeśli możesz podać link, aby dowiedzieć się więcej na ten temat.

+0

Gilson, czy możesz bardziej szczegółowo rozwinąć "klienta, który zajął się wdrażaniem statycznego routingu gniazd" w części twojego pytania? Gniazda zwykle nie mają żadnego dodatkowego wyboru trasy, po prostu używają zdefiniowanego w całym systemie routingu; i rtentry nie jest dla normalnych gniazd, to dla administracyjnych gniazd dostać i ustawić routing systemowy (jest używany przez uprzywilejowane polecenie 'route add': http://unix.stackexchange.com/questions/274094/can-not -add-static-route-in-my-ubuntu-siocaddrt-network-is-unreachable). – osgx

+0

@osgx musimy zmodyfikować plik/etc/network/interface, aby zapewnić routing statyczny. Mam jasność co do tej części, musimy również ustawić te informacje routingowe na interfejsie, aby wziął konfigurację bez ponownego uruchamiania. W tym celu musimy ustawić informacje o routingu za pośrednictwem gniazd administracyjnych. Tak więc jestem zdezorientowany, jak ustawić te informacje. Nie chcą wykonywać polecenia route lub restartować urządzenia, aby ustawić statyczną konfigurację routingu. Mam nadzieję, że masz jasność co do mojego pytania. –

+0

Gilson, sprawdź źródła narzędzi 'route' lub [' ip route'] (https://access.redhat.com/sites/default/files/attachments/rh_ip_command_cheatsheet_1214_jcs_print.pdf) (sourceforge.net/projects/net-tools ,) i/lub wykonaj 'strace' /' ltrace'/'sysdig' z poleceń' route add', które są używane do ustawienia pożądanego routingu. – osgx

Odpowiedz

3

W końcu dostałem odpowiedzi.

int32_t FileDes = socket(PF_INET, SOCK_DGRAM, IPPROTO_IP); 

struct rtentry Route1; 
struct rtentry Route2; 
struct rtentry Route3; 

// configure Route1 
// configure Route2 
// configure Route3 

RtEntriesList.push_back(&Route1); 
RtEntriesList.push_back(&Route2); 
RtEntriesList.push_back(&Route3); 

for(auto RtEntry : RtEntriesList) 
{ 
    ioctl(FileDes, SIOCADDRT, RtEntry); 
} 

będzie działać, możemy tworzyć wieloprotokołowe wpisy routingu i dodawać do gniazda FD. a to zaktualizuje tabelę routingu dla całego systemu.

jego podobna do route add .. polecenia

do testowania i ustawić bramę jako mój adres ip komputera i zaczął Wireshark tam. po ustawieniu konfiguracji routingu podany zakres IP jest kierowany do mojego komputera. Dzięki @osgx za informacje, które faktycznie ustawiają tabelę routingu dla całego systemu.