Налаштування 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