В этой статье мы подробно рассмотрим возможности iptables NAT (преобразование сетевых адресов) и способы его использования для сетевой ретрансляции. Мы подробно объясним значение цепочек PREROUTING, POSTROUTING и OUTPUT, используемых в NAT, покажем, как настроить DNAT (преобразование адресов сети назначения) и SNAT (преобразование адресов исходной сети), а также продемонстрируем эти концепции в сценарии интрасети. Наконец, мы объясним, как сохранить конфигурацию iptables, чтобы она вступила в силу после перезапуска.
iptables — один из наиболее часто используемых инструментов брандмауэра в системах Linux. Он управляет и обрабатывает пакеты через четыре разные таблицы и использует пять цепочек для обработки и пересылки пакетов:
NAT — это основная функция в iptables, в основном включающая преобразование адресов источника (SNAT) и преобразование адресов назначения (DNAT). В функции NAT iptables в основном задействованы три цепочки:
Предположим, мы хотим перенаправить весь TCP-трафик, идущий на порт 80 этого компьютера (публичный IP-адрес), на порт 80 другого сервера с общедоступным IP-адресом (8.209.1.81). Этого требования можно добиться, настроив DNAT:
iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 8.209.1.81:80
Трансляция сетевых адресов (NAT) преобразует частные IP-адреса в частной сети в общедоступные IP-адреса для подключения к Интернету. Во время этого процесса NAT изменит IP-адрес источника или IP-адрес назначения пакета данных. При обработке исходящего трафика используйте преобразование адресов исходной сети (SNAT).
При работе со средой интрасети нам необходим SNAT для использования IP-адреса интрасети, поскольку он позволяет компьютерам в интрасети получать доступ к Интернету через общий общедоступный IP-адрес. Если мы используем общедоступный IP-адрес в качестве адреса SNAT, то пользователи интрасети не смогут получить доступ к услугам, предоставляемым SNAT, поскольку они не могут напрямую получить доступ к общедоступному IP-адресу. Таким образом, использование IP-адреса интрасети для SNAT является ключом к реализации передачи внутри сети.
Например, мы можем использовать следующую команду для реализации SNAT:
iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source 192.168.1.1
В этой команде:
-t nat
Это означает, что мы хотим действоватьNATповерхность。-A POSTROUTING
Да, чтобыPOSTROUTINGДобавить новое правило в цепочку。-o eth0
Да, это правило указано только для экспорта, посколькуeth0Пакет работает.。-j SNAT
Он указывает, что действие, которое мы хотим выполнить, — это преобразование адреса источника.(SNAT)。--to-source 192.168.1.1
это указать новый источникIPадрес。Чтобы iptables правильно выполнял переадресацию NAT,нам нужно включитьLinuxизIP-переадресация Функция。Это можно изменить с помощью/etc/sysctl.conf
документ,И добавьте следующие строки для достижения:
net.ipv4.ip_forward = 1
Затем,бегатьsysctl -p
команда, чтобы изменения вступили в силу。
Чтобы гарантировать, что правила iptables по-прежнему вступят в силу после перезапуска.,Нам нужно сохранить правила。Это можно сделать с помощьюiptables-save
иiptables-restore
команда сохранения правили Реализация реставрации。
мы можем использоватьiptables -t nat -L -n -v
Представление командnatповерхностьизправило。-L
поверхность Показать правила,-n
поверхность Отображается в цифровом видеадресипорт,-v
поверхность Показать подробный вывод。
sudo iptables -t nat -L -n -v
Chain PREROUTING (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
0 0 DNAT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:8005 to:8.209.1.81:80
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain POSTROUTING (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
0 0 SNAT tcp -- * * 0.0.0.0/0 8.209.1.81 tcp dpt:8005 to:192.168.1.1
Выше приведено подробное объяснение всего процесса реализации сетевой передачи с использованием iptables NAT. На реальных примерах сценариев внутренней сети мы объяснили, как настроить DNAT и SNAT и как сделать конфигурацию постоянной. Надеюсь, это руководство поможет вам лучше понять, как работают iptables и NAT. Если у вас есть вопросы, смело задавайте их в комментариях.