Брандмауэр iptables (2) | Стратегия и применение SNAT / DNAT

задняя часть Linux Эксплуатация и обслуживание
Брандмауэр iptables (2) | Стратегия и применение SNAT / DNAT

Это мой 12-й день в Gengwen Challenge, ознакомьтесь с подробностями мероприятия: больше текстового задания


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

Поиск в WeChat 【ИТ-путешествие Джейка】Ответить после следующего:【wx】Вы можете присоединиться к группе обмена сотнями читателей;

Оригинальная ссылка: брандмауэр iptables (2) - стратегия и применение SNAT / DNAT | (с картой системы)

Обзор политик SNAT

Полное название SNAT:Source Network Address Translation 源地址转换

SNAT — операция преобразования адресов брандмауэра Linux, тип управления пакетами в команде iptables;

SNAT作用: изменить исходный IP-адрес пакета в соответствии с указанными условиями.

С постепенным сокращением ресурсов IP-адресов предприятиям становится трудно подавать заявки на IP-адреса в общедоступных сетях или они могут позволить себе только расходы на один или несколько IP-адресов в общедоступных сетях. Используя сеть малого предприятия, применяя политику SNAT в шлюзе, можно решить проблему совместного использования Интернета в локальной сети.

Сервер шлюза Linux должен подключаться к Интернету и локальной сети соответственно через две сетевые карты eth1 и eth2 для анализа доступа узла локальной сети к Интернету.

图片

Правильно установите IP-адрес/маску подсети/адрес шлюза по умолчанию для каждого хоста в локальной сети.

Eth1: 192.168.3.111/24  Gw : 192.168.3.1
Eth2: 192.168.1.7/24 (подключение к внутренней сетевой карте без настройки шлюза)

# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:f9:55:5b brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.7/24 brd 192.168.1.255 scope global eth2
    inet6 2409:8a00:30f8:4d70:20c:29ff:fef9:555b/64 scope global dynamic 
       valid_lft 259010sec preferred_lft 172610sec
    inet6 fe80::20c:29ff:fef9:555b/64 scope link 
       valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:f9:55:65 brd ff:ff:ff:ff:ff:ff
    inet 192.168.3.111/24 brd 192.168.3.255 scope global eth1
    inet6 fe80::20c:29ff:fef9:5565/64 scope link 
       valid_lft forever preferred_lft forever

# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.3.0     0.0.0.0         255.255.255.0   U     1      0        0 eth1
192.168.1.0     0.0.0.0         255.255.255.0   U     1      0        0 eth2
0.0.0.0         192.168.1.1     0.0.0.0         UG    0      0        0 eth2

Отключить брандмауэр и selinux

# service iptables stop
iptables:将链设置为政策 ACCEPT:filter                    [确定]
iptables:清除防火墙规则:                                 [确定]
iptables:正在卸载模块:                                   [确定]
# setenforce 0

Когда включена только переадресация маршрутизации, а преобразование адресов не задано

На сервере Linux, выступающем в качестве шлюза, должна быть включена переадресация маршрутов для подключения к нескольким сетям.

Когда стратегия трансляции адресов не используется, исходный IP-адрес пакета данных из ПК локальной сети 192.168.1.123 в Интернет останется неизменным после переадресации шлюзом.Когда хост в Интернете получает такой пакет данных запроса , ответный пакет данных не сможет вернуться правильно, что приведет к сбою доступа.(私网地址不能在 Internet 中正常路由)

图片

Включите переадресацию маршрута и установите ситуацию трансляции SNAT.

Когда политика SNAT правильно применяется на сервере шлюза, ситуация с пересылкой пакетов отличается.

Когда пакет данных от ПК локальной сети, выходящего в Интернет, достигает шлюзового сервера, он сначала выполняет выбор маршрута.Если обнаруживается, что пакет данных необходимо переслать с внешнего сетевого интерфейса eth1, его исходный IP-адрес 192.168.1.123 изменяется. на адрес внешнего сетевого интерфейса шлюза 192.168 .3.111 перед отправкой на целевой хост 192.168.3.112.

Запрос на доступ к данным отправляется с общедоступного IP-адреса сервера шлюза, и целевой хост может правильно вернуть ответный пакет данных, чтобы компьютеры в локальной сети могли использовать один и тот же общедоступный IP-адрес для доступа в Интернет.

Во время процесса преобразования адреса SNAT сервер шлюза правильно вернет ответный пакет данных исходному узлу в локальной сети в соответствии с ранее установленным сопоставлением SNAT. Пока первый пакет соединения является SNAT, соединение и другие пакеты соответствующего потока данных будут автоматически SNAT. Фактически сервер в Интернете не знает IP-адрес ПК в локальной сети, а промежуточное преобразование полностью выполняется хостом-шлюзом, который может играть роль защиты интрасети.

图片

