BG Development


Страници: (3) [1] 2 3   ( Първото ново мнение ) Reply to this topicStart new topicStart Poll

> Как работи мрежата в линукс
dvader
Публикувано на: 05-11-2020, 09:52
Quote Post


Group Icon
Име:
Група: VIP
Ранг: Почетен член

Мнения: 4898
Регистриран на: 12.07.05



По-конкретно, интересува ме откъде IP стека знае кои eth устройства трябва/може да ползва?
Примерно, имам две мрежови карти - /dev/eth0 и /dev/eth1.
Искам без да изключвам едната карта да ползвам само другата.


--------------------
I find your lack of faith disturbing
PM
Top
thrawn
Публикувано на: 05-11-2020, 14:54
Quote Post



Име:
Група: Потребител
Ранг: Почетен член

Мнения: 3004
Регистриран на: 17.01.17



Във всяка ОС това работи по един и същи начин - имаш таблица за рутиране в която се описва кои заявки през кой интерфейс да се пращат.
Ако няма съвпадение, заявката се пуска към default gw-а.


man route



---
CODE
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         _gateway        0.0.0.0         UG    100    0        0 enp5s0
link-local      0.0.0.0         255.255.0.0     U     1000   0        0 enp5s0
192.168.40.0    0.0.0.0         255.255.255.0   U     100    0        0 enp5s0


Това мнение е било редактирано от thrawn на 05-11-2020, 14:55
PMEmail Poster
Top
dvader
Публикувано на: 05-11-2020, 15:21
Quote Post


Group Icon
Име:
Група: VIP
Ранг: Почетен член

Мнения: 4898
Регистриран на: 12.07.05



Не ме разбра. Наясно съм как нещата работят на ниво IP.
Не съм наясно за физическата връзка между IP и Ethernet.
Как IP стека решава на кои ETH устройства трябва да пусне ARP заявки?
Надявам се така е малко по-ясно.


--------------------
I find your lack of faith disturbing
PM
Top
wqw
Публикувано на: 05-11-2020, 16:23
Quote Post


Group Icon
Име: Владимир Висулчев
Група: VIP
Ранг: Почетен член

Мнения: 6225
Регистриран на: 10.06.04



QUOTE (dvader @ 05-11-2020, 15:21)
Не съм наясно за физическата връзка между IP и Ethernet.

Виж че има колона Iface (Interface) в таблицата на route.

При ip route list ти го дава като dev (device).

cheers,
</wqw>


--------------------
PMEmail PosterUsers Website
Top
dvader
Публикувано на: 05-11-2020, 17:44
Quote Post


Group Icon
Име:
Група: VIP
Ранг: Почетен член

Мнения: 4898
Регистриран на: 12.07.05



Уф... явно не питам като хората...
Кой решава, че дадена мрежова карта трябва да има IP адрес и как да го забраня?


--------------------
I find your lack of faith disturbing
PM
Top
JanBirdX
Публикувано на: 05-11-2020, 18:44
Quote Post



Име:
Група: Потребител
Ранг: Почетен член

Мнения: 1742
Регистриран на: 21.02.05



може да махнеш ип-то от картата, как да не участва в присвояването му ... не знам
PMEmail Poster
Top
Lachezar
Публикувано на: 05-11-2020, 20:19
Quote Post



Име: Лъчезар Добрев
Група: Потребител
Ранг: Почетен член

Мнения: 2735
Регистриран на: 10.11.04



Мрежов Интерфейс. Това е термина.
Това може да са физически или логически устройства.
Всяко такова устройство може да има между 0 и много адреси.
Това става в ядрото. Класически това става с инструмента "ifconfig", в последно време заместен от инструмента "ip".

Има няколко метода за автоматично получаване на адрес. Повечето зависят от дистрибуцията. Примерно в Debian и производни има файл /etc/network/interfaces, който определя как да се настроят устройствата.
Има продукти, които се грижат за това кой интерфейс как да получи адрес: статично, динамично (DHCP) или по друг начин (PPP тунел, VPN тунел, auto-conf). В Ubuntu и производни примерно се използва продукта Network Manager, който има добра интеграция с потребителския интерфейс.

Какво искаш да постигнеш зависи до голяма степен от това каква дистрибуция използваш, и какви продукти се използват за управление на мрежовите настройки.


--------------------
И'м ватцхинг ъоу...
PMUsers Website
Top
dvader
Публикувано на: 06-11-2020, 08:52
Quote Post


Group Icon
Име:
Група: VIP
Ранг: Почетен член

Мнения: 4898
Регистриран на: 12.07.05



QUOTE (Lachezar @ 05-11-2020, 20:19)
има файл /etc/network/interfaces, който определя как да се настроят устройствата.

Благодаря, това изглежда като това, което търся.
Имам два бонус въпроса:

1) До колкото схванах, на различните дистрибуции този файл може да се различава по име и съдържание но мога ли да разчитам, че *всички* видове програми за настройки (на дадена дистрибуция) ще пишат в този файл (за дадената дистрибуция)? Демек мога ли да разчитам, че смяната на конфигурация за даден адаптер няма да мине незабелязана?

2) Ако бодна нов адаптер, как се определя дали да се ползва или не?


--------------------
I find your lack of faith disturbing
PM
Top
thrawn
Публикувано на: 06-11-2020, 13:02
Quote Post



Име:
Група: Потребител
Ранг: Почетен член

