Домашний шлюз на Ubuntu

Эта запись опубликована в рубрике [ Ubuntu, Линукс, Скрипты ]

На русском форуме Ubuntu я уже устал читать каждый день одно и то же “Как расшарить инет в Убунту?”, “Как сделать домашний шлюз?”… Люди видимо не хотят читать предыдущие ветки, а поиском пользоваться не умеют.

В общем попробую рассказать как просто и без геморроя вывести вторую машину в инет.

Условия:

  1. инет на Убунту машине уже настроен и работает.
  2. eth1 – сетевая карта, имеющая адрес 192.168.0.1 и смотрящая в домашнюю локалку.
  3. Домашняя локальная сеть имеет адрес 192.168.0.0/24 (Что такое /24 читаем здесь)
  4. Каким образом приходит инет на Ubuntu не важно.

Создаем скрипт в /usr/local/bin с именем “inet.up”:

#!/bin/sh

iptables -F
iptables -t nat -F

echo 1 > /proc/sys/net/ipv4/ip_forward

iptables -t nat -A POSTROUTING -i eth1 -s 192.168.0.0/24 -j MASQUERADE
iptables -A FORWARD -s 192.168.0.0/24 -j ACCEPT
iptables -A FORWARD -d 192.168.0.0/24 -j ACCEPT

Теперь вписываем строку:

/usr/local/bin/inet.up

в файл “/etc/rc.local” перед строкой “exit 0″.

После этого прописываем на втором компьютере адрес 192.168.0.2/24, в качестве шлюза 192.168.0.1, в качестве DNS – IP адреса DNS-серверов провайдера.

Посмотреть адреса DNS можно в Ubuntu так:

cat /etc/resolv.conf

В принципе все. Простейшая раздача инета на Ubuntu готова. Хотя можно то же самое сделать и на другом дистрибутиве.

Google Bookmarks Digg Reddit del.icio.us Ma.gnolia Technorati Slashdot Yahoo My Web News2.ru БобрДобр.ru RUmarkz Ваау! Memori.ru rucity.com МоёМесто.ru Mister Wong

Post to Twitter Post to Delicious Post to Facebook Post to MySpace Post to Ping.fm

Оценить эту запись:
1 звезда2 звезды3 звезды4 звезды5 звезд (5 голос(ов), среднее: 5.00 из 5)
Метки: [ , , , ]
Вы можете следить за ответами к этой записи через RSS 2.0 feed. Вы можете оставить мнение, или трэкбэк с собственного сайта.

