У меня есть скрипт ниже, который создает мои iptables. Как я могу сделать так, чтобы при доступе к IP_ADDR:8080 или:8443 он направлялся к 80 или 443 соответственно?

#!/bin/bash

# Delete all existing rules
iptables -F

# Set default chain policies
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP

# Allow loopback access
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT

  # Allow inbound SSH
  iptables -A INPUT -i eth0 -p tcp --dport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
  iptables -A OUTPUT -o eth0 -p tcp --sport 22 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

  # Allow outbound DNS
  iptables -A OUTPUT -o eth0 -p tcp --dport 53 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
  iptables -A INPUT -i eth0 -p tcp --sport 53 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

  # Allow outbound HTTP
  iptables -A OUTPUT -o eth0 -p tcp --dport 80 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
  iptables -A INPUT -i eth0 -p tcp --sport 80 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

  # Allow outbound HTTPS
  iptables -A OUTPUT -o eth0 -p tcp --dport 443 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
  iptables -A INPUT -i eth0 -p tcp --sport 443 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

  # Allow outbound SMTP
  iptables -A OUTPUT -o eth0 -p tcp --dport 587 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
  iptables -A INPUT -i eth0 -p tcp --sport 587 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

1 ответ1

1

Вы действительно не указываете, хотите ли вы переводить:(Внутри) 80 -> (Снаружи) 8080 или наоборот.

Предполагая, что вы хотите запустить httpd в вашей системе для прослушивания на 8080 и 8443, чтобы обслуживать трафик внешнего пользователя на 80 и 443 (таким образом, избегая проблемы необходимости запуска от имени root для открытия этих портов <1025), вы хотите использовать функцию NAT из iptables:

iptables -A INPUT -i eth0 -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --dport 8080 -j ACCEPT
iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8080

и сделать то же самое для 443 -> 8443

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .