Настройка шлюза на Debian

Дата: 24.11.2015Метки:

В данной статье я расскажу о настройке шлюза на Debian для раздачи интернета в небольшой локальной сети. Для получения доступа к интернет, на сервере используется OpenVPN подключение. Затем используя NAT, сервер отдает интернет для других компьютеров в локальной сети.

Настройка сетевого интерфейса

Для начала настроим сетевой интерфейс eth0:

auto eth0
iface eth0 inet static
address 10.0.1.2
netmask 255.255.255.0
post-up route add -net 10.0.2.0 netmask 255.255.255.0 eth0
post-up route add -net 10.0.3.0 netmask 255.255.255.0 eth0

При необходимости прописываем статические маршруты для локальной сети.

В содержимое файла:

# nano resolv.conf

Необходимо добавить адреса DNS-серверов:

nameserver 8.8.8.8
nameserver 8.8.4.4

Настройка подключения OpenVPN

Выполним установку и настройку клиента OpenVPN.

# apt-get install openvpn

Переходим в каталог указанный ниже, копируем в него сертификаты и ключи:

# cd /etc/openvpn

Создаем файл с настройками clent.conf, в моем случае я использовал следующие параметры:

client
dev tun
proto tcp
remote 90.90.90.90 1194
nobind
persist-key
persist-tun
ca ca.crt
cert client1.crt
key client1.key
auth SHA512
tls-auth ta.key 1
cipher BF-CBC
comp-lzo adaptive
status /var/log/openvpn-status.log
log /var/log/openvpn.log
verb 3
mute 20
route 0.0.0.0 0.0.0.0

Несмотря на то, что на сервере прописан параметр:

push "redirect-gateway def1"

После подключения к серверу OpenVPN, никаких изменений в таблице маршрутизации не происходило. Для того чтобы после подключения клиента OpenVPN в Debian изменялся маршрут по умолчанию, необходимо добавит в clent.conf следующий параметр:

route 0.0.0.0 0.0.0.0

После того как в системе подымется интерфейс tun0, можно переходить к дальнейшей настройке.

Настройка NAT

Включаем на сервере поддержку IP forwarding, для этого откройте файл:

# nano /etc/sysctl.conf

И раскомментируйте в нем следующую строку:

#net.ipv4.ip_forward=1

Чтобы изменения вступили в силу, необходимо загрузим переменные ядра:

# sysctl -p

Далее настраиваем NAT в iptables. По очереди в консоли выполните следующие команды:

iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -s 10.0.1.0/24 -j ACCEPT                        # Разрешить форвардинг для всей подсети
iptables -A FORWARD -m mac --mac-source 00:00:00:00:00:00 -j ACCEPT # Или ограничить по MAC
iptables -P FORWARD DROP
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -t nat -A POSTROUTING -o tun0 -j MASQUERADE

Сохраняем правила в файл:

# iptables-save > /etc/iptables.conf

Чтобы правила автоматически применялись при загрузке Debian, необходимо их прописать в rc.local:

# nano /etc/rc.local

Добавьте в него команду ниже:

iptables-restore < /etc/iptables.conf

Теперь, если прописать адрес 10.0.1.2 в качестве шлюза, на компьютере должен появится интернет.

Настройка правил iptables

После того как мы настроили все основные параметры, добавим в iptables правила для безопасности сервера:

iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -I INPUT 1 -i lo -j ACCEPT

iptables -A INPUT -p icmp --icmp-type 8 -j ACCEPT
iptables -A INPUT -p icmp --icmp-type 6 -j ACCEPT
iptables -I INPUT -m mac --mac-source 3E:D7:88:A6:66:8E -j ACCEPT                   # Открыть все порты
iptables -I INPUT -p tcp --dport 22 -m mac --mac-source 48:5B:39:AE:6D:7D -j ACCEPT # Открыть порт SSH

iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT

Сохраняем правила в файл:

# iptables-save > /etc/iptables.conf