Помогите настроить NAT

Автор Андрей_1, 06 сентября 2014, 13:04:58

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

Андрей_1

Гуглил почти целый день. Много что перепробовал. сейчас сделал вот по этой статье - http://perpetum-mobile.ru/shluz-ppp0-na-iptables-debian-ubunt/
Только прописал это в /etc/rc.local . Просто он автоматом загружается. Вообщем в локалке планшетник только по яндексу ползает, осталное ничего недоступно. Ноутбук вообще не видит интернет(подключал и по WIFI и проводом). Шлюз везде одинаковый.
настройки в файле interfaces закоментированы, использую network-manager.
Подскажите решение, или где почитать правильную статью!

sandaksatru

Ловите мануал по настройке простого шлюза на Debian =)

Для начала нужно настроить сеть на сервере.
1) Интернет подключение у вас уже настроено.
Выберите адресацию в локальной сети. Допустим, вы выбрали 192.168.0.0 с маской 255.255.255.0
Назначьте серверу статический адрес в настройках локального соединения network-manager. Допустим, 192.168.0.1 с маской 255.255.255.0
Шлюз прописывать не надо. Шлюз должен у вас быть прописан только в одном месте - в настройках интернет интерфейса. Уточните название этого интерфейса:
ip a
Допустим, к провайдеру вы подключаетесь через PPPoE, имя интерфейса ppp0.

Клиенты вашей локальной сети, подключаясь к серверу, должны получать ip-адрес. Поэтому вам нужно:
2) поставить и настроить dhcp демон.
https://wiki.debian.org/ru/DHCP_Server

По умолчанию пересылка пакетов от отправителя к клиенту через нашу машину запрещена. Поэтому её нужно разрешить:
3) Открываем файл /etc/sysctl.conf на раедактирование любым удобным способом, ищем строку #net.ipv4.ip_forward=1 и раскомментируем её (удалим #). При следующей загрузке система увидит, что пересылку пакетов можно разрешить. Чтобы уже сейчас работал форвардинг, выполните следующую команду:
echo 1 > /proc/sys/net/ipv4/ip_forward

4) Дальше вам нужно настроить правила файервола.

iptables -F #очищает таблицу filter
iptables -t nat -F #очищаем таблицу nat
iptables -P INPUT DROP #закрывает шлюз от входящих пакетов
iptables -P FORWARD ACCEPT #разрешает пересылку во всех направлениях
iptables -A INPUT -i lo -j ACCEPT #разрешаем входящие пакеты с loopback интерфейса
iptables -A INPUT -s 192.168.0.0/24 -j ACCEPT #разрешаем свободный доступ к серверу в локальной сети
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT #разрешаем приём пакетов по установленным соединениям
iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE #включаем маскарадинг


На этом основная настройка закончена. Теперь вам необходимо проверить её результаты. Если правильно прочитали мануалы, поняли логику работы шлюза и следовали указаниям, то интернет должен везде и стабильно работать. Если не работает, перепроверьте все настройки.

Как только мы убедились, что всё настроено правильно, необходимо сохранить настройки iptables. Это можно сделать разными способами. Поскольку вы использовали /etc/rc.local, то на нём и остановимся.
Сначала сохраним все правила в (например) /etc/iptables.rules:
iptables-save > /etc/iptables.rules
Следом сделаем так, чтобы эти правила восстановились при следующей загрузке системы. Для этого добавим в файл /etc/rc.local перед строкой exit 0 следующий код:
iptables-restore < /etc/iptables.rules
Также рекомендую проверить, имеются ли права на исполнения /etc/rc.local
ls -l /etc/rc.local
Если нет, то их необходимо добавить:
chmod +x /etc/rc.local

На этом вообще всё  :)

Андрей_1

#2
Сеть у меня настроена. Я работал с маршрутизатором. Сейчас решил не использовать маршрутизатор только как WiFi точку.
Вот мой rc.local и он при перегрузке выполняется(прорверил):
Открыть содержимое (спойлер)

#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
# если используется pppoe (в другом случае эта строчка не нужна):
#№iptables -F
#pon ppp0
# включаем nat:
#iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE

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

# Очищаем правила
iptables -v -F
#iptables -v -X

# Определяем выходной интерфейс для которого будет применяться замена адресов
iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

# Создаём правило, пересылающее все пакеты, пришедшие на интерфейс ppp0 из
# глобальной сети (0.0.0.0/0) к интерфейсу eth0 в локальную сеть (192.168.0.0/24)
iptables -v -A FORWARD -i ppp0 -o eth0 -s 0.0.0.0/0 -d 192.168.241.0/24 -j ACCEPT

# Создаём правило, пересылающее все пакеты, пришедшие на интерфейс eth0 из
# локальной сети (192.168.0.0/24) к интерфейсу ppp0 в глобальную сеть (0.0.0.0/0)
iptables -v -A FORWARD -i eth0 -o ppp0 -s 192.168.241.0/24 -d 0.0.0.0/0 -j ACCEPT

iptables -I FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu

exit 0

[свернуть]

Все компы имеют статический IP и прописываю у них шлюз 192.168.241.84. DHCP нужен только для выдачи компам IP. Шлюз у компов, чтобы знали где искать интернет.
Планшет у меня сейчас(после вставления последней строки) адекватно работает с интернетом, всё доступно.
А вот бук, телефон никак не хотят. Настройки у всех одинаковые.
Одно отличие нашёл - у планшета откуда-то появился адрес ip6, у остальных нет его.

gardarea51

Можете поставить пакет iptables-persistent, а потом так:
service iptables-persistent save
Ну или через /etc/init.d/iptables persistent save
Правила iptables сохранятся.
Там есть еще reload и кажется restore, не помню..

ps: проверьте какие dns указаны на клиентах.

Андрей_1

Спасибо всем за помощь.
Заработало! dns надо было установить на комп.
Но до установки dns планшет-то у меня работал с интернетом без проблем. От телефона он ещё отличается версией Android, в планшете стоит 4.4.2, а в телефоне 4.2.2. Может новая версия андроид как-то проскальзывает просто через шлюз. В буке Debian 7.6 . И пока на комп не поставил dns, бук тоже не ходил в интернет. А вот Skype работал.