Назад | Перейти на главную страницу

Linux изменить IP-адрес источника входящего трафика

У меня есть веб-служба, работающая на порту X. Она никогда не предназначалась для работы за пределами локальной сети, но я хотел бы получить к ней доступ через Интернет. Поэтому мне нужно изменить исходный IP-адрес всех входящих пакетов на локальный (например, 192.168.2.100). В противном случае веб-служба ответит ошибкой.

Итак, вот что мне нужно:

Если я отправлю пакет со своего домашнего компьютера с общедоступным IP-адресом X на общедоступный IP-адрес Y моего сервера, исходный IP-адрес (в данном случае X) необходимо изменить на локальный (например, 192.168.2.1). . После этого пакет должен быть передан веб-приложению, работающему на том же сервере через порт 80.

Хорошо, теперь я думаю, что понимаю, чего вы хотите. Это особый случай, отличный от обычного. Перенаправление порта подход, который я опубликовал ранее (см. ниже). Следующие правила должны сделать это.

SNAT для входящих пакетов

Я предполагаю следующее:

  • <x>: публичный IP-адрес сервера
  • <y>: публичный IP клиента
  • <a>: внутренний IP-адрес сервера (192.168.2.1)
  • <b>: внутренний "поддельный" IP клиента (192.168.2.100)
  • <if>: внешний интерфейс (т.е. eth0)

Только SNAT

Это правило изменит адрес источника пакета:

iptables -t nat -A INPUT -p tcp -d <x> --dport 80 -s <y> -j SNAT --to-source <b>

Комбинированный DNAT и SNAT:

Эти правила изменят адрес источника и получателя пакета:

iptables -t nat -A PREROUTING -i <if> -p tcp -d <x> --dport 80 -s <y> \
    -j DNAT --to-destination <a>:80
iptables -t nat -A INPUT -p tcp -d <a> -s <y> --dport 80 \
    -j SNAT --to-source <b>

Не забывай ПРИНЯТЬ пакеты в таблице фильтров.


Обычное правило переадресации порта DNAT для сравнения (без SNAT):

iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 8080 \
    -j DNAT --to-destination 192.168.2.1:80

Это перенаправит порт 8080 на входящих пакетах на внешнем интерфейсе (в этом примере eth0) на внутренний хост 192.168.2.1 портировать 80. Заменить интерфейс, протокол, порт и к месту назначения с вашими настройками.

Это правило примет измененный пакет:

iptables -A FORWARD -i eth0 -p tcp -d 192.168.2.1 --dport 80 -j ACCEPT

iptables -t nat -A PREROUTING -i eth0 -p tcp --dport *$srcPortNumber* -j REDIRECT --to-port *$dstPortNumber*

Вы измените -i attribut, если ваша сетевая карта не на eth0

Редактировать # 1

Вы можете для --dport и --to-port установить IP-адрес с портом для exm: 192.168.0.1:80