5 мая 2010 г.

Исправляем проблему с nVidia MCP55 и dhclient

В предшествующем посте я описывал процесс настройки ICS на Ubuntu 10.04. Так вот очень долго не получалось у меня раздать интернет. А проблема заключалась в следующем: большой компьютер (Ubuntu 10.04) не мог получить IP от dhcp на Lenovo S10-2 (Ubuntu 10.04). И что я только не перепробывал, как я только настройки не менял - ничего не помогало. И вот случайно выяснилось, что проблема-то драйвере сетевой карты ПК (nVidia MCP55). Выяснилось при подключении к ПК кабеля от 100% раздающего IP dhcp сервера: не мог получить IP под Ubuntu, в то время как под офтопиком с это-же сетевухой все соединялось в лет. Начал копать в этом направлениии накопал. Привожу решение проблемы. Перевод с нглийского.

Шаг 1, открываем терминал.

a) Становимся суперпользователем
$ sudo su

b) Удаляем forcedeth kernel module (драйвер сетевой карты)
# rmmod forcedeth

c) загружаем модуль с новыми параметрами
# modprobe forcedeth msi=0 msix=0

d) Перезагружаем сеть
# /etc/init.d/networking restart

После этих манипуляций все пошло на ура. Проделанные действия не сохраняются при перезагрузке. Решение - ниже.

Шаг 2, конфигурируем систему на автоматическую загрузку драйвера с нужными параметрами.

Становимся суперпользователем
$ sudo su

a) go to /etc/modprobe.d/
# cd /etc/modprobe.d/

b) Редактируем файл с параметрами
# gedit options

c) В конец файла дописываем без скобок:
"#nVIDIA Corporation MCP55 Ethernet"
"options forcedeth msi=0 msix=0"

d) Сохраняемся

e) Перестраиваем boot image:
# update-initramfs -u

После всех этих действий заработала сеть как часы! Но возникла новая проблема (Эх, Linux) с прокси, через который я теперь хожу в интернет. Но об этом позже.

ICS на основе Lenovo s10-2 c Yota

Задача: Получить интернет на стационарном компьютере (далее ПК) посредством wimax на нетбуке (далее НБ).

Исходные данные:

Раздающая машина:
Lenovo S10-2 с wifi/wimax картой intel 5150
Система: Ubuntu Desktop 10.04
wimax интерфейс wmx0
Ethernet интерфейс eth0

Принимающая машина:
Персональный компьютер
Ethernet интерфейс eth1

В общем виде задача выглядит следующим образом:

Yota (MSK) ----------> wmx0 --- Lenovo S10-2 --- eth0 -------------> eth1 --- ПК

Задачка не новая и на форумах много раз обсуждалась. В частности хороший ман здесь. Собственно по нему и настраивал. Единственное мне не хватило в этой инструкции одного параметра, без которого работать не хотело ну совсем) Далее привожу инструкцию по настройке:


1. Удаляем network-manager. Все равно с ним ничего путного не получится. Вместо него ставим из репозиторив Wicd.

2. Собираем и настраиваем драйвера для модема по прекрасной инструкции здесь.

3. (Предполагаю, что Yota настроена и работает) Настраиваем eth0.

sudo gedit /etc/network/interfaces

Вписываем:

auto eth0
iface eth0 inet static
address 192.168.0.1 (Для примера)
netmask 255.255.255.0

Сохраняем.

4. Установливаем пакет dnsmasq

sudo apt-get install dnsmasq

5. Настраиваем dnsmasq

Останавливаем службу

sudo /etc/init.d/dnsmasq stop

Редактируем файл конфигурации

sudo gedit /etc/dnsmasq.conf

В конец файла дописываем:

interface=eth0
listen-address=192.168.0.1
dhcp-range=192.168.0.50,192.168.0.150,255.255.255.0,12h

6. Редактируем файл /etc/sysctl.conf

sudo gedit /etc/sysctl.conf

Расскомментируйте строчку:

net.ipv4.ip_forward = 1

7. Перезагружаемся

8. Начинаем раздавать интернет:

В терминале выполнить:

sudo ifconfig wimax0 mtu 1372
sudo iptables -t nat -A POSTROUTING -o wmx0 -j MASQUERADE

(Эти настройки сбрасываются при перезагрузке. Поэтому, что бы каждый раз их заново не вводить, можно написать скрипт с этими командами и добавить в автозагрузку)

На ПК в терминале выполнить:

sudo dhclient eth1

Машина (ПК) должна получить адрес по dhcp (подняли выше с помощью dnsmasq)

Запускаем на НБ Yota

9. Пользуемся интернетом на ПК)

Написал не очень подробно т.к. времени мало, а забыть не хочется последовательность действий. М.б. в будущем приведу в порядок!