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

изменить адрес источника исходящего трафика, предназначенного для второго сетевого псевдонима исходного хоста

У меня следующая настройка:

ip addr:

2: ens4: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 01:12:23:34:45:5f brd ff:ff:ff:ff:ff:ff
    inet xxx.xxx.xxx.xxx/24 brd xxx.xxx.xxx.xxx scope global ens4
       valid_lft forever preferred_lft forever
    inet 192.168.0.2/24 scope global ens4:1
       valid_lft forever preferred_lft forever
    inet 192.168.0.3/24 scope global secondary ens4:2
       valid_lft forever preferred_lft forever

Я хочу получать весь трафик из 192.168.0.2 суждено 192.168.0.3 показать, как будто источник 192.168.0.3.

Причина в том, что у меня есть конкретная конфигурация postgres, которую я не могу изменить. Этот postgres принимает соединения только тогда, когда источник 192.168.0.3, поэтому если источник становится 192.168.0.2 тогда в соединении будет отказано.

Вышеуказанные вопросы являются результатом ответа, полученного здесь: Как добавить IP-маршрут для маршрутизации трафика через интерфейс, когда пункт назначения также является этим интерфейсом (невозможно изменить исходный IP-адрес со статическими маршрутами, если в одной сети настроены два псевдонима)

Ответ на следующий вопрос, кажется, связан с моим вопросом, хотя это не приводит к добавлению правила: https://unix.stackexchange.com/questions/243451/iptables-change-local-source-address-if-destination-address-matches

Я уже пробовал следовать правилам нат:

iptables -t nat -A POSTROUTING -o ens4 -j MASQUERADE
iptables -A FORWARD -i ens4 --source 192.168.0.2/32 -o 192.168.0.3 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i ens4 --source 192.168.0.2/32 -o 192.168.0.3 -j ACCEPT

Выше получено отсюда: http://www.revsys.com/writings/quicktips/nat.html

Я проверил ответ, который вы упомянули в своем вопросе, и попытался настроить iptables вроде там упоминалось. Протестировано с nginx на моей виртуальной машине с CentOS, и она работает.

Попробуйте использовать это правило:

iptables -t nat -A POSTROUTING --destination 192.168.0.3/32 -j SNAT --to-source 192.168.0.3

В моем случае это правило работает даже с отключенной переадресацией IP, так что попробуйте.

Обновить:

Для всего исходящего трафика следует использовать правило:

iptables -t nat -A POSTROUTING -j SNAT --to-source 192.168.0.3

Тип ip route get 192.168.0.3 чтобы увидеть, какой маршрут фактически выбран.

В моем ящике (debian) я смог сделать то, что вы хотите, набрав:

sudo ip route change local 192.168.0.3 dev lo src 192.168.0.3

Кроме того, не известно, какие инструменты вы используете для подключения к 192.168.0.3, но большинство из них позволит вам указать, какой IP-источник использовать.