30 комментариев(я)

  • 01.09.2009 15:12, B&W сказал:

    Есть ешё вопрос “Как сделать Ubuntu Роутер?”
    Из-за разных названий так и сложно найти..

    Лишней запись не будет :)

    Ток уж неплохо бы написать про проброску портов.

    • 01.09.2009 15:24, Silver Ghost сказал:

      Это достойно отдельной статьи. :) Спасибо за идею. :)

    • 03.09.2009 17:22, fddima сказал:

      Кстати, как в Ubuntu/Linux “искаропки” происходит кеширование DNS ответов?
      Потому как если никак то, в некоторых ситуациях выхватим тормоза…

      • 03.09.2009 17:38, Silver Ghost сказал:

        Честно говоря не завался таким вопросом…
        Можно поставить dnsmasq и думаю проблем не будет. :)
        Хотя оно вроде даже из коробки идет.

        • 03.09.2009 17:43, fddima сказал:

          Ну собственно можно и на шлюзе кеширующий named поднять, дело тоже не сложное. :)

          • 03.09.2009 19:06, Silver Ghost сказал:

            ага…
            sudo apt-get install bind9
            и вписать forwarders в конфиг. :)
            Делов то. :)

      • 14.09.2009 14:21, Azzi сказал:

        iptables -t nat -A POSTROUTING -i eth1 -s 192.168.0.0/24 -j MASQUERADE

        Если POSTROUTING, то видимо не -i, а -o

        • 14.09.2009 15:16, Azzi сказал:

          У меня вариант не сработал, обошлось такой командой
          iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE //где eth0 – подключение к инету

          • 14.09.2009 19:57, Silver Ghost сказал:

            не может быть… у меня на многих серверах это работает.

            • 16.09.2009 15:28, Azzi сказал:

              Может тогда – PREROUTING?

              • 18.10.2009 05:17, Alexey сказал:

                Все пакеты, которые идут на внешку, нужно отправить на “внешний” интерфейс:

                iptables -t nat -A POSTROUTING -o eth0 -j SNAT –to xx.xx.xx.xx

                где xx.xx.xx.xx – внешний ip адрес

                Если используется ADSL в режиме бриджа и ip динамический, то лучше сделать так:

                iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE

          • 19.09.2009 18:41, Agent_Smith сказал:

            да как же так, даже в мане написано что -i с POSTROUTING не используется.

            Блин, ну ни как не могу заставить работать нат, уже неделю инет лопачу, все варианты не работают )=

          • 21.09.2009 16:46, Breack сказал:

            А в настройках соединения ставить какой вид соединения?
            1 Автоматический(DHCP)
            2 Автоматический(DHCP, только адрес)
            3 Вручную
            4 Только Link-local
            5 Общий с другими компьютерами

            • 21.09.2009 20:04, Silver Ghost сказал:

              Цитата: “eth1 – сетевая карта, имеющая адрес 192.168.0.1″

              Как Вы думаете, какой вид должен быть?

              • 22.09.2009 11:45, Breack сказал:

                Извините меня, но я в линуксе всего неделю. А попробовал я уже все варианты из вышеописанных, но почему-то ни один из них не работает. Пожалуйста, если не сложно, объясните такому нубасу как я, как правильно настроить шлюз…может где галочку какую-нибудь поставить надо…и желательно поподробнее.

            • 12.10.2009 12:41, Azzi сказал:

              1. Настроить интерфейс локалки (например айпи 192.168.1.1, маска 255.255.255.0)
              2. Сбрасываем таблицы iptables
              iptables -F
              iptables -t nat -F
              3. Добавляем правило iptables
              iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE //где eth0 – подключение к инету

              Не забываем поднять интерфейсы, сбрасываются при перезагрузке, с этим бороться отдельно (например скриптом)!

              • 12.10.2009 12:43, Azzi сказал:

                Ах да, ещё:
                sudo echo 1 >sudo /proc/sys/net/ipv4/ip_forward

                • 23.10.2009 19:28, ookami сказал:

                  а все-таки для чего нужна эта строчка?

                  • 23.10.2009 19:49, ookami сказал:

                    у меня такая проблема.
                    все это прописал, в результате клиент (на winXP) видит только внутренние ресурсы провайдера, удаленные не пингуются…да, и ip-адреса DNS-серверов провайдера тоже почему-то не пингуются…

                    • 15.12.2009 08:13, dima сказал:

                      Доброго времени суток! в ubuntu недавно.
                      Из этой статьи я так понял, что достаточно поставить ubuntu, настроить инет (неважно как), прописать правила для iptables и шлюз готов???

                      • 15.12.2009 10:51, Silver Ghost сказал:

                        Именно так.

                        • 21.12.2009 12:20, dima сказал:

                          поставил ubuntu 9.10 desktop, настроил инет, внутреннию сеть.
                          ввожу правило, выдает ошибку
                          root@fw-desktop:~# iptables -t nat -A POSTROUTING -i eth1 -s 192.168.0.0/24 -j MASQUERADE
                          iptables v1.4.4: Can’t use -i with POSTROUTING

                          Try `iptables -h’ or ‘iptables –help’ for more information.

                          • 21.12.2009 12:41, Silver Ghost сказал:

                            попробуй -o eth0

                            • 21.12.2009 12:53, dima сказал:

                              ошибку не выдал но и правило не добавилось
                              root@fw-desktop:~# iptables -t nat -A POSTROUTING -o eth0 -s 192.168.0.0/24 -j MASQUERADE
                              root@fw-desktop:~# iptables -L
                              Chain INPUT (policy ACCEPT)
                              target prot opt source destination

                              Chain FORWARD (policy ACCEPT)
                              target prot opt source destination
                              ACCEPT all — 192.168.0.0/24 anywhere
                              ACCEPT all — anywhere 192.168.0.0/24

                              Chain OUTPUT (policy ACCEPT)
                              target prot opt source destination

                              • 21.12.2009 12:57, Silver Ghost сказал:

                                А правильную таблицу посмотреть?
                                iptables -t nat -L

                    • 27.12.2009 15:13, sensor_ua сказал:

                      Недавно объявили об адресах публичных DNS-серверов Google – 8.8.8.8 и 8.8.4.4 – запомнить легко, поэтому вместо посмотреть адреса DNS, выданные провайдером, ставлю эти.

                      • 30.01.2010 16:24, Михаил сказал:

                        Огромное спасибо за такую статейку.
                        Сегодня уже пол дня бьюсь с этим iptables и никак не мог победить из-за специфики получаемого на сервере интернета. А тут только ввел команды и сразу инет получился.
                        Еще раз спасибо.

                        (Обязательно)
                        (Обязательно, не публикуется)