У меня есть сервер, работающий как мой nat, на котором размещены некоторые службы. Когда я локально подключаюсь через UDP к этому серверу, мой клиент использует публичный ip, но сервер отвечает локальным ip.

Таким образом, вопрос заключается в следующем: как я могу заставить весь трафик, который направляется на общедоступный IP, также маршрутизироваться через NAT?

Или есть какой-то еще более простой способ добиться того, чтобы разговор происходил на публичном ip (не позволяя трафику "просачиваться" в публичный)

1 ответ1

2

Вы должны добавить правило MASQUERADE для этого трафика на поле nat. Это делает так, чтобы трафик к любой из служб DNAT, казалось бы, приходил из коробки nat. Таким образом, когда служба DNAT отвечает, трафик возвращается в поле nat, чтобы его можно было правильно отправить обратно клиенту (с правильным IP-адресом источника).

Например, если ваша частная сеть была 192.168.0.0/24 и в поле nat есть эта сеть на eth1:

iptables -t nat -A POSTROUTING -o eth1 -s 192.168.0.0/24 -d 192.168.0.0/24 -j MASQUERADE

(Вы можете использовать SNAT вместо MASQUERADE, либо работает)

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