Как связать два компьютера с Ubuntu по Ethernet (без маршрутизатора)?

Вопрос или проблема

Как можно объединить две Ubuntu-компьютера, чтобы они могли “видеть” друг друга по IP-адресу?

Если вы используете два компьютера без роутера для их соединения. Чтобы физически соединить компьютеры, вам понадобится либо свитч, хаб, либо перекрестный кабель(*). Затем вам нужно вручную назначить IP-адреса в одном диапазоне.

В Ubuntu это просто. Кликните правой кнопкой на апплете сетевого менеджера в
Вам нужно сделать это на обоих компьютерах.

  1. Изменить соединения
    • вкладка проводных
      • добавить
  2. введите MAC-адрес интерфейса, который вы будете настраивать. Команда ifconfig может показать вам, каков MAC-адрес:

    $ ifconfig  
    eth0      Link encap:Ethernet  HWaddr 00:30:1b:b9:53:94 
    

    2.1. В более новых версиях Linux имена сетевых карт изменились. wlp2s0, enp1s0. Ищите что-то с подобными именами, где en – это Ethernet, а wl – беспроводное соединение.

    $ ip a l
    2: enp1s0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc fq_codel state DOWN group default qlen 1000
    link/ether 98:e7:f4:5d:59:90 brd ff:ff:ff:ff:ff:ff
    3: wlp2s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 84:ef:18:7b:cd:39 brd ff:ff:ff:ff:ff:ff
    

HWaddr 00:30:1b:b9:53:94 = MAC-адрес
link/ether 84:ef:18:7b:cd:39 = MAC-адрес

  1. Затем нажмите на вкладку настроек IPv4.
    установите метод на ручной.
  2. щелкните “Добавить”, чтобы добавить IP-адрес на обоих компьютерах A и B.

пример для компьютера A

address  | netmask       | gateway   
10.0.0.1 | 255.255.255.0 |  

пример для компьютера B

address  | netmask       | gateway   
10.0.0.2 | 255.255.255.0 | 

проверьте, могут ли они пинговать друг друга
с компьютера A.

$ ping 10.0.0.2  
PING 10.0.0.2 (10.0.0.2) 56(84) байт данных.
64 байта от 10.0.0.2: icmp_seq=1 ttl=128 время=0.457 мс

с компьютера B.

$ ping 10.0.0.1  
PING 10.0.0.1 (10.0.0.1) 56(84) байт данных.
64 байта от 10.0.0.1: icmp_seq=1 ttl=128 время=0.457 мс

это означает, что все работает.

(*) Большинство современных компьютеров могут использовать обычный кабель вместо перекрестного. Некоторые старые компьютеры потребуют перекрестный кабель

пример командной строки, потому что это быстро и просто.

В более новых версиях Linux имена сетевых карт изменились. wlp2s0, enp1s0. Ищите что-то с подобными именами, где en – это Ethernet, а wl – беспроводное соединение.

$ ip a l
2: enp1s0: 
3: wlp2s0: 

Вам нужно будет обновить следующую команду для использования другого dev enp1s0 и т.д.

На компьютере A

sudo ip ad add 10.0.0.10/24 dev eth0

На компьютере B

sudo ip ad add 10.0.0.20/24 dev eth0

Проверка с A на B

ping 10.0.0.20

Проверка с B на A

ping 10.0.0.10

При условии, что кабель соединяет два компьютера и сетевой интерфейс на обоих включен и называется eth0, это должно работать. Оставшаяся часть этого поста поможет найти решение, если будут проблемы.

10.0.0.xx – это IP-адрес компьютеров.
/24 показывает компьютерам, что последние 8 бит из 32-битного IP-адреса могут изменяться. Это похоже на указание маски подсети 255.255.255.0. Это устанавливает маршруты, которые компьютеру / сети доступны.

вы должны увидеть что-то похожее на это, используя

ip route
10.0.0.0/24 dev eth0 proto kernel scope link src 10.0.0.20

Если вы не видите ничего подобного в таблице маршрутов, но видите что-то вроде этого, когда используете ip ad. Вам нужно будет добавить адрес снова, используя синтаксис подсети /24.

ip ad
inet 172.16.1.40/32 scope global eth0

