В настоящее время у меня есть следующие iptables
правила для перенаправления трафика с b.b.b.b
на a.a.a.a
:
-A PREROUTING -p tcp -m tcp --dport 25566 -j DNAT --to-destination a.a.a.a:25566
-A POSTROUTING -d a.a.a.a/32 -p tcp -m tcp --dport 25566 -j SNAT --to-source b.b.b.b
Однако весь трафик, направляемый в a.a.a.a
(из b.b.b.b
), показывает IP-адрес b.b.b.b
как IP- адрес входящего трафика.
Как сохранить исходный IP-адрес где-то в пакете, чтобы исходный IP-адрес был показан другому серверу, на который мы направляем трафик?
Сохраните исходный IP-адрес путем маршрутизации пакета, а не пересылки с NAT . Обычно используется NAT из-за недостаточного пространства IP-адресов для маршрутизации.
—
user4556274
@ user4556274 Не могли бы вы пролить свет на то, как это сделать?
—
Уильям Эдвардс
Это зависит от платформы. В типичном Linux вы бы включили маршрутизацию, отредактировав
—
user4556274 26.12.16
/etc/sysctl.conf
ее, раскомментировав строку net.ipv4.ip_forward=1
, а затем применив с помощью sysctl -p /etc/sysctl.conf
. Пакеты, поступающие на один интерфейс, затем выходят на другой, если это то, что вызывает таблица маршрутизации ( ip -4 route
). Однако, если у вас есть только один маршрутизируемый IP-адрес (обычная домашняя настройка), это не будет работать для интернет-трафика, хотя вы можете поэкспериментировать с локальной маршрутизацией в вашей домашней сети.
Ваше второе правило переписывает исходный IP (Source NAT). Вы пробовали это без?
—
user2313067 27.12.16