NAT Внешний IP-адрес на локальном сервере с использованием iptables

У меня есть соединение adsl со статическим IP (скажем, 1.1.1.1). Мой дебианский брандмауэр соединяет Интернет с ppp и IP напрямую привязан к брандмауэру; ppp0 Link encap:Point-to-Point Protocol inet addr:1.1.1.1 PtP:<IP-DOES-NOT-MATTER> Mask:255.255.255.255

Я использую debian в качестве брандмауэра / маршрутизатора, а NAT – своих локальных клиентов в Интернете, используя базовый скрипт iptables; iptables --table nat --append POSTROUTING --out-interface ppp0 -j MASQUERADE iptables --append FORWARD --in-interface eth1 -j ACCEPT echo 1 > /proc/sys/net/ipv4/ip_forward

Я создал субдоменную запись для моего внешнего размещенного домена: sub.example.com IN A 1.1.1.1

Я могу подключить DNAT http из Интернета к моему локальному серверу с помощью iptables: iptables --table nat --append PREROUTING -i ppp0 --dest 1.1.1.1 -p tcp --dport 80 -j DNAT --to 192.168.1.101:80

Я также хочу, чтобы мои местные клиенты достигли sub.example.com без какой-либо дополнительной настройки.

Команды iptables, которые я пытался использовать в брандмауэре (это не сработало): iptables --table nat --append PREROUTING --in-interface eth1 --dest 1.1.1.1 -p tcp --dport 80 -j DNAT --to-destination 192.168.1.101:80 и iptables -t nat --append OUTPUT --dest 1.1.1.1 -p tcp --dport 80 -j DNAT --to-dest 192.168.1.101

Первая команда маршрутизировала пакеты на сервер, но я не получил ответа (1.1.1.1 не настроен на сервере). Второй ничего не сделал.

Есть ли способ сделать это с помощью iptables?

  • Правило IPtables для двойного NAT
  • Проблема с сетью с Virtualbox
  • Освободить некоторые устройства от NAT
  • Linux: подключение к двум различным сетям с одинаковым диапазоном ip
  • Сервер Linux как маршрутизатор - проблема
  • Невозможно получить работу NAT через цепочку iptables PREROUTING
  • Изменение порта позволяет подключаться к
  • 1: 1. Ядро с ядерным статусом 3.16 или более поздней версии с использованием TC
  • One Solution collect form web for “NAT Внешний IP-адрес на локальном сервере с использованием iptables”

    После ответа @ wurtel я использовал DNAT и SNAT вместе, и это сработало. Спасибо за это 🙂

    Команды: iptables --table nat --append PREROUTING --in-interface eth1 --dest 1.1.1.1 -p tcp --dport 80 -j DNAT --to-destination 192.168.1.101:80 iptables --table nat --append POSTROUTING --out-interface eth1 -source 192.168.1.0/24 --dest 192.168.1.101 -p tcp --dport 80 -j SNAT --to-source 192.168.1.1

    Linux и Unix - лучшая ОС в мире.