На порту eth0 у нас есть общедоступный IP, а на eth1 - IP 10.31.0.1 который предоставляет службы DHCP и Squid.

Порты 8080,53,67,80,443 открыты. Теперь для приложения нам нужно открыть 1521,8443 порта, чтобы оно могло подключиться к удаленному серверу 1521,8443 порта.

Но только открытие порта не помогает нам подключиться к удаленному серверу. Поэтому нам нужно включить NAT для этого конкретного запроса порта. Какими командами iptable мы можем выполнить NAT на основе порта?

2 ответа2

1

Возможно, вы захотите прочитать некоторую документацию, так как netfilter/iptables может быть сложным. Вот несколько хороших документов, даже если они немного устарели.

Для того, что вам нужно сделать, вам нужно добавить правило в таблицу nat, прежде чем оно попадет в код маршрутизации, следовательно, PREROUTING. Это связано с тем, что после принятия решения о маршрутизации он уже решил, что пакет предназначен для вашего маршрутизатора, а не для реального сервера.

Вам понадобится что-то вроде этого:

# iptables -t nat -A PREROUTING -p tcp --dport 1521 -i eth0 \
  -j DNAT --to 5.6.7.8:1521

Замена на IP-адрес компьютера, который будет получать пакеты.

0

Следуй этим шагам:

  1. Включить IP-пересылку в ядре:

    echo 1 > /proc/sys/net/ipv4/ip_forward

  2. Сбросьте правила пересылки:

    iptables -F FORWARD

  3. Установите так, чтобы только определенные порты были NAT'd из этого диапазона IP-адресов локальной сети:

    iptables -t nat -A POSTROUTING -o eth0 -s 10.31.0.0/16 -p tcp --dports 1521,8443 MASQUERADE

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