Леопард
В продолжение http://pikabu.ru/story/zastukali_5169259
Все жабы принадлежат их авторам из оригинального поста
В продолжение http://pikabu.ru/story/zastukali_5169259
Все жабы принадлежат их авторам из оригинального поста
Итак, перейдем в практическую плоскость, в этой части попробуем разобраться с тем, как же все-таки происходит обмен данными в нашей маленькой IP сети.
Если что-то будет непонятно попробуйте прочитать снова предыдущий пост, здесь теоретической части будет минимум :).
Для построения модели сети я воспользуюсь эмулятором GNS3 2.0.3, создав проект соответствующий приведенной в прошлой статье топологии:
Для работы нам потребуется сниффер, в роли которого в стандартной поставке GNS3 используется WireShark.
В маршрутизатор загружена конфигурация, эмулирующая домашний роутер:
На интерфейсе LAN – 192.168.0.1/25, dhcp server, на интерфейсе WAN – dhcp client и nat. Все, что может дополнительно пересылать пакеты в сети (cdp, keepalive etc.) выключено. Включен dns server. Конфиг можно посмотреть в конце поста.
В пылесосе включен dhcp client.
В начальном состоянии сети пылесос и маршрутизатор выключены.
Включим пылесос. Итак сначала пылесос попытается автоматически подключиться к сети и получить настройки для сетевого подключения.
1 0.000000 :: ff02::2 ICMPv6 62 Router Solicitation
2 0.050110 0.0.0.0 255.255.255.255 DHCP 406 DHCP Discover - Transaction ID 0x9f2d780f
3 1.050229 0.0.0.0 255.255.255.255 DHCP 406 DHCP Discover - Transaction ID 0x9f2d780f
4 4.050303 0.0.0.0 255.255.255.255 DHCP 406 DHCP Discover - Transaction ID 0x9f2d780f
Видно 4 кадра, 1-й — попытка автонастройки IPv6, остальные — запросы DHCP.
Разберем подробнее 4-й фрейм:
Frame 4: 406 bytes on wire (3248 bits), 406 bytes captured (3248 bits) on interface 0
Ethernet II, Src: Private_66:68:00 (00:50:79:66:68:00), Dst: Broadcast (ff:ff:ff:ff:ff:ff)
Internet Protocol Version 4, Src: 0.0.0.0, Dst: 255.255.255.255
User Datagram Protocol, Src Port: 68, Dst Port: 67
Bootstrap Protocol (Discover)
В 1й строке общие параметры кадра, во 2-й параметры заголовка ethernet (источник, src -
00:50:79:66:68:00; получатель, dst – ff:ff:ff:ff:ff:ff), в 3-й строке параметры заголовка IP, в 4-й транспортного протокола (UDP), в 5-й параметры протокола прикладного уровня и полезная нагрузка (payload). Нажав на каждую из строк можно посмотреть более подробную информацию о кадре. В нижней части окна виден HEX- и ASCII-дампы кадра, понятно, что кадр это просто последовательность байт, в которой слева направо расположены заголовки от нижних уровней TCP/IP к верхним.
Включим маршрутизатор и посмотрим на дамп:
Маршрутизатор после включения отправил в интерфейс несколько gratuitous ARP пакетов (5-9), о них позже, а вот после этого 10-м снова видим уже знакомый нам DHCP discover, а за ним еще 3 пакета DHCP. Про DHCP тоже позже поговорим, пока что они нужны только для автонастройки интерфейса пылесоса. Я специально развернул подробную информацию в нижней строке, чтобы можно было сравнить содержимое кадров discover и offer.
Теперь наша сеть полностью функционирует и можно пробовать что-то по ней передавать.
Итак. Очистим дампы и начнем с чистого листа.
Посмотрим настройки интерфейсов маршрутизатора и пылесоса (кто не работает с командной строкой - привыкайте, без нее в сетевой инженерии жизни нет).
TimeCapsule#sh run int e0/0
Building configuration...
Current configuration : 210 bytes
!
interface Ethernet0/0
description LAN
ip address 192.168.0.1 255.255.255.0
no ip redirects
no ip unreachables
no ip proxy-arp
ip nat inside
ip virtual-reassembly in
no cdp enable
no mop enabled
end
iSuck> show
NAME IP/MASK GATEWAY MAC LPORT RHOST:PORT
iSuck 192.168.0.100/24 192.168.0.1 00:50:79:66:68:00 10006 127.0.0.1:10007
fe80::250:79ff:fe66:6800/64
Начнем с ауканья, для него есть прекрасные инструменты в виде целого протокола ICMP, пока самое простое - ping:
iSuck> ping 192.168.0.1
84 bytes from 192.168.0.1 icmp_seq=1 ttl=255 time=0.245 ms
84 bytes from 192.168.0.1 icmp_seq=2 ttl=255 time=0.267 ms
84 bytes from 192.168.0.1 icmp_seq=3 ttl=255 time=0.392 ms
84 bytes from 192.168.0.1 icmp_seq=4 ttl=255 time=0.354 ms
84 bytes from 192.168.0.1 icmp_seq=5 ttl=255 time=0.343 ms
iSuck>
Давайте разберемся, что же сейчас произошло.
Начнем с самого конца. Для того чтобы отправить ping echo request (как и любой другой IP пакет) хосту 192.168.0.1, хосту (sic! ;-D) 192.168.0.100 доcтаточно упаковать этот пакет в эзернет кадр с нужным мак адресом назначения и отправить в соответствующий эзернет интерфейс. Чтобы упаковать этот пакет в эзернет кадр с нужным мак адресом назначения, нужно этот мак адрес откуда-то узнать. Чтобы этот мак адрес откуда-то узнать, нужно спросить хост 192.168.0.1, что у него за мак, зная при этом, что он доступен по эзернет.
Получается почти замкнутый круг, но попробуем из него вырваться. Главная штука, которая нам в этом может помочь - маршрутизация, а точнее таблицы маршрутизации на наших хостах!
Сначала давайте разберемся откуда они вообще взялись, но тут все довольно просто, они построены на основании информации в настройках интерфейсов. То есть в простейшем случае, когда на интерфейсе настраивается IP адрес, определенные маршруты добавляются в таблицу маршрутизации.
iSuck> show ip
NAME : iSuck[1]
IP/MASK : 192.168.0.100/24
GATEWAY : 192.168.0.1
DNS : 192.168.0.1 8.8.8.8
DHCP SERVER : 192.168.0.1
DHCP LEASE : 81750, 86400/43200/75600
DOMAIN NAME : local
MAC : 00:50:79:66:68:00
LPORT : 10006
RHOST:PORT : 127.0.0.1:10007
MTU: : 1500
iSuck>
На VPC узле не очень информативно, зато очень информативно на IOU:
TimeCapsule#sh ip route
Codes: L - local, C - connected, S - static, R - RIP, M - mobile, B - BGP
D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
E1 - OSPF external type 1, E2 - OSPF external type 2
i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
ia - IS-IS inter area, * - candidate default, U - per-user static route
o - ODR, P - periodic downloaded static route, H - NHRP, l - LISP
a - application route
+ - replicated route, % - next hop override
Gateway of last resort is 10.255.255.254 to network 0.0.0.0
S* 0.0.0.0/0 [1/0] via 10.255.255.254
10.0.0.0/8 is variably subnetted, 2 subnets, 2 masks
C 10.255.255.0/24 is directly connected, Ethernet1/0
L 10.255.255.143/32 is directly connected, Ethernet1/0
192.168.0.0/24 is variably subnetted, 2 subnets, 2 masks
C 192.168.0.0/24 is directly connected, Ethernet0/0
L 192.168.0.1/32 is directly connected, Ethernet0/0
TimeCapsule#
Пока нам интересны 2 строки -
C 192.168.0.0/24 is directly connected, Ethernet0/0
L 192.168.0.1/32 is directly connected, Ethernet0/0
Означают они следующее - адрес 192.168.0.1/32 - локальный, настроен на интерфейсе Et0/0, подсеть 192.168.0.0/24 - подключена непосредственно к интерфейсу Et0/0. На практике при обработке пришедших IP пакетов к тайкапсулю он будет действовать по следующему алгоритму: пакеты к 192.168.0.1 предназначены ему, дальше отправляются в соответствующие локальные подсистемы. Пакеты к остальным адресам из 192.168.0.0/24 отправляются в интерфейс Et0/0 соответствующему эзернет узлу сети. Все существующие реализации TCP/IP стеков, работают приблизительно одинаково. Данные строки добавляются в таблицу маршрутизации после добавления IP адреса и маски к интерфейсу.
C 192.168.0.0/24 is directly connected, E0
L 192.168.0.100/32 is directly connected, E0
Посмотреть это, к сожалению никак нельзя, но это так.
После запуска команды ping 192.168.0.1 и формирования пакета, пылесос ищет в таблице маршрутизации запись соответствующую подсети с самой большой маской, в которую входит адрес назначения. В нашем случае это C 192.168.0.0/24 is directly connected, E0. После определения того факта, что подсеть подключена к нему непосредственно по эзернет, пылесос попробует определить мак адрес назначения для хоста 192.168.0.1. Для этого он широковещательно отправит запрос в эзернет интерфейс E0 с вопросом - у кого из вас, соседи, такой адрес. Такой запрос является частью протокола ARP, необходимого для создания таблицы сопоставления IP-MAC. Это видно в дампе -
1 0.000000 Private_66:68:00 Broadcast ARP 64 Who has 192.168.0.1? Tell 192.168.0.100
Далее в IPoE все основано на доверии и необходимый хост ответит ARP ответом -
2 0.000233 aa:bb:cc:00:01:00 Private_66:68:00 ARP 60 192.168.0.1 is at aa:bb:cc:00:01:00 ,
что приведет к обновлению временных ARP таблиц (или кэшей) на обоих хостах:
iSuck> arp
arp table is empty
iSuck> ping 192.168.0.1
84 bytes from 192.168.0.1 icmp_seq=1 ttl=255 time=0.240 ms
84 bytes from 192.168.0.1 icmp_seq=2 ttl=255 time=0.326 ms
84 bytes from 192.168.0.1 icmp_seq=3 ttl=255 time=0.487 ms
84 bytes from 192.168.0.1 icmp_seq=4 ttl=255 time=0.338 ms
84 bytes from 192.168.0.1 icmp_seq=5 ttl=255 time=0.315 ms
iSuck> arp
aa:bb:cc:00:01:00 192.168.0.1 expires in 113 seconds
iSuck>
TimeCapsule#sh ip arpа также к обновлению таблиц коммутации в свичах.
Protocol Address Age (min) Hardware Addr Type Interface
Internet 10.255.255.143 - aabb.cc00.0101 ARPA Ethernet1/0
Internet 10.255.255.254 0 0000.5e00.010b ARPA Ethernet1/0
Internet 192.168.0.1 - aabb.cc00.0100 ARPA Ethernet0/0
Internet 192.168.0.100 1 0050.7966.6800 ARPA Ethernet0/0
TimeCapsule#
Используя таблицу маршрутизации и ARP, хосты становятся способными к обмену IP траффиком в эзернет сети.
Продолжение следует...
TimeCapsule#sh run
Building configuration...
Current configuration : 2763 bytes
!
version 15.4
no service pad
service tcp-keepalives-in
service tcp-keepalives-out
service timestamps debug datetime msec
service timestamps log datetime msec
service password-encryption
!
hostname TimeCapsule
!
boot-start-marker
boot-end-marker
!
aqm-register-fnf
!
!
no aaa new-model
mmi polling-interval 60
no mmi auto-configure
no mmi pvc
mmi snmp-timeout 180
no ip source-route
no ip gratuitous-arps
no ip icmp rate-limit unreachable
!
!
!
!
!
!
!
ip dhcp excluded-address 192.168.0.1
!
ip dhcp pool LAN
network 192.168.0.0 255.255.255.0
default-router 192.168.0.1
domain-name local
dns-server 192.168.0.1 8.8.8.8
!
ip dhcp pool LAN100
host 192.168.0.100 255.255.255.0
client-identifier 0100.5079.6668.00
client-name iSuck
!
!
!
no ip bootp server
ip name-server 10.255.255.254
ip name-server 8.8.8.8
ip dhcp-server 192.168.0.1
ip cef
no ipv6 cef
!
multilink bundle-name authenticated
!
!
!
!
!
!
!
!
!
redundancy
!
no cdp run
!
ip tcp synwait-time 5
!
!
!
!
!
!
!
!
!
!
!
!
!
interface Ethernet0/0
description LAN
ip address 192.168.0.1 255.255.255.0
no ip redirects
no ip unreachables
no ip proxy-arp
ip nat inside
ip virtual-reassembly in
no cdp enable
no mop enabled
!
interface Ethernet0/1
no ip address
shutdown
!
interface Ethernet0/2
no ip address
shutdown
!
interface Ethernet0/3
no ip address
shutdown
!
interface Ethernet1/0
description WAN
ip address 10.255.255.143 255.255.255.0
no ip redirects
no ip unreachables
no ip proxy-arp
ip nat outside
ip virtual-reassembly in
no cdp enable
no mop enabled
!
interface Ethernet1/1
no ip address
shutdown
!
interface Ethernet1/2
no ip address
shutdown
!
interface Ethernet1/3
no ip address
shutdown
!
interface Serial2/0
no ip address
shutdown
serial restart-delay 0
!
interface Serial2/1
no ip address
shutdown
serial restart-delay 0
!
interface Serial2/2
no ip address
shutdown
serial restart-delay 0
!
interface Serial2/3
no ip address
shutdown
serial restart-delay 0
!
interface Serial3/0
no ip address
shutdown
serial restart-delay 0
!
interface Serial3/1
no ip address
shutdown
serial restart-delay 0
!
interface Serial3/2
no ip address
shutdown
serial restart-delay 0
!
interface Serial3/3
no ip address
shutdown
serial restart-delay 0
!
ip forward-protocol nd
!
!
no ip http server
no ip http secure-server
ip dns server
ip nat inside source list 100 interface Ethernet1/0 overload
ip route 0.0.0.0 0.0.0.0 10.255.255.254
!
!
!
access-list 100 remark NAT
access-list 100 permit ip 192.168.0.0 0.0.0.255 any
!
control-plane
!
!
!
!
!
!
!
!
line con 0
exec-timeout 0 0
privilege level 15
logging synchronous
line aux 0
exec-timeout 0 0
privilege level 15
logging synchronous
line vty 0 4
login
transport input none
!
!
end
TimeCapsule#
Пикабушники! Помогите! Уже не знаю что делать, купили путёвку на кубу. По заселению в отель, моим родственникам сказали что оплата от натали турс не поступала. Им пришлось заселится за свой счёт, пока натали турс решает свои финансовые вопросы прошло уже много времени. По итогу их выселяют из номера через 6 часов.... Обращался в Ростуризм, но там мне сказали что могут помочь только если тур оператор обанкротился. В посольство звонили на кубу, там им сказали что не могут выплатить за тур оператора ваучен и спешно закончили разговор. Сейчас у моих родственников нет ни денег на проживание, ни на звонки на родину, благо хоть на ресепшене договорились дать пароль от вайфая.
Обзвонился в это проклятый натали турс, постоянно говорят одно и тоже, звоните на телефон экстренной помощи. Человек который её оказывает, кормит завтраками. А последние 4 часа, просто перестал брать трубку.
Что делать? к Кому обращаться?
Знаю сила пикабу даст мне дельный совет!
два поста для минусов.