Моей целью было использовать ubuntu в качестве маршрутизатора, а Redsocks выступал в качестве прозрачного перенаправителя прокси-сервера SOCKS. Трафик TCP / UDP каждой машины в моей сети будет перенаправлен на другой порт, который прослушивает Redsocks. Пример: машина 1 будет отправлять трафик на порт 12345, и Redsocks будет передавать его внешнему прокси 1. Машина 2 будет отправлять трафик на порт 12346, а Redsocks будет отправлять его на прокси 2.
Я полагал, что iptables может обрабатывать первоначальное перенаправление на конкретное расположение порта Redsocks. Я нашел случай, похожий на мой, где использовался SNAT (iptables для прозрачного NAT), но не может заставить его работать со следующим:
iptables -t nat -N REDSOCKS
iptables -t nat -A REDSOCKS -d 0.0.0.0/8 -j RETURN
iptables -t nat -A REDSOCKS -d 10.0.0.0/8 -j RETURN
iptables -t nat -A REDSOCKS -d 127.0.0.0/8 -j RETURN
iptables -t nat -A REDSOCKS -d 169.254.0.0/16 -j RETURN
iptables -t nat -A REDSOCKS -d 172.16.0.0/12 -j RETURN
iptables -t nat -A REDSOCKS -d 192.168.0.0/16 -j RETURN
iptables -t nat -A REDSOCKS -d 224.0.0.0/4 -j RETURN
iptables -t nat -A REDSOCKS -d 240.0.0.0/4 -j RETURN
iptables -t nat -A POSTROUTING -s 192.168.50.2 -p tcp --dport 80 -j SNAT --to-source 192.168.1.50:12345
iptables -t nat -A POSTROUTING -s 192.168.50.2 -j MASQUERADE
Не уверен, где я ошибаюсь.
Моя установка: Маршрутизатор имеет 2 сетевых адаптера. Eth0 обращен к глобальной сети. Eth1 обращен к локальной сети и имеет статический IP-адрес.
/ proc / sys / net / ipv4 / ip_forward = 1
eth0 = 192.168.1.50
eth1 = 192.168.50.1
Все клиенты маршрутизатора имеют одну сетевую карту, статический IP-адрес, обращенный к локальной сети. eth1 = 192.168.50.2
Почему я хочу это сделать: я могу успешно запускать Redsocks на отдельных машинах и передавать данные через их соответствующие прокси, но я хотел сохранить всю маршрутизацию в одном месте для удобства.
Для этого вам понадобится правило DNAT в цепочке PREROUTING и правило SNAT в цепочке POSTROUTING.
Взгляните еще раз на предыдущий ответ serverfault что вы связали:
iptables -t nat -I PREROUTING -d 192.168.250.3 -j DNAT --to-destination 192.168.250.4
iptables -t nat -I POSTROUTING -s 192.168.250.4 -j SNAT --to-source 192.168.250.3
Кроме того, вы не хотите устанавливать порт на --to-source
для правила SNAT.
Вы захотите узнать о различиях между DNAT и SNAT, что вы можете сделать здесь.
Этот документ о TLDP может помочь в этом конкретном сценарии.