Применение политики SNAT

SNAT 策略应用: Обеспечивает стратегию доступа для общего доступа к Интернету в локальной сети.Время включения для обработки пакетов данных наступает после выбора маршрута.Это изменение исходного IP-адреса исходящих пакетов данных из локальной сети. на IP-адрес внешнего сетевого интерфейса сервера шлюза.

Политика SNAT используется в цепочке постмаршрутизации таблицы nat.

При написании политики SNAT необходимо использовать команду iptables совместно с--to-source IP 地址возможность указать измененный исходный IP-адрес.

Общий фиксированный IP-адрес для работы в Интернете

  • Сервер шлюза Linux подключен к Интернету и локальной сети через две сетевые карты eth1 и eth2 соответственно.
  • Шлюз по умолчанию для всех ПК в локальной сети установлен на: 192.168.1.7, а также установлен DNS-сервер.
  • Требуется, чтобы ПК в сегменте сети 192.168.3.0/24 мог нормально выходить в Интернет через общий доступ.
Включите переадресацию маршрута шлюза

Переадресация IP — это ключ к реализации функции маршрутизации, соответствующей настройке ip_forward в файловой системе /proc.

Значение 1 означает включено, значение 0 означает выключено.

Использование хоста Linux в качестве шлюза, модифицируемогоsysctl.conf 配置文件, функция переадресации маршрутизации должна быть включена постоянно.

# vi /etc/sysctl.conf 
7 net.ipv4.ip_forward = 1                   # 将第 7 行的配置由原来的 0 改为 1
# sysctl -p                                 # 读取修改后的配置

Во время теста можно временно включить переадресацию маршрута.

# echo 1 > /proc/sys/net/ipv4/ip_forward 
# sysctl -w net.ipv4.ip_forward=1
net.ipv4.ip_forward = 1
Правильно настроить политику SNAT

Политика SNAT применяется для пакетов данных ПК в локальной сети, получающих доступ к Интернету, и исходный адрес изменяется на общедоступный IP-адрес шлюза, устанавливаются правила брандмауэра, политика SNAT сохраняется в силе в течение длительного времени, и соответствующие команды записываются вrc.localКонфигурационный файл удобен для автоматической настройки после загрузки.

`# iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth1 -j SNAT--to-source 192.168.3.111`

Проверка результатов общего доступа политики SNAT

Используя ПК в локальной сети, можно нормально получить доступ к веб-сайту в Интернете.

Сервер веб-сайта, к которому осуществляется доступ, будет думать, что узел шлюза 192.168.3.111 обращается к веб-журналу, но он не знает, является ли это ПК-адресом 192.168.3.123 фактической интрасети предприятия.

Запустите устройство Windows, настройте IP-адрес в соответствии с реальной ситуацией и проверьте подключение;

图片

Установите службу IIS в операционной системе Windows и выберите опцию Internet Information Services;

图片

После завершения установки откройте браузер и введите IP-адрес машины для доступа;

图片

Общий динамический IP-адрес для работы в Интернете

iptables предоставляет тип управления пакетами, называемый masquerade, который может использоваться для изменения исходного IP-адреса пакета и может автоматически получать IP-адрес внешнего сетевого интерфейса без использования--to-sourceУкажите фиксированный IP-адрес.

Чтобы использовать политику маскировки MASQUERADE, просто удалите IP-адрес --to-source из политики SNAT, а затем используйте -j MASQUERADE, чтобы указать тип управления пакетами.

Широкополосный канал ADSL, обычно имя соединения: ppp0, ppp1 и т. д.;

# iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o ppp0 -j MASQUERADE

Если шлюз использует фиксированный общедоступный IP-адрес, лучше выбрать стратегию SNAT вместо стратегии маскарада, чтобы уменьшить ненужную системную нагрузку. 

Стратегия и применение DNAT

DNAT 全称为:Destination Network Address Translation (目标地址转换)

ДНКТ этоLinux 防火墙Другая операция преобразования адресов , этоiptablesТип управления пакетами в команде;

Функция: изменить IP-адрес назначения и порт назначения пакета в соответствии с указанными условиями.

Обзор стратегии DNAT

DNAT: используется для изменения целевого IP-адреса и целевого порта, используемых в цепочке PREROUTING и цепочке OUTPUT таблицы nat.

Подобно SNAT, SNAT используется для изменения исходного IP-адреса, используемого в цепочке POSTROUTING таблицы nat.

图片

В среде Интернет зарегистрированное доменное имя веб-сайта должно соответствовать официальному общедоступному IP-адресу, и ПК, подключенный к Интернету, не сможет получить доступ к серверу внутренней сети компании, если на сервере шлюза не будет правильно настроена политика DNAT.