Мнения: 3004
Регистриран на: 17.01.17



Не можеш да разчиташ, че /etc/network/interfaces съществува. Това е специфика на конкретната дистрибуция (че и на графична среда - както каза Lachezar, в тях си има инструменти като Network Manager-а в който се конфигурира картата по начин подобен на този в windows).

Иначе, дистрибуциите предоставят инструменти като ifconfig / ip които имат флаг UP с който се "вдига" самия интерфейс (демек - включва се).
Процедурата е - зарежда се драйверът, след това с ifconfig/ ip конфигурираш интерфейсът (и го вдигаш)

CODE
enp5s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
       inet 192.168.40.5  netmask 255.255.255.0  broadcast 192.168.40.255
       inet6 fe80::8909:36bf:e53b:4f7f  prefixlen 64  scopeid 0x20<link>
       ether b4:2e:99:74:0c:c5  txqueuelen 1000  (Ethernet)
       RX packets 2061188  bytes 2416002109 (2.4 GB)
       RX errors 0  dropped 0  overruns 0  frame 0
       TX packets 1234016  bytes 111974591 (111.9 MB)
       TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
       inet 127.0.0.1  netmask 255.0.0.0
       inet6 ::1  prefixlen 128  scopeid 0x10<host>
       loop  txqueuelen 1000  (Local Loopback)
       RX packets 3406  bytes 340919 (340.9 KB)
       RX errors 0  dropped 0  overruns 0  frame 0
       TX packets 3406  bytes 340919 (340.9 KB)
       TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0


а след това с route задаваш маршрути (ако ти трябва нещо специално, но поне default gateway трябва да зададеш).

Последно трябва да укажеш адреси на DNS сървъри (в /etc/resolv.conf).

Всичко по конфигурационните файлове е възможно да бъде презаписано от инструменти на конкретната дистрибуция.
---

Ако пишеш някаква програма и ти трябва проверка на интерфейсите не чети конфигурационните файлове а ползвай /proc и /sys за достъп до състоянието на системата.

Това мнение е било редактирано от thrawn на 06-11-2020, 13:19

Прикачена картинка (Кликнете на картинката, за да я увеличите!)
Прикачена картинка
PMEmail Poster
Top
Lachezar
Публикувано на: 06-11-2020, 13:56
Quote Post



Име: Лъчезар Добрев
Група: Потребител
Ранг: Почетен член

Мнения: 2735
Регистриран на: 10.11.04



QUOTE (dvader @ 06-11-2020, 08:52)
1) До колкото схванах, на различните дистрибуции този файл може да се различава по име и съдържание но мога ли да разчитам, че *всички* видове програми за настройки (на дадена дистрибуция) ще пишат в този файл (за дадената дистрибуция)? Демек мога ли да разчитам, че смяната на конфигурация за даден адаптер няма да мине незабелязана?

Този файл съществува на Debian производни дистрибуции. Други дистрибуции (примерно Slackware) може изобщо да нямат дори подобен файл.

QUOTE (dvader @ 06-11-2020, 08:52)
2) Ако бодна нов адаптер, как се определя дали да се ползва или не?

Ако искаш да провериш може да използваш:
CODE
user@host:~$ ip link
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
   link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: enp0s31f6: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc fq_codel state DOWN mode DEFAULT group default qlen 1000
   link/ether xx:xx:xx:xx:xx:xx brd ff:ff:ff:ff:ff:ff
3: wlp4s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DORMANT group default qlen 1000
   link/ether xx:xx:xx:xx:xx:xx brd ff:ff:ff:ff:ff:ff

Тук се вижда, че enp0s31f6 е DOWN, а wlp4s0 е UP.

За да видиш IPv4 и IPv6 състоянието:
CODE
user@host:~$ ip address
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
   link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
   inet 127.0.0.1/8 scope host lo
      valid_lft forever preferred_lft forever
   inet6 ::1/128 scope host
      valid_lft forever preferred_lft forever
2: enp0s31f6: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc fq_codel state DOWN group default qlen 1000
   link/ether xx:xx:xx:xx:xx:xx brd ff:ff:ff:ff:ff:ff
3: wlp4s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
   link/ether xx:xx:xx:xx:xx:xx brd ff:ff:ff:ff:ff:ff
   inet 192.168.xxx.yyy/24 brd 192.168.xxx.255 scope global dynamic noprefixroute wlp4s0
      valid_lft 9195sec preferred_lft 9195sec
   inet6 fe80::xxxx:xxxx:xxxx:xxxx/64 scope link noprefixroute
      valid_lft forever preferred_lft forever


И както вече написах как ще се настрои един интерфейс, който ще добавиш в системата зависи от дистрибуцията.
Общо положение:
  • сървърните дистрибуции не настройват новите интерфейси автоматично.
  • потребителските дистрибуции включват DHCP клиент на новите ethernet интерфейси, които са включени
  • потребителските дистрибуции показват избор на клетки за новите wifi/wlan интерфейси, но не ги настройват

В две думи: виж за коя дистрибуция става дума.


--------------------
И'м ватцхинг ъоу...
PMUsers Website
Top
1 потребители преглеждат тази тема в момента (1 гости, 0 анонимни потребители)
Потребители, преглеждащи темата в момента:

Topic Options Страници: (3) [1] 2 3  Reply to this topicStart new topicStart Poll

 


Copyright © 2003-2019 | BG Development | All Rights Reserved
RSS 2.0