Налаштування nat через iptables masquerade на debian (ubuntu)
Налаштування простого nat
Для початку, хотілося б розповісти, як організовується простий nat за коштами iptables masquerade (маськарадінг). У всіх linux подібних дистрибутивах, самий простий і зручний спосіб налаштувати nat, - це прописати пару рядків в iptables і включити форвардного пакетів в настройках системи.
Для debian і ubuntu це робиться в такий спосіб: створимо файл / etc / firewall
Дамо йому права на виконання
chmod + x / etc / firewall
І пропишемо настройки nat і forwarding цей файл
echo 1> / proc / sys / net / ipv4 / ip_forward # включаємо форвардного
FW = / sbin / iptables # створимо змінну FW, щоб кожного разу не писати / sbin / iptables
# Очищаємо всі правила, ланцюжки і таблицю nat
$ FW -F
$ FW -F -t nat
$ FW -X
# Привласнимо змінну мережі, яку будемо натіть
NET = "10.10.10.0/29"
# Дозволимо їй підключатися до шлюзу (не обов'язково для nat)
$ FW -A INPUT -s $ NET -j ACCEPT
# Включаємо nat за коштами iptables masquerade
$ FW -A FORWARD -s 0/0 -d $ NET -j ACCEPT
$ FW -A FORWARD -d 0/0 -s $ NET -j ACCEPT
$ FW -t nat -A POSTROUTING -s $ NET -j MASQUERADE
Налаштування нашого шлюзу (iptables nat + балансування iproute2)
Перш за все, створимо файл / etc / firewall і дамо йому права на виконання
/ Etc / firewall
chmod + x / etc / firewall
Тепер впишемо в нього правила
#! / Bin / sh
echo 1> / proc / sys / net / ipv4 / ip_forward # включаємо форвардного
FW = / sbin / iptables # створю змінну FW
# Очищаємо всі правила, ланцюжки і таблицю nat
$ FW -F
$ FW -F -t nat
$ FW -X
# Створимо змінні для мереж і інтерфейсів
P1 = "10.10.10.1"
P2 = "10.10.11.2" #
VLAN100 = "192.168.10.1" # IT
VLAN101 = "192.168.10.65" # Buh
VLAN102 = "192.168.10.129" # Komotdel
VLAN103 = "192.168.10.193" # Top management
# NETs
NET100 = "192.168.10.0/26"
NET101 = "192.168.10.64/26"
NET102 = "192.168.10.128/26"
NET103 = "192.168.10.192/26"
# Додамо інтервали пинга, щоб нас не спамили дрібними пакетами
# ICMP limit
$ FW -A INPUT -p icmp --icmp-type 8 -m limit --limit 3 / s --limit-burst 10 -j ACCEPT
$ FW -A INPUT -p icmp --icmp-type 11 -m limit --limit 3 / s --limit-burst 10 -j ACCEPT
# Дозволимо доступ для себе
$ FW -A INPUT -s localhost -j ACCEPT
# Натім наші внутрішні мережі через обидва інтерфейсу в інтернет
# VLAN100
$ FW -A FORWARD -s 0/0 -d $ NET100 -j ACCEPT
$ FW -A FORWARD -d 0/0 -s $ NET100 -j ACCEPT
$ FW -t nat -A POSTROUTING -s $ NET100 -j MASQUERADE
# VLAN101
$ FW -A FORWARD -s 0/0 -d $ NET101 -j ACCEPT
$ FW -A FORWARD -d 0/0 -s $ NET101 -j ACCEPT
$ FW -t nat -A POSTROUTING -s $ NET101 -j MASQUERADE
# VLAN102
$ FW -A FORWARD -s 0/0 -d $ NET102 -j ACCEPT
$ FW -A FORWARD -d 0/0 -s $ NET102 -j ACCEPT
$ FW -t nat -A POSTROUTING -s $ NET102 -j MASQUERADE
# VLAN103
$ FW -A FORWARD -s 0/0 -d $ NET103 -j ACCEPT
$ FW -A FORWARD -d 0/0 -s $ NET103 -j ACCEPT
$ FW -t nat -A POSTROUTING -s $ NET100 -j MASQUERADE
# Дозволяємо доступ по SSH
$ FW -A INPUT -p tcp --dport 22 -j ACCEPT
# Закриває все зайве
$ FW -A INPUT -p ALL -m state --state ESTABLISHED, RELATED -j ACCEPT
$ FW -A INPUT -p tcp --tcp-flags SYN, ACK SYN, ACK -m state --state NEW -j REJECT
$ FW -P FORWARD DROP
$ FW -P INPUT DROP
Зберігаємо зміни у файлі і виконуємо його
/ Etc / firewall