В данной статье я расскажу о настройке шлюза на 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