Когда HTTP-запрос, отправленный Интернет-ПК, отправляется на сервер шлюза предприятия, сервер шлюза сначала определяет адрес назначения и порт назначения пакета данных и обнаруживает, что пакет данных должен получить доступ к порту 80 машины, а затем изменяет IP-адрес назначения на веб-сайт в интрасети. Затем IP-адрес сервера отправляется на внутренний веб-сервер.

Сервер шлюза изменит исходный IP-адрес возвращенного пакета HTTP-ответа в соответствии с ранее установленным сопоставлением DNAT, а затем вернет его на Интернет-ПК.

Интернет-ПК фактически не знает адрес локальной сети сервера веб-сайта предприятия, и промежуточное преобразование выполняется хостом шлюза.Благодаря установленной политике DNAT внутренний сервер предприятия может предоставлять услуги в Интернете.

图片

Применение стратегии DNAT

Приложение DNAT: предназначено для публикации внутреннего сервера предприятия в Интернете, а время включения для обработки пакета данных выполняется до выбора маршрута. Измените адрес назначения пакета данных, обращающегося к IP-адресу внешнего сетевого интерфейса шлюза, на IP-адрес внутреннего сервера, который фактически предоставляет услуги.

При использовании команды iptables для установки политики DNAT необходимо объединить--to-destination IP 地址возможность указать IP-адрес внутреннего сервера.

Опубликовать внутренний веб-сервер предприятия

  • Компании необходимо зарегистрировать доменное имя веб-сайта с IP-адресом 192.168.3.111.
  • Сервер сайта компании находится в локальной сети с IP-адресом 192.168.3.112.
  • Требуется возможность просматривать содержимое веб-сайта компании из Интернета, посетив доменное имя веб-сайта.
Включите переадресацию маршрута шлюза
# vi /etc/sysctl.conf 
7 net.ipv4.ip_forward = 1                   # 将第 7 行的配置由原来的 0 改为 1
# sysctl -p                                 # 读取修改后的配置
Правильно настроить политики DNAT

Измените адрес назначения на IP-адрес сервера веб-сайта, расположенного во внутренней сети, для пакетов данных любого хоста в Интернете, обращающегося к порту 80 шлюза.

# iptables -t nat -A PREROUTING -i eth2 -d 192.168.1.7 -p tcp --dport 80 -j DNAT --to-destination 192.168.3.112
# 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  --  eth2   *       0.0.0.0/0            192.168.1.7         tcp dpt:80 to:192.168.3.112 

Chain POSTROUTING (policy ACCEPT 1 packets, 136 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain OUTPUT (policy ACCEPT 1 packets, 136 bytes)
 pkts bytes target     prot opt in     out     source               destination 
Тест DNAT публикует результаты

Установите его правильно на сервере веб-сайта 192.168.3.112, запустите веб-службу, протестируйте веб-страницу и измените файл домашней страницы, настроив его, а затем получите доступ к веб-сайту через клиентский компьютер в Интернете без разрешения DNS, вы также можете посетить напрямую.

Опубликуйте сервер OpenSSH на предприятии

Политика DNAT: используется для изменения IP-адреса назначения пакета, а также номера порта назначения, если это необходимо.

Настроить службу OpenSSH

Откройте службу OpenSSH на шлюзе и сервере веб-сайта и используйте порты 2345 и 22 соответственно.

Служба sshd шлюза не использует порт по умолчанию, так как она выходит прямо в Интернет.

Включите переадресацию маршрута шлюза
# vi /etc/sysctl.conf 
7 net.ipv4.ip_forward = 1                   # 将第 7 行的配置由原来的 0 改为 1
# sysctl -p                                 # 读取修改后的配置
Правильно настроить политики DNAT

Служба sshd шлюза обращена прямо в Интернет и не требует трансляции адресов, а вот сервер веб-сайта находится в интранете и его необходимо опубликовать через политику DNAT.

Шлюз устанавливает правила брандмауэра, изменяет пакеты данных порта 2346 IP-адреса, которые обращаются к внешней сети, и изменяет адрес назначения и порт для облегчения пересылки на сервер веб-сайта.

# iptables -t nat -A PREROUTING -i eth2 -d 192.168.1.7 -p tcp --dport 2346 -j DNAT --to-destination 192.168.3.112:22
Тест DNAT публикует результаты

использоватьssh -p 2345 / 2346 用户名@eth2 IP 地址Вы можете войти на сервер шлюза


Рекомендуемое чтение

Брандмауэр iptables (1) | четыре таблицы/пять цепочек, процесс сопоставления пакетов, написание правил iptables

Суммировать

В этой статье в основном представлен обзор политики SNAT, применения политики SNAT, политики и приложения DNAT и т. д.;

Оригинальность непростая.Если вы считаете, что эта статья полезна для вас, ставьте лайк, комментируйте или пересылайте эту статью, потому что это будет моей мотивацией выпускать больше качественных статей, спасибо!

Увидимся в следующий раз!