Переадресация на другой компьютер при обращении на порт, MakPol, 26-Июл-12, 00:02 [смотреть все]Доброго времени суток!Снова встала необходимость настраивать iptables. На этот раз надо настроить переадресацию. Пробовал найти, чтобы не создавать тему и не отвлекать форумчан, но ничего не вышло (находил варианты, настраивал, но результата не добивался). Расскажу что имею и что сделал, а дальше уже судите. Есть 3 компьютера, все к счастью под управлением NIX: Клиентский компьютер - Fedora 16 x86_64 - IP_клиента Сервер рабочий - CentOS 6.3 x86_64 - IP_раб_серв Сервер тестовый - Centos 6.2 x86_64 - IP_тест_серв На тестовом сервере у меня установлена JIRA на порту 9090 и я хочу, чтобы обращаясь с клиента IP_раб_серв:9090 попадали на IP_тест_серв:9090. Вроде все просто, стал реализовывать. В первую очередь добавил "net.ipv4.ip_forward = 1" и перечитал /etc/sysctl.conf далее стал изменять девственно чистую настройку iptables после установки CentOS 6.3 следующим образом: # iptables -t nat -A PREROUTING -i eth0 -d IP_раб_серв -p tcp -m tcp --dport 9090 -j DNAT -to-destination IP_тест_серв:9090 # iptables -A FORWARD -i eth0 -d IP_тест_серв -p tcp -m tcp --dport 9090 -j ACCEPT Но проверяя telnet'ом я увидел, что не работает. Стал читать дальше и нашел, что между PREROUTING и FORWARD надо добавить еще POSTROUTING и пробовал сделать вот так: # iptables -t nat -A POSTROUTING -p tcp -m tcp --dport 9090 -d IP_раб_серв -j SNAT to-source IP_тест_серв но не понял не наоборот ли надо (если не сложно - поясните пожалуйста), т.е. # iptables -t nat -A POSTROUTING -p tcp -m tcp --dport 9090 -d IP_тест_серв -j SNAT to-source IP_раб_серв В итоге сейчас пакеты не перенаправляются. Подскажите как правильно решить мою задачу. Все три компьютера находятся в локальной сети компании, где работаю. Заранее огромное спасибо!
|
- Переадресация на другой компьютер при обращении на порт, PavelR, 10:35 , 26-Июл-12 (1)
> В итоге сейчас пакеты не перенаправляются. Подскажите как правильно решить мою задачу. > Все три компьютера находятся в локальной сети компании, где работаю. нужна схема сети, с указанием IP-адресов хостов и их шлюзов, на всех участвующих хостах.
- Переадресация на другой компьютер при обращении на порт, MakPol, 11:09 , 26-Июл-12 (2)
> нужна схема сети, с указанием IP-адресов хостов и их шлюзов, на всех > участвующих хостах.Кажись немного разобрался... изначально конфиг у меня стандартный, прогоняю скрипт с содержимым: iptables -t nat -A PREROUTING --dst $IP_раб_серв -p tcp --dport 9090 -j DNAT --to-destination $IP_тест_серв iptables -t nat -A POSTROUTING --dst $IP_тест_серв -p tcp --dport 9090 -j SNAT --to-source $IP_раб_серв iptables -I FORWARD 1 -i eth0 -o eth0 -d $IP_тест_серв -p tcp -m tcp --dport 9090 -j ACCEPT и дальше приходится еще сделать вот что: iptables -D FORWARD -j REJECT --reject-with icmp-host-prohibited иначе работать не будет, но это не правильно в плане безопастности, подскажите как лучше быть в этом случае. Вот мой конфиг iptables, который подгружается после перезагрузки.включения и то что имеем до выполнения скрипта: *filter :INPUT ACCEPT [0:0] :FORWARD ACCEPT [1:10000] :OUTPUT ACCEPT [42026:9681910] -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT -A INPUT -p icmp -j ACCEPT -A INPUT -i lo -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT -A INPUT -j REJECT --reject-with icmp-host-prohibited -A FORWARD -j REJECT --reject-with icmp-host-prohibited COMMIT
- Переадресация на другой компьютер при обращении на порт, reader, 11:20 , 26-Июл-12 (3)
>> нужна схема сети, с указанием IP-адресов хостов и их шлюзов, на всех >> участвующих хостах. > Кажись немного разобрался... > изначально конфиг у меня стандартный, прогоняю скрипт с содержимым: > iptables -t nat -A PREROUTING --dst $IP_раб_серв -p tcp --dport 9090 -j > DNAT --to-destination $IP_тест_серв > iptables -t nat -A POSTROUTING --dst $IP_тест_серв -p tcp --dport 9090 -j > SNAT --to-source $IP_раб_серв > iptables -I FORWARD 1 -i eth0 -o eth0 -d $IP_тест_серв -p tcp > -m tcp --dport 9090 -j ACCEPT для ответных пакетов правило добавьте и тогда не нужно будет удалять >[оверквотинг удален] > :FORWARD ACCEPT [1:10000] > :OUTPUT ACCEPT [42026:9681910] > -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT > -A INPUT -p icmp -j ACCEPT > -A INPUT -i lo -j ACCEPT > -A INPUT -m state --state NEW -m tcp -p tcp --dport 22 > -j ACCEPT > -A INPUT -j REJECT --reject-with icmp-host-prohibited > -A FORWARD -j REJECT --reject-with icmp-host-prohibited > COMMIT
- Переадресация на другой компьютер при обращении на порт, ipmanyak, 11:44 , 26-Июл-12 (4)
попробуй так: iptables -t nat -A PREROUTING -p tcp -d IP_раб_серв --dport 9090 -j DNAT --to IP_тест_серв:9090 iptables -A INPUT -i eth0 -p tcp --dport 9090 -m state --state NEW,ESTABLISHED -j ACCEPT iptables -A OUTPUT -o eth0 -p tcp --sport 9090 -m state --state ESTABLISHED -j ACCEPT
- Переадресация на другой компьютер при обращении на порт, MakPol, 11:53 , 26-Июл-12 (5)
> попробуй так: > iptables -t nat -A PREROUTING -p tcp -d IP_раб_серв --dport 9090 -j > DNAT --to IP_тест_серв:9090 > iptables -A INPUT -i eth0 -p tcp --dport 9090 -m state --state > NEW,ESTABLISHED -j ACCEPT > iptables -A OUTPUT -o eth0 -p tcp --sport 9090 -m state --state > ESTABLISHED -j ACCEPT а получается POSTROUTING не нужен? а добавление "iptables -A OUTPUT -o eth0 -p tcp --sport 9090 -m state --state ESTABLISHED -j ACCEPT" что-то не помогло :( Только "iptables -D FORWARD -j REJECT --reject-with icmp-host-prohibited"
- Переадресация на другой компьютер при обращении на порт, reader, 14:52 , 26-Июл-12 (6)
>[оверквотинг удален] >> iptables -t nat -A PREROUTING -p tcp -d IP_раб_серв --dport 9090 -j >> DNAT --to IP_тест_серв:9090 >> iptables -A INPUT -i eth0 -p tcp --dport 9090 -m state --state >> NEW,ESTABLISHED -j ACCEPT >> iptables -A OUTPUT -o eth0 -p tcp --sport 9090 -m state --state >> ESTABLISHED -j ACCEPT > а получается POSTROUTING не нужен? > а добавление "iptables -A OUTPUT -o eth0 -p tcp --sport 9090 > -m state --state ESTABLISHED -j ACCEPT" что-то не помогло :( Только > "iptables -D FORWARD -j REJECT --reject-with icmp-host-prohibited" при чем тут INPUT и OUTPUT. с помощью DNAT подставили ip другой машины, пакет пойдет через FORWARD. POSTROUTING - нужен т.к. в туже подсеть перенаправляете , разжевано https://www.opennet.ru/docs/RUS/iptables/#DNATTARGET а iptables -D FORWARD -j REJECT --reject-with icmp-host-prohibited помогает потому что на этом правиле режутся ответные пакеты, посмотрите счетчики, а лучше сделайте логирование. так что пишите правило для ответных пакетов. смотрите tcpdump
- Переадресация на другой компьютер при обращении на порт, MakPol, 15:06 , 26-Июл-12 (7)
Короче разобрался, настроил вот так: к стандартному iptables добавил: iptables -t nat -A PREROUTING --dst $IP_new -p tcp --dport 9090 -j DNAT --to-destination $IP_old iptables -t nat -A POSTROUTING --dst $IP_old -p tcp --dport 9090 -j SNAT --to-source $IP_new iptables -I FORWARD 1 -i eth0 -o eth0 -d $IP_old -p tcp -m tcp --dport 9090 -j ACCEPT iptables -I FORWARD -m state --state ESTABLISHED -j ACCEPT вот и вся любовь и никакой iptables -D FORWARD -j REJECT --reject-with icmp-host-prohibited теперь убирать не нужно.
|