Раздать интернет из Ubuntu в Windows

Наконец-то получилось раздать интернет с первого компьютера с Ubuntu 9.04 на второй, на котором Win XP.

На втором в настройках сетевого подключения (указываются вручную) прописано:

IP-адрес: 192.168.0.2
Маска подсети: 255.255.255.0
Основной шлюз: 192.168.0.1
DNS-серверы: указываю провайдерские

На первом в Ubuntu подключение к провайдеру через USB у меня определяется как eth1, а сетевое подключение на второй комп — eth0.

eth1 настраиваю вручную (ввожу IP, маску сети, основной шлюз и DNS-сервера — их беру в Windows из сведений о подключении). Автоматическое подключение в Ubuntu у меня почему-то работает только до первой после установки перезагрузки (это уже не впервый раз, почему, пока не знаю).

Дальше настраиваю раздачу интернета (помогло это руководство):

sudo ifconfig eth0 192.168.0.1 netmask 255.255.255.0
sudo ifconfig eth0 up

Затем в файле /etc/sysctl.conf вписать строчку:
net.ipv4.ip_forward=1
(у меня она оказалась вписанной, нужно было её просто раскомментировать).

Команда, чтобы применить это правило до перезагрузки:
sudo sysctl -w net.ipv4.ip_forward="1"
(действительно, больше вводить её не понадобилось).

И последний шаг:
sudo iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE

ifconfig и iptables приходится выполнять каждый раз после перезапуска Ubuntu. Вероятно, это можно автоматизировать, но пока не знаю как (настроить eth0 через графический интерфейс, как eth1, не получается — в этом случае интернет не работает). В общем, до окончательной ясности ещё далеко, но хорошо, что уже работает. Странно, почему то же не получалось раньше. Вроде бы то же самое проделывал, но не срабатывало.

Обн. 11.04.2010: Можно создать исполняемый файлик /home/andrey/razdacha-ineta из четырёх строчек:
#!/bin/sh
ifconfig eth0 192.168.0.1 netmask 255.255.255.0
ifconfig eth0 up
iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
,
и когда нужно раздать интернет, просто запускать его:
sudo ~/razdacha-ineta

20 комментария на «Раздать интернет из Ubuntu в Windows»

  1. Огромное спасибо за статью! Все получилось=)))

  2. а если не работает данный вариант, как можно проверить где ошибка ?

  3. Макс, проверьте, не перепутали ли eth0 и eth1 — здесь описано для случая, когда подключение в интернет первого компьютера — это eth1.

  4. нет не перерутал, учел это.
    eth1 Link encap:Ethernet HWaddr 00:80:48:20:66:75
    inet addr:192.168.0.1 Bcast:192.168.0.255 Mask:255.255.255.0
    inet6 addr: fe80::280:48ff:fe20:6675/64 Scope:Link
    UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
    RX packets:12001 errors:0 dropped:0 overruns:0 frame:0
    TX packets:374 errors:0 dropped:0 overruns:0 carrier:0
    collisions:0 txqueuelen:1000
    RX bytes:950206 (950.2 KB) TX bytes:41548 (41.5 KB)
    Interrupt:16 Base address:0xe800
    eth0 Link encap:Ethernet HWaddr 00:26:18:83:37:6f
    inet addr:10.53.39.217 Bcast:10.53.39.255 Mask:255.255.252.0
    inet6 addr: fe80::226:18ff:fe83:376f/64 Scope:Link
    UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
    RX packets:157687 errors:0 dropped:0 overruns:0 frame:0
    TX packets:106352 errors:0 dropped:0 overruns:0 carrier:2
    collisions:0 txqueuelen:1000
    RX bytes:129436079 (129.4 MB) TX bytes:9599902 (9.5 MB)
    Interrupt:29

  5. еще после iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
    iptables v1.4.4: can’t initialize iptables table `nat’: Permission denied (you must be root)
    Perhaps iptables or your kernel needs to be upgraded.

  6. Permission denied — если команда не от суперпользователя; перед командой нужно писать «sudo»:
    sudo iptables, sudo ifconfig.

  7. если пишу то после команды ниче не появляется

  8. читал что есть какой то фаервол, его как найти ? сеть кстати работает. виндовые папки вижу

  9. Макс, ну как, получилось или ещё нет? Собственно, iptables — это и есть файрвол (точнее, его часть — приём указаний).

  10. скажите, как ограничить скорость раздаваемого и-нета ? или поделить на равные части на нескольких.

  11. ни в какую не запускается )все что мог перепробовал. знать бы где ошибка.

  12. Андрей, нашел ошибку)
    вот еще нужно добавить вот такую штуку: sudo apt-get install dnsmasq
    для раздачи пакетов по сети

    и вот такой штуки: sudo iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE

  13. Рад, что у вас наконец заработало.

    dnsmask, если я правильно понимаю, позволит второму компьютеру получить ip-адрес и настроить список dns-серверов автоматически. У меня в этом необходимости нет — я указал на втором компьютере статический IP-адрес 192.168.0.2, а список неймсерверов — такой же, что и на первом, то есть тот, что предоставляет провайдер.

    А ppp0 у меня вообще нет, есть только eth0 и eth1

  14. «dnsmask, если я правильно понимаю, позволит второму компьютеру получить ip-адрес и настроить список dns-серверов автоматически. У меня в этом необходимости нет – я указал на втором компьютере статический IP-адрес 192.168.0.2….»
    Я тоже указал! Но интернет на второй машине не появляется, пока в терминале не наберешь sudo dnsmasq.

    P.S. У меня тоже PPtP, может все-таки с этим связано…?
    (Ubuntu 10.10)

  15. Спасибо, заработало)) только я не ставил dnsmsq, ввел статичние ip, мачку и днс от провайдера (п.с. Ubuntu 11.04 и Win7)

  16. Спасибо. Настроил) Осуществил все графическими средствами на убунте 12.04. До этого не мог настроить потому что DNS провайдера не прописал на подключенном W7 ноуте.

Комментирование закрыто.