Обратите внимание на /32, которая фактически говорит, что это единственный компьютер, который существует в сети из одного компьютера. Который сам по себе. Маска подсети 255.255.255.255. Следовательно, маршруты отсутствуют, и сеть не работает.

Чтобы узнать, какие сетевые интерфейсы у вас есть и какие работают

# ip ad
1: lo:  mtu 16436 qdisc noqueue 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0:  mtu 1500 qdisc pfifo_fast qlen 1000
    link/ether 46:fd:51:f9:f5:2e brd ff:ff:ff:ff:ff:ff
    inet 172.16.0.186/24 brd 172.16.0.255 scope global eth0
    inet 172.16.1.10/24 scope global eth0
    inet 172.16.1.40/32 scope global eth0
    inet6 fe80::44fd:51ff:fef9:f52e/64 scope link 
       valid_lft forever preferred_lft forever
3: eth1:  mtu 1500 qdisc noop qlen 1000
    link/ether 72:3f:92:eb:a4:cc brd ff:ff:ff:ff:ff:ff

Если вам нужно удалить IP-адрес, потому что вы ошиблись

ip ad del 10.0.0.40/32 dev eth0
ip ad del 10.0.0.40/24 dev eth0

Это удалит маршруты, а также IP-адрес.

Выберите один из компьютеров в качестве сервера. Если один компьютер подключён к интернету, используйте его в качестве сервера.

На сервере щелкните по индикатору сети и выберите Изменить соединения. Выберите Ethernet-соединение, затем нажмите кнопку Изменить. Перейдите на вкладку IPv4 и измените Метод с Автоматический (DHCP) на Общий доступ для других компьютеров.

Соедините два компьютера с помощью Ethernet-кабеля. Второй компьютер получит IP-адрес от сервера и доступ в интернет.

Если у вас старое оборудование, вы можете убедиться, что Ethernet-кабель — это перекрестный кабель. Современное оборудование автоматически производит перекрестное соединение.

Испытано на Ubuntu 14.04 LTS.

Если вы соединяете их напрямую с помощью только Ethernet-кабеля, и как минимум с версии 16.04, вы можете легко сделать это, перейдя в настройки сети:

  1. Измените проводное соединение
  2. Перейдите на вкладку IPv4
  3. Выберите Только локальная связь

Сделайте это на обоих компьютерах, и вы закончите.

Ниже приведено повторение ответа nelaar, обновленное для Ubuntu 14.04.

Требования к аппаратному обеспечению

Чтобы соединить два компьютера без роутера, вам понадобится одно из следующих:

  • Стандартный Ethernet-кабель, который должен работать с большинством современных устройств, или
  • Ethernet перекрестный кабель, вместо современного сетевого адаптера, или
  • Простой Ethernet-хаб (и два Ethernet-кабеля).

В Ubuntu 14.04 LTS

Вам нужно вручную назначить IP-адреса в одном диапазоне. Следующие шаги предполагают, что вы используете стандартный интерфейс Unity. Повторите эти шаги для каждого компьютера.

  1. Нажмите на индикатор сети в панели Unity (в правом верхнем углу).
  2. В выпадающем меню выберите Изменить соединения…
  3. В диалоговом окне Сетевые соединения нажмите кнопку Добавить.
  4. Когда вас попросят выбрать тип соединения, выберите Ethernet и нажмите кнопку Создать….
  5. Назовите ваше соединение “Прямое соединение с [имя другого компьютера]”, чтобы отличить его от стандартного Ethernet-соединения.
  6. В выпадающем меню MAC-адрес устройства выберите тот, который соответствует интерфейсу, который вы планируете использовать.
  7. Перейдите на вкладку Настройки IPv4.
  8. Измените Метод на Ручной.
  9. Щелкните кнопку Добавить, чтобы добавить IP-адрес.
    • Пример настроек для Компьютера #1:
      • Адрес: 10.0.0.1
      • Маска сети: 255.255.255.0
      • Шлюз:
    • Пример настроек для Компьютера #2:
      • Адрес: 10.0.0.2
      • Маска сети: 255.255.255.0
      • Шлюз:

После этого, и если компьютеры соединены проводами, попробуйте пропинговать друг друга.

user@computer1:~$ ping 10.0.0.2

