Инструкций уже много, в которых много всего написано, да так, что новички увидев это «многабукаф» закроют в ужасе. Попробую показать короткую инструкцию для раздачи Интернета для самого популярного случая с одного компьютера на другой, будь то Интернет через 3g-модем или PPPoE - не важно.

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

Итак, что мы обычно имеем на дому?

  1. комп с 2 сетевыми картами, одна на ДСЛ-модем (или на провайдера), другая на второй комп.
  2. комп с 1 сетевой картой, но с выходом в Интернет с помощью usb 3g-модема.

Если у вас один из этих случаев, то инструкция для вас.

Считаем что инет висит на ppp0. Локальная сеть 192.168.0.0/24

Вместо ppp0 может быть eth0/1/2, wlan0 и т.п. Важно то, что мы знаем, что Инет приходит через этот интерфейс. Локальная сеть мб другой, поправьте под свой вариант или настройте свою сеть из 2-х компов как предложено здесь.

Настройка iptables

В терминале:

sudo su
iptables -t nat -A POSTROUTING -o ppp0 ! -d 192.168.0.0/24 -j MASQUERADE
iptables-save > /etc/iptables.up.rules
echo "pre-up iptables-restore < /etc/iptables.up.rules" >> /etc/network/interfaces
apt-get install bind9
  1. Зашли в консоль рута
  2. Включили NAT, указав, что интерфейс с Инетом ppp0 и ему предназначены пакеты, не адресованные локальной сети 192.168.0.0/24
  3. Сохранили правила iptables
  4. Прописали команду, восстанавливающую правила при старте сетевых интерфейсов (после перезагрузки)
  5. Установили сервер DNS, он будет транслировать DNS
Можно обойтись без bind9. В этом случае на 2-м компе нужно будет указать те же IP DNS-серверов, что и на 1-м, либо просто указать гугловский DNS-сервер - 8.8.8.8

Включаем форвардинг (перенаправление пакетов)

nano /etc/sysctl.conf

находим и раскоментируем эту строку:

net.ipv4.ip_forward=1

Чтобы изменения вступили в силу без перезагрузки ОС.

sysctl -p
Всё, компьютер является шлюзом в Интернет. Для того, чтобы 2-й комп получил доступ в Инет нужно настроить сеть, указав шлюзом данный компьютер, в роли DNS-сервера выступает он же.