вторник, 12 апреля 2011 г.

Проблема с сетью в Ubuntu

Инсталлирую на ноутбуке Ubuntu 9.10. Сеть не хотела подниматься ни в какую.
Два вечера провел в поисках, поэтому сделаю запись.

Задача:
Имеется wi-fi роутер, к которому коннектится ноутбук. FreeBSD с этого же самого ноутбука прицепилась с первого раза (даже удивительно было).
На Ubuntu вручную прописаны настройки сети (т.е. в /etc/network/interfaces), как, например, в этом материале.
Нужно добиться работоспособности сети.

Симптомы:
ping идет нормально, страницы размером менее 1 кб (примерно) грузятся, больше – нет. Начинается загрузка, появляется заголовок и все. Как будто DNS на пол-дороге отваливается.
apt-get не может определить имена сайтов, куда стучаться надо и ничего не сгружает.

Решение:

объяснение проблемы:
линуксовые системы сначала пытаются получить ipv6 адрес, а железка вместо ответа «я тебя не понял», как должна бы по стандарту (после этого линукс попросит ipv4 адрес и всё благополучно завершится), отдаёт 1.0.0.0. ping работает, потому что он никогда не просит ipv6 адрес (для этого есть ping6). после удачного пинга некоторое время будет работать всё остальное, т.к. ответ dns кешируется.

итак, существует два способа пофиксить баг, пока linux-сообщество не включит фикс в следующие релизы:

проверенно, работает:
1. вручную прописать dns-серверы провайдера в /etc/resolv.conf
2. запретить изменения dns-конфигурации командой: chattr +i /etc/resolv.conf

сам не проверял, но видимо работает:
1. sudo apt-get install bind9
2. в файле /etc/dhcp3/dhclient.conf раскомментировать строчку "prepend domain-name-servers 127.0.0.1;"

всем спасибо.
Я сделал вариант «проверено, работает». Действительно, работает.
Спасибо http://cybotoy11.livejournal.com/.

Windows и FreeBSD нормально работали потому, что у них нет IPv6.


понедельник, 11 апреля 2011 г.

Взгляд на безопасность

Почему в Windows в обязательном порядке надо использовать антивирус и не нужно этого делать в *nix системах?
Ответ прост – в этих системах разные подходы к обеспечению безопасности.

В Windows доминирует подход «разрешили все, потом что-то ограничили». В *nix используется другой подход – «все запрещено, то что нужно – откроем».
Когда вы работает в свежеустановленной Windows, да еще и с правами администратора, то у вас в системе много мест, которые легко повредить. Понятно, что существуют условности в виде предустановленных политик, которые меняются от дистрибутива к дистрибутиву, понятно, что можно всех пользователей загнать в группу гости и т.д. Речь не об этом. Простой пользователь Windows может нанести системе очень серьезный урон даже не обладая администраторскими правами. А учитывая наличие брешей в системе (хоть и оперативно закрываемых, но кто держит WSUS или Automatic updates включенным?), часто даже администраторскими правами обладать не надо.
В *nix все ровно наоборот. Создаваемый пользователь настолько бесправен, что надо сильно постараться, чтобы как-то навредить системе. Для того, чтобы пользователь мог нанести ощутимый урон системе, его надо или внести в большое количество групп, или сделать суперпользователем. Да, работая под root'ом, можно сильно дров наломать. Система рута не переспрашивает. Сказал том удалить, значит удалить. А то, что это была живая база данных или файловое хранилище, ну так это не проблемы системы, это проблемы пользователя.
Строго говоря, и в Windows, и в *nix можно обеспечить очень высокий уровень безопасности. Для этого есть множество технических и организационных способов. Но уровень безопасности «из коробки» в *nix намного выше, чем в Windows.
Поэтому-то и нет необходимости держать антивирус для *nix систем.

Бонус: статья Криса Касперски о том, как можно жить без антивируса на Windows.

понедельник, 4 апреля 2011 г.

iPhone в качестве usb-модема на FreeBSD

Оригинальная статья (англ.)

FreeBSD 8.2

iPhone в качестве usb-модема использовать можно.
Порядок действий такой (предполагается, что iPhone умеет выходить в интернет по 3G или Edge):
  • На FreeBSD устанавливаете из портов comms/libimobiledevice, по зависимостям ставится также comms/usbmuxd.
  • Строите программу сцепки:
git clone git://github.com/dgiagio/ipheth.git
$ cd ipheth/ipheth-pair
$ cc -Wall -O2 ipheth-pair.c -o ipheth-pair -L/usr/local/lib -I/usr/local/include -limobiledevice
  • Включаете режим модема на iPhone (Настройки-Основные-Сеть-Режим модема, при запросе выбрать USB).
  • Подключаете iPhone к usb.
  • Выполняете последовательность команд (от root):
kldload if_ipheth
usbmuxd -U root
./ipheth-pair
dhclient ue0
Первая команда загружает модуль ядра, создающий интерфейс ue0, вторая запускает мультиплексор, связывающий ОС с iУстройствами. ipheth-pair отвечает за использование режима модема (собственно, после запуска этой программки на экране iPhone начинает плавно мигать синяя надпись "Режим модема"). Ну а последняя назначает IP-адрес на интерфейс ue0.

Если все сделано, то сразу после этого появляется интернет-соединение.

Заметка, собственно, сделана через iPhone.