Домашний шлюз на Ubuntu
Автор: Silver Ghost 31 августа, 2009
30 Коммент.
На русском форуме Ubuntu я уже устал читать каждый день одно и то же “Как расшарить инет в Убунту?”, “Как сделать домашний шлюз?”… Люди видимо не хотят читать предыдущие ветки, а поиском пользоваться не умеют.
В общем попробую рассказать как просто и без геморроя вывести вторую машину в инет.
Условия:
- инет на Убунту машине уже настроен и работает.
- eth1 – сетевая карта, имеющая адрес 192.168.0.1 и смотрящая в домашнюю локалку.
- Домашняя локальная сеть имеет адрес 192.168.0.0/24 (Что такое /24 читаем здесь)
- Каким образом приходит инет на 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 готова. Хотя можно то же самое сделать и на другом дистрибутиве.


Есть ешё вопрос “Как сделать Ubuntu Роутер?”
Из-за разных названий так и сложно найти..
Лишней запись не будет :)
Ток уж неплохо бы написать про проброску портов.
Это достойно отдельной статьи. :) Спасибо за идею. :)
Кстати, как в Ubuntu/Linux “искаропки” происходит кеширование DNS ответов?
Потому как если никак то, в некоторых ситуациях выхватим тормоза…
Честно говоря не завался таким вопросом…
Можно поставить dnsmasq и думаю проблем не будет. :)
Хотя оно вроде даже из коробки идет.
Ну собственно можно и на шлюзе кеширующий named поднять, дело тоже не сложное. :)
ага…
sudo apt-get install bind9
и вписать forwarders в конфиг. :)
Делов то. :)
iptables -t nat -A POSTROUTING -i eth1 -s 192.168.0.0/24 -j MASQUERADE
Если POSTROUTING, то видимо не -i, а -o
У меня вариант не сработал, обошлось такой командой
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE //где eth0 – подключение к инету
не может быть… у меня на многих серверах это работает.
Может тогда – PREROUTING?
Все пакеты, которые идут на внешку, нужно отправить на “внешний” интерфейс:
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
Может все таки
???
да как же так, даже в мане написано что -i с POSTROUTING не используется.
Блин, ну ни как не могу заставить работать нат, уже неделю инет лопачу, все варианты не работают )=
Не вижу тут такого… У меня же работает как часы…
А в настройках соединения ставить какой вид соединения?
1 Автоматический(DHCP)
2 Автоматический(DHCP, только адрес)
3 Вручную
4 Только Link-local
5 Общий с другими компьютерами
Цитата: “eth1 – сетевая карта, имеющая адрес 192.168.0.1″
Как Вы думаете, какой вид должен быть?
Извините меня, но я в линуксе всего неделю. А попробовал я уже все варианты из вышеописанных, но почему-то ни один из них не работает. Пожалуйста, если не сложно, объясните такому нубасу как я, как правильно настроить шлюз…может где галочку какую-нибудь поставить надо…и желательно поподробнее.
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 – подключение к инету
Не забываем поднять интерфейсы, сбрасываются при перезагрузке, с этим бороться отдельно (например скриптом)!
Ах да, ещё:
sudo echo 1 >sudo /proc/sys/net/ipv4/ip_forward
а все-таки для чего нужна эта строчка?
[...] http://silverghost.org.ua/2009/08/31/domashnij-shlyuz-na-ubuntu/ [...]
у меня такая проблема.
все это прописал, в результате клиент (на winXP) видит только внутренние ресурсы провайдера, удаленные не пингуются…да, и ip-адреса DNS-серверов провайдера тоже почему-то не пингуются…
Доброго времени суток! в ubuntu недавно.
Из этой статьи я так понял, что достаточно поставить ubuntu, настроить инет (неважно как), прописать правила для iptables и шлюз готов???
Именно так.
поставил 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.
попробуй -o eth0
ошибку не выдал но и правило не добавилось
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
А правильную таблицу посмотреть?
iptables -t nat -L
Недавно объявили об адресах публичных DNS-серверов Google – 8.8.8.8 и 8.8.4.4 – запомнить легко, поэтому вместо посмотреть адреса DNS, выданные провайдером, ставлю эти.
Огромное спасибо за такую статейку.
Сегодня уже пол дня бьюсь с этим iptables и никак не мог победить из-за специфики получаемого на сервере интернета. А тут только ввел команды и сразу инет получился.
Еще раз спасибо.
Подписки
Подписаться на RSS Фид обновляется при появлении записей
Подписаться через почту:
Реклама
Рейтинг записей
Страницы
Мета
Архивы
Ссылки
Последние записи
Реклама
Самовыравнивающийся пол (SL тип) для производственных залов...
индонезия и тайланд туры зимой
Счетчики