Вывод должен выглядеть примерно так:

PING 10.0.0.2 (10.0.0.2) 56(84) байт данных.
64 байта от 10.0.0.2: icmp_seq=1 ttl=128 время=0.457 мс

Решение через командную строку (nmcli), сохраняющее изменения после перезагрузки

Соедините два хоста с помощью Ethernet-кабеля. Определите Ethernet-интерфейс
компьютеров, выполнив

ip addr

на каждом из них. Он должен начинаться с en или eth.
Ниже замените {enX} и {enY} соответствующими
именами интерфейсов, только что полученными.

На хосте X выполните

nmcli c add type ethernet ifname {enX} con-name MyWired ip4 10.0.0.1/24

На хосте Y выполните

nmcli c add type ethernet ifname {enY} con-name MyWired ip4 10.0.0.2/24

Теперь вы должны быть в состоянии пинговать с Y на X и наоборот с помощью

ping 10.0.0.2 #С хоста X
ping 10.0.0.1 #С хоста Y

Если вы хотите ssh на машины, установите openssh-server.

Ваш вопрос не совсем краток, я предполагаю, что вы просто хотите 2 компьютера Ubuntu в сети.

Подключить 2 компьютера Ubuntu достаточно просто, просто получите сетевой кабель (Cat 5e Cross Cable) и соедините оба компьютера с помощью этого кабеля, и Ubuntu должен предоставить им соединение “Auto Eth” (Автоматический IP).
Это, в принципе, всё, что нужно, чтобы подключить 2 компьютера Ubuntu в сеть.

Позже, если вы хотите увидеть автоматический IP, назначенный компьютеру, выполните команду ifconfig или щелкните правой кнопкой мыши на ‘апплете NetworkManager‘ и выберите информацию о соединении

введите описание изображения здесь

Ubuntu 23.10 GUI

Просто предоставлю несколько скриншотов того, что https://askubuntu.com/a/553374/52975 сказал.

Компьютер 1

Откройте Настройки -> Сеть.

Нажмите на значок шестеренки под Проводное:

введите описание изображения здесь

Я не думаю, что я что-то изменил здесь:

введите описание изображения здесь

