Search
Write a publication
Pull to refresh

Настройка NAT и DHCP в Debian

Приспичило мне настроить NAT(маскарадинг), называйте как хотите. Для чего? Есть две сетевые. Одна eth1 — интернет, вторая eth0 — внутренняя подсеть 192.168.0.0/28
Собственно, пакеты из внешней подсети должны перенаправляться во внутреннюю и наоборот.

Для начала, нужно включить ip forwarding. Проверим, не включен ли он:

$ cat /proc/sys/net/ipv4/ip_forward

Если выдаст 0 — выключен, 1 — соответственно включен.
Чтобы включить:
$ echo 1 > /proc/sys/net/ipv4/ip_forward

А чтобы включит навсегда в файл /etc/sysctl.conf добавляем следующие строчки:

net.ipv4.conf.default.forwarding=1
net.ipv4.conf.all.forwarding=1


Создаем файл в /etc/network/if-pre-up.d/NAT и делаю исполняемым chmod +x /etc/network/if-pre-up.d/NAT. Теперь, при подъёме интерфейсов в up запускается наш «NAT».

Собственно, всё делается через iptables. Содержание файла NAT:
# Первым делом очистим существующую таблицу правил:
iptables -F

# Добавляем первое правило которое позволит нам не потерять удаленный контроль над сервером
iptables -A INPUT -p tcp -i eth1 --dport 22 -j ACCEPT

# Прописываем политики по умолчанию:
# Принимать все пакеты, которые инициированы из уже установленного соединения, и имеющим признак ESTABLISHED.
# Состояние ESTABLISHED говорит о том, что это не первый пакет в соединении.
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
#Запрешаем на передачу всё, что не разрешено.
iptables -P INPUT DROP
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT

# Разрешаем хождение трафика по localhost
iptables -A INPUT -i lo -j ACCEPT

#Разрешаем пинг(DROP - запретить)
iptables -A INPUT -i eth1 -p icmp --icmp-type 8 -j ACCEPT

#NAT
#Должен быть включен ip forwarding
iptables -A FORWARD -i eth1 -o eth0 -s 192.168.0.0/28 -j ACCEPT
iptables -A POSTROUTING -t nat -j MASQUERADE
iptables -A INPUT -i eth0 -p icmp --icmp-type 8 -j ACCEPT


Теперь, настроем наш eth0, сделав его шлюзом
Лезим в /etc/network/interfaces

address 192.168.0.1
netmask 255.255.255.240
broadcast 192.168.0.15


Всё, готово. Но, чтобы не вбивать каждый раз адрес и dns вручную, особенно, если компов несколько, поднимем ещё и dhcp сервер.

Для начала установим его:

# apt-get install dhcp3-server

Он естественно не запустится, правим файлик конфигурации /etc/dhcp/dhcpd.conf
Конфиг приблизительно такой:
#Опция динамического обновления для dns
ddns-update-style none;

#Домен и dns'ы
option domain-name "admin-pc";
option domain-name-servers <ip dns серверов, если несколько - через запятую>;

#Время жизни адресов
default-lease-time 600;
max-lease-time 7200;

# # Для логирования в отдельный файл
log-facility local7;

#Подсеть из которой выдаются ip
#диапазон
#шлюз
#brodcast
#интерфейс на котором работает
subnet 192.168.0.0 netmask 255.255.255.240 {
range 192.168.0.2 192.168.0.14;
option routers 192.168.0.1;
option broadcast-address 192.168.0.15;
interface eth0;
}


Запускаем демона:

# /etc/init.d/isc-dhcp-server start

Проверяем, работает, радуемся!
Но, по умолчанию, логируется всё в /var/log/syslog, что не очень удобно если вам нужно работать с логами.
Предлагаю, можно всё в отдельный файл.

Создадим файл /etc/rsyslog.d/dhcpd.conf с содержимым:
local7.* /var/log/dhcpd.log

Для ротации логов в файл /etc/logrotate.d/rsyslog вставить строку:

/var/log/dhcpd.log

Перезапускаемся:

# /etc/init.d/isc-dhcp-server restart
# /etc/init.d/rsyslog restart


Теперь, смотрим лог в /var/log/dhcpd.log
Tags:
Hubs:
You can’t comment this publication because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author’s username will be hidden by an alias.