Вопрос или проблема
Как можно объединить две Ubuntu-компьютера, чтобы они могли “видеть” друг друга по IP-адресу?
Если вы используете два компьютера без роутера для их соединения. Чтобы физически соединить компьютеры, вам понадобится либо свитч, хаб, либо перекрестный кабель(*). Затем вам нужно вручную назначить IP-адреса в одном диапазоне.
В Ubuntu это просто. Кликните правой кнопкой на апплете сетевого менеджера в
Вам нужно сделать это на обоих компьютерах.
- Изменить соединения
- вкладка проводных
- добавить
- вкладка проводных
-
введите 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-адрес
- Затем нажмите на вкладку настроек IPv4.
установите метод на ручной. - щелкните “Добавить”, чтобы добавить 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, вы можете легко сделать это, перейдя в настройки сети:
- Измените проводное соединение
- Перейдите на вкладку IPv4
- Выберите Только локальная связь
Сделайте это на обоих компьютерах, и вы закончите.
Ниже приведено повторение ответа nelaar, обновленное для Ubuntu 14.04.
Требования к аппаратному обеспечению
Чтобы соединить два компьютера без роутера, вам понадобится одно из следующих:
- Стандартный Ethernet-кабель, который должен работать с большинством современных устройств, или
- Ethernet перекрестный кабель, вместо современного сетевого адаптера, или
- Простой Ethernet-хаб (и два Ethernet-кабеля).
В Ubuntu 14.04 LTS
Вам нужно вручную назначить IP-адреса в одном диапазоне. Следующие шаги предполагают, что вы используете стандартный интерфейс Unity. Повторите эти шаги для каждого компьютера.
- Нажмите на индикатор сети в панели Unity (в правом верхнем углу).
- В выпадающем меню выберите Изменить соединения…
- В диалоговом окне Сетевые соединения нажмите кнопку Добавить.
- Когда вас попросят выбрать тип соединения, выберите Ethernet и нажмите кнопку Создать….
- Назовите ваше соединение “Прямое соединение с [имя другого компьютера]”, чтобы отличить его от стандартного Ethernet-соединения.
- В выпадающем меню MAC-адрес устройства выберите тот, который соответствует интерфейсу, который вы планируете использовать.
- Перейдите на вкладку Настройки IPv4.
- Измените Метод на Ручной.
- Щелкните кнопку Добавить, чтобы добавить IP-адрес.
- Пример настроек для Компьютера #1:
- Адрес: 10.0.0.1
- Маска сети: 255.255.255.0
- Шлюз:
- Пример настроек для Компьютера #2:
- Адрес: 10.0.0.2
- Маска сети: 255.255.255.0
- Шлюз:
- Пример настроек для Компьютера #1:
После этого, и если компьютеры соединены проводами, попробуйте пропинговать друг друга.
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-кабелю (без маршрутизатора), вам понадобятся:
-
Физическое подключение: Используйте обычный Ethernet-кабель. Большинство современных сетевых адаптеров поддерживают автоматическое переключение (Auto-MDI/MDI-X), поэтому в большинстве случаев вам не понадобится «перекрестный» кабель. Однако на старом оборудовании требуется именно перекрестный кабель.
-
Настройка IP-адресов: Вам нужно вручную назначить IP-адреса обоим компьютерам, чтобы они могли видеть друг друга. Для выполнения этих шагов потребуется доступ к графическому интерфейсу или командной строке.
Графический Интерфейс
-
Настройка на первом компьютере:
- Откройте индикатор сети в верхнем правом углу.
- Выберите «Редактировать соединения…».
- На вкладке «Проводные» нажмите «Добавить».
- Введите имя соединения, например «Direct Connection».
- В поле MAC-адреса выберите соответствующий сетевой интерфейс (это можно найти командой
ip a
). - Перейдите на вкладку «IPv4».
- Установите метод на «Ручной», нажмите «Добавить», затем введите следующие данные:
- IP-адрес: 10.0.0.1
- Маска подсети: 255.255.255.0
- Сохраните изменения.
-
Настройка на втором компьютере:
- Повторите те же шаги, но введите:
- IP-адрес: 10.0.0.2
- Маска подсети: 255.255.255.0
- Сохраните изменения.
- Повторите те же шаги, но введите:
-
Проверка соединения:
- Откройте терминал на первом компьютере и выполните команду:
ping 10.0.0.2
- На втором компьютере выполните:
ping 10.0.0.1
- Если вы видите ответ, значит, компьютеры успешно соединены.
- Откройте терминал на первом компьютере и выполните команду:
Командная Строка
Если вы предпочитаете использовать командную строку, выполните следующие команды для настройки:
-
На первом компьютере:
sudo ip addr add 10.0.0.1/24 dev {your-ethernet-interface}
-
На втором компьютере:
sudo ip addr add 10.0.0.2/24 dev {your-ethernet-interface}
Замените {your-ethernet-interface}
на имя сетевого интерфейса, которое можно узнать с помощью команды ip a
.
- Проверьте соединение:
- На первом компьютере выполните
ping 10.0.0.2
. - На втором компьютере выполните
ping 10.0.0.1
.
- На первом компьютере выполните
Тестирование
После настройки обоих компьютеров вы должны видеть, что они могут пинговать друг друга. Если есть проблемы с соединением:
- Проверьте подключение Ethernet-кабеля.
- Убедитесь, что конфигурация IP-адресов верна.
- Проверьте, что сетевые интерфейсы активны.
Заключение
Теперь вы знаете, как настроить сеть между двумя компьютерами с Ubuntu через Ethernet. Такая настройка позволяет обмениваться данными напрямую, что полезно для локальной работы, тестирования или передачи данных без использования маршрутизаторов.