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

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

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

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

4
задан 10 June 2016 в 18:34
2 ответа

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

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

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

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>

Не забудьте ACCEPT пакеты в таблице фильтрации.


Обычное правило переадресации портов 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. Замените интерфейс , протокол , dport и to-destination своими настройками.

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

iptables -A FORWARD -i eth0 -p tcp -d 192.168.2.1 --dport 80 -j ACCEPT
6
ответ дан 3 December 2019 в 02:57

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

Вы измените атрибут -i, если ваша сетевая карта не находится на eth0

Edit #1

You can for --dport and --to-port set ip address address whit port for exm: 192. 168.0.1:80

1
ответ дан 3 December 2019 в 02:57

Теги

Похожие вопросы