DeaLoic / bmstu-OS-course

0 stars 0 forks source link

Добавление пути в таблицу путей Linux #1

Open SerafimKuzmin opened 8 months ago

SerafimKuzmin commented 8 months ago

Пытаюсь воспроизвести программу у себя и ничего не работает. Возник вопрос: откуда берется ip адрес, который добавляется в таблицу путей? sudo ip route add 0.0.0.0/0 via 192.168.43.71 dev virt0 Какой смысл имеет адрес 192.168.43.71?

DeaLoic commented 8 months ago

@SerafimKuzmin Просто случайный адрес в той же подсети для возможности направления трафика через интерфейс, иначе ругалось бы на отсутствие пути. Что конкретно не работает? Логи ядра, таблицы путей, список интерфейсов?

SerafimKuzmin commented 8 months ago

@SerafimKuzmin Просто случайный адрес в той же подсети для возможности направления трафика через интерфейс, иначе ругалось бы на отсутствие пути. Что конкретно не работает? Логи ядра, таблицы путей, список интерфейсов?

Компиляция программы

Начнем с того, что код в репозитория не компилируется по нескольким причинам:

В коде модуля wlp0s20f3 указан как родительский интерфейс.

user@user-RedmiBook-13:~/university/os_course/src$ sudo ip addr add 192.168.62.41/24 dev virt0
user@user-RedmiBook-13:~/university/os_course/src$ ip a | grep virt0
11: virt0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UNKNOWN group default qlen 1000
    inet 192.168.62.41/24 scope global virt0
Таблица маршутизации ядра протокола IP
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0         192.168.62.99   0.0.0.0         UG    600    0        0 wlp0s20f3
169.254.0.0     0.0.0.0         255.255.0.0     U     1000   0        0 wlp0s20f3
172.17.0.0      0.0.0.0         255.255.0.0     U     0      0        0 docker0
172.25.0.0      0.0.0.0         255.255.0.0     U     0      0        0 br-8db0000384cf
192.168.62.0    0.0.0.0         255.255.255.0   U     600    0        0 wlp0s20f3
user@user-RedmiBook-13:~/university/os_course/src$ sudo ip route add 0.0.0.0/0 via 192.168.62.22 dev virt0
user@user-RedmiBook-13:~/university/os_course/src$ route -n
Таблица маршутизации ядра протокола IP
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0         192.168.62.22   0.0.0.0         UG    0      0        0 virt0
0.0.0.0         192.168.62.99   0.0.0.0         UG    600    0        0 wlp0s20f3
169.254.0.0     0.0.0.0         255.255.0.0     U     1000   0        0 wlp0s20f3
172.17.0.0      0.0.0.0         255.255.0.0     U     0      0        0 docker0
172.25.0.0      0.0.0.0         255.255.0.0     U     0      0        0 br-8db0000384cf
192.168.42.0    0.0.0.0         255.255.255.0   U     0      0        0 virt0
192.168.62.0    0.0.0.0         255.255.255.0   U     600    0        0 wlp0s20f3
ping: Warning: source address might be selected on device other than: virt0
PING 192.168.62.1 (192.168.62.1) from 192.168.62.40 virt0: 56(84) bytes of data.
^C
--- 192.168.62.1 ping statistics ---
56 packets transmitted, 0 received, 100% packet loss, time 56301ms

user@user-RedmiBook-13:~/university/os_course/src$ arp -n
Адрес HW-тип HW-адрес Флаги Маска Интерфейс
192.168.62.99            ether   d2:44:f6:87:44:c6   C                     wlp0s20f3
192.168.62.1                     (не заверше                      virt0

Логи ядра:

image
DeaLoic commented 8 months ago

https://github.com/DeaLoic/bmstu-OS-course/issues/1#issuecomment-1972917547

Хм. У тебя пинг не выставляет адрес virt0. Из того что я вижу по логам, пакеты нормально прокидываются с интерфейса и уходят, но считают, что ушли с wlp0s20f3. Соответственно приходящие пакеты приходят с daddr wlp0s20f3. Так же в таблице маршрутизации второй virt0 destination 192.168.42.0, а не 192.168.62.0, что странно (возможно проблема тут)

Проходит ли пинг на внешний адрес, 1.1.1.1? А curl? А на какой-нибудь другой внутренний адрес?