Если у вас есть десктоп с Линуксом, а у жены (у вас, у приятеля и т.д., нужное подчеркнуть) есть нетбук c Windows, то это не праздный вопрос, даже если оба имеют соединение с Интернетом. Конечно, можно организовать между ними обмен через флешку, облако или USB. Но во всех случаях, кроме USB, скорость обмена будет низкой. Однако, соединить по USB компьютеры с разными ОС не так-то просто, во всяком случае я пока не пробовал. А если нужно обмениваться файлами в несколько гигабайт?
Зачем дома сеть?
Тут-то и приходит на выручку старая добрая проводная компьютерная сеть. Одна незадача: патчкордом, соединяющим модем с десктопом, нельзя подключить нетбук, нужен кроссоверный кабель. Раздобыть дешёвый кроссовер несложно – можно купить на рынке в Ждановичах, если нет опыта работы с обжимкой. Но часто сгибаться, лазать под стол, вытаскивать десктоп, чтобы в единственной розетке RJ45, расположенной на его задней стенке поменять кабель – это не путь для уважающего себя пользователя. Разумнее однажды купить сетевую PCI-карту, вставить её в десктоп, воткнуть в неё кроссовер и закрыть этот вопрос надолго. Да и встроенная в «материнку» сетевая карта целее будет.
Обойдёмся без GUI
Не советую привыкать ко всякого рода сетевым менеджерам вроде NetworkManager, wicd или webmin. Они не только запутывают, но и экранируют понимание того, что с их помощью вы делаете. Оставьте их в покое. Если у вас DSL-модем настроен, как мост, а сейчас мы рассматриваем именно такой случай, то подключиться к Интернет-провайдеру проще всего с помощью надёжнейшей утилиты pppoe config, для чего служит команда
sudo pppoe config
Эта команда запускает мастер подключения. В результате работы мастера будет сгенерирован аппаратно-программный сетевой интерфейс ppp0.
Сетевую PCI-карту уже вставили? Проверьте, что ОС её видит, командой
lspci | grep Eth
Если на экран поступили сведения о двух картах, значит, всё в порядке, иначе, скорее всего, вы криво вставили карту. Ровняем. Далее смотрим, появился ли интерфейс eth1, для чего вводим команду
ifconfig
Если интерфейс eth1 появился, то всё нормально, иначе или карта неисправна, или вам попалась редкая карта, для которой ОС не располагает драйвером. Сочувствую. Установку драйвера сетевой карты я описывал в http://new.kv.by/content/doukomplektovyvaem-linuks-zhelezom. Пользуйтесь, но сначала найдите, откуда скачать драйвер.
Настраиваем сетевые интерфейсы
Соедините кроссовером розетку RJ45 PCI-карты десктопа с такой же розеткой нетбука, включите нетбук, настройте на нём новое подключение по локальной сети, задайте в свойствах TCP-протокола этого подключения сетевой адрес 192.168.2.1 и маску 255.255.255.0.
На десктопе интерфейс eth0, смотрящий в Интернет, настраивается автоматически при включении десктопа, и IP-адрес его будет переменным, задаваемым провайдером. Важно то, что этот адрес никогда не попадёт в зону локальных сетей класса С, адреса которых начинаются с октетов 192.168. Поэтому для определённости примем, что IP-адрес карты eth1 будет равен 192.168.2.2 при маске 255.255.255.0, а адрес нетбука – 192.168.2.1 с такой же маской. Адрес шлюза задавать не будем, так как шлюза нет. Настроим сетевую карту eth1 командами:
sudo ifconfig eth1 down
sudo ifconfig eth1 192.168.2.2 mask 255.255.255.0 up
Командой ifconfig дополнительно проверяем, правильно ли установились адреса.
Что такое маршрутизация
О маршрутизациии пакетов в компьютере можно не задумываться, пока работает только один аппаратный сетевой интерфейс. Но как только появляется ещё один или, не дай Бог, ещё несколько, то ядру ОС надо указать, как связать конкретный сетевой интерфейс с адресом сети, к которой он подключен. Для этого служит таблица маршрутизации, которую всегда можно увидеть командой
netstat -n -r
Если никаких маршрутов не задано, то будут выведены только заголовки таблицы. Нам надо, чтобы сетевая карта eth1 отправляла/принимала бы пакеты в/из сети 192.168.2.0 при маске 255.255.255.0 при неопределённом шлюзе, т.е., отправляла/принимала бы пакеты в/из нетбука. Нет ничего проще! По умолчанию у вас уже есть маршрут для интерфейса ppp0, его создал мастер подключения. Добавляем новое правило маршрутизации:
sudo route add -net 192.168.2.0 netmask 255.255.255.0 eth1
И всё, этого достаточно. Подробнее о маршрутизации можно почитать здесь: http://sudouser.com/nastrojka-marshrutizacii-v-ubuntu-linux-dlya-nachinayushhix.html А если изучать ещё глубже, то наберите в терминале man route. Отмечу, что маршрутизация несёт и защитные функции, ограничивая доступ к ресурсам.
Помните о файрволле!
Соединили компьютеры кроссоверным кабелем и настроили, как описано выше? Держу пари, что пинговаться ноутбук не будет. Или наоборот, из нетбука не будет пинговаться десктоп. Всё дело в том, как на десктопе настроен файрволл iptables. А он должен быть настроен так, чтобы раздельно фильтровать обмен между десктопом и Интернетом и обмен между десктопом и ноутбуком. Кроме того, файрволл должен быть прозрачным для сервера samba. При этом настройка файрволла сильно зависит от того, как настроен DSL-модем: как мост или как маршрутизатор. Если модем настроен, как мост, и вы пользуетесь сценарием файрволла из статьи http://new.kv.by/content/zashchiti-sebya-sam, то в сценарии /etc/init.d/rc.firewall в начало цепочки Always нужно любым редактором добавить следующие правила:
$IPT -A Always -p tcp -m tcp -i eth1 -s 192.168.2.1 -d 192.168.2.2 -m multiport --dports 139,631 -j ACCEPT
$IPT -A Always -p udp -m udp -i eth1 -j ACCEPT
$IPT -A Always -i eth1 -s 192.168.2.1 -m state --state NEW -j ACCEPT
Но это ещё не всё. Чтобы десктоп пинговался из нетбука, надо в правила, разрешающие приём icmp-сообщений, после переменной $INET_IFACE через запятую без пробела дописать eth1. Перезапустите файрволл командой
fw_start
Наконец, ноутбук и десктоп взаимно пингуются, и из файла /etc/init.d/rc.firewall можно удалить строку
$IPT -A Always -i eth1 -s 192.168.2.1 -m state --state NEW -j ACCEPT
Это нужно, чтобы никто из нетбука не смог к вам подключиться. Если ноутбук и десктоп взаимно не пингуются – ищите причину. Возможно, в ноутбуке вы не настроили параметры TCP или забыли мышкой включить соединение по локальной сети. Такое случается.
Что такое samba
Если кратко, то sama – это сервер, обеспечивающий Линуксу доступ к «расшаренным» ресурсам ОС Windows. Устанавливаем этот сервер в десктоп::
sudo apt-get install samba
Далее в файле /etc/samba/smb.conf в секции Global Settings следует указать рабочую группу, в которую входит нетбук (обычно это WORKGROUP), в секции Networking следует указать интерфейс, через который в конкретном случае будет работать samba:
interfaces = 192.168.2.1/24 eth1
а в секции Authentication надо прописать порт, через который samba будет общаться с внешним миром:
smb ports = 139
Также в этой же секции строку security = user замените на строку security = share. Запустите на десктопе сервер samba вот такой командой:
sudo service smbd restart
Чтобы свежеустановленная samba почувствовала, что на нетбуке уже есть «расшаренные» папки, закройте и снова откройте доступ к одной из них. Теперь наберите команду
gnome-tweak-tool
(Еесли этой команды нет, то надо установить gnome-shell, о чём я рассказывал здесь: http://new.kv.by/content/yunitiskeptikam-posvyashchaetsya.) В появившемся окне выберите «Рабочий стол» и включите «Network servers icon». На рабочем столе появится иконка, кликом по которой и будете входить в вашу сеть. Кликаем по этой иконке, лазим по «расшаренным» папкам и файлам нетбука, смотрим на большом экране скачанные фильмы.
Да здравствует автоматика!
Всё хорошо, но только до первой перезагрузки десктопа, после чего некоторые сетевые настройки слетают. Чтобы этого не происходило, необходимо подредактировать файл описания сетевых интерфейсов /etc/network/interfaces и привести его к следующему виду:
auto lo
iface lo inet loopback
auto dsl-provider
iface dsl-provider inet ppp
pre-up /sbin/ifconfig eth0 up # line maintained by pppoeconf
provider dsl-provider
auto eth0
iface eth0 inet manual
auto eth1
iface eth1 inet static
address 192.168.2.2
netmask 255.255.255.0
Теперь при старте системы интерфейсы будут подниматься автоматически. Запуск сервера samba тоже можно автоматизировать, но зачем? Постоянно включенная samba – это лазейка. Поэтому по-прежнему, когда надо, будем запускать этот сервер командой
sudo service smbd restart
Для удобства можно сделать для этой команды иконку. Если всё работает, значит, ваши и мои усилия не пропали даром. Надо сказать, что сервер samba сам по себе является файрволлом, что заслуживает написания отдельной статьи. Но что следует изменить, если модем включён, как маршрутизатор? Об этом в следующей статье.
Горячие темы