В настоящее время у меня есть следующие 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