Выберите “Общий доступ для других компьютеров” (TODO, как сделать это из командной строки? https://unix.stackexchange.com/questions/243408/share-wlan-connection-to-ethernet-using-command-line)

введите описание изображения здесь

И затем “Применить”.

Компьютер 2

Я не думаю, что я что-то изменил на Компьютере 2, он просто настроен на “Автоматический (DHCP)”

введите описание изображения здесь

Результат

На Компьютере 1:

ip a

показывает:

2: enp1s0f0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether fc:5c:ee:24:fb:b4 brd ff:ff:ff:ff:ff:ff
    inet 10.42.0.1/24 brd 10.42.0.255 scope global noprefixroute enp1s0f0
       valid_lft forever preferred_lft forever

и на Компьютере 2:

2: enp0s31f6: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 54:e1:ad:b5:5b:08 brd ff:ff:ff:ff:ff:ff
    inet 10.42.0.70/24 brd 10.42.0.255 scope global dynamic noprefixroute enp0s31f6
       valid_lft 2914sec preferred_lft 2914sec
    inet6 fe80::a64f:794b:b8fa:5501/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever

так что мы понимаем, что эти IP-адреса были автоматически согласованы с DHCP.

Теперь мы можем подключиться с одного компьютера на другой по этим IP-адресам, например, с 1 на 2:

ping 10.42.0.70

и с 2 на 1:

ping 10.42.0.1

Испытано на компьютере 1 = Lenovo ThinkPad P14s, Компьютер 2 = Lenovo ThinkPad P51, оба на Ubuntu 23.10 и соединенные обычным Ethernet-кабелем Cat 5e (не перекрестным, сетевые карты таких относительно современных компьютеров могут это обрабатывать).

Разрешите компьютеру 2 доступ в интернет через компьютер 1

Если вы также хотите, чтобы компьютер 2 имел доступ в интернет через компьютер 1, то вам также нужно будет поиграть с sudo sysctl net.ipv4.ip_forward=1, как упомянуто здесь: Поделиться беспроводным соединением с проводным Ethernet-портом

Мне понравилось решение nelaaro (https://askubuntu.com/a/116680/22307): Оно простое и короткое, не вносящее постоянные изменения. Если вы перезагрузите компьютер, все вернется в обычное состояние.

Но мой NetworkManager не позволял мне: Он хотел контролировать интерфейсы, и когда я вручную устанавливал адрес, он сбрасывал их.

Я нашел способ обмануть его: виртуальные интерфейсы.

Определите свой физический интерфейс, выполнив следующую команду на обоих компьютерах:

$ ip a l
1: lo: << нет: это интерфейс обратной связи
2: enp0s25: << ЭТО ТО, ЧТО ВАМ НУЖНО
3: wlp3s0: << нет: это беспроводное соединение
4: docker0: << нет: используется docker

Теперь трюк состоит в том, чтобы использовать виртуальный интерфейс вместо физического. Вы просто добавляете :0 к имени:

computer1$ sudo ip ad add 10.1.1.1 dev enp0s25:0
computer2$ sudo ip ad add 10.2.2.2 dev enp0s25:0
computer1$ ping 10.2.2.2
computer2$ ping 10.1.1.1

NetworkManager, похоже, этого не замечает, так что он не сбрасывает ваш интерфейс.

Ответ или решение

Чтобы настроить сеть между двумя компьютерами с Ubuntu по Ethernet-кабелю (без маршрутизатора), вам понадобятся:

  1. Физическое подключение: Используйте обычный Ethernet-кабель. Большинство современных сетевых адаптеров поддерживают автоматическое переключение (Auto-MDI/MDI-X), поэтому в большинстве случаев вам не понадобится «перекрестный» кабель. Однако на старом оборудовании требуется именно перекрестный кабель.

  2. Настройка IP-адресов: Вам нужно вручную назначить IP-адреса обоим компьютерам, чтобы они могли видеть друг друга. Для выполнения этих шагов потребуется доступ к графическому интерфейсу или командной строке.

Графический Интерфейс

  1. Настройка на первом компьютере:

    • Откройте индикатор сети в верхнем правом углу.
    • Выберите «Редактировать соединения…».
    • На вкладке «Проводные» нажмите «Добавить».
    • Введите имя соединения, например «Direct Connection».
    • В поле MAC-адреса выберите соответствующий сетевой интерфейс (это можно найти командой ip a).
    • Перейдите на вкладку «IPv4».
    • Установите метод на «Ручной», нажмите «Добавить», затем введите следующие данные:
      • IP-адрес: 10.0.0.1
      • Маска подсети: 255.255.255.0
    • Сохраните изменения.
  2. Настройка на втором компьютере:

    • Повторите те же шаги, но введите:
      • IP-адрес: 10.0.0.2
      • Маска подсети: 255.255.255.0
    • Сохраните изменения.
  3. Проверка соединения:

    • Откройте терминал на первом компьютере и выполните команду:
      ping 10.0.0.2
    • На втором компьютере выполните:
      ping 10.0.0.1
    • Если вы видите ответ, значит, компьютеры успешно соединены.

Командная Строка

Если вы предпочитаете использовать командную строку, выполните следующие команды для настройки:

  1. На первом компьютере:

    sudo ip addr add 10.0.0.1/24 dev {your-ethernet-interface}
  2. На втором компьютере:

    sudo ip addr add 10.0.0.2/24 dev {your-ethernet-interface}

Замените {your-ethernet-interface} на имя сетевого интерфейса, которое можно узнать с помощью команды ip a.

  1. Проверьте соединение:
    • На первом компьютере выполните ping 10.0.0.2.
    • На втором компьютере выполните ping 10.0.0.1.

Тестирование

После настройки обоих компьютеров вы должны видеть, что они могут пинговать друг друга. Если есть проблемы с соединением:

  • Проверьте подключение Ethernet-кабеля.
  • Убедитесь, что конфигурация IP-адресов верна.
  • Проверьте, что сетевые интерфейсы активны.

Заключение

Теперь вы знаете, как настроить сеть между двумя компьютерами с Ubuntu через Ethernet. Такая настройка позволяет обмениваться данными напрямую, что полезно для локальной работы, тестирования или передачи данных без использования маршрутизаторов.

Оцените материал
Добавить комментарий

Капча загружается...