LINUX.ORG.RU
ФорумAdmin

firewalld Transparent Proxy

 , , , ,


0

1

Здравствуйте!
Вот такая вот проблема:
Есть сервер 192.168.0.2(eth1, gw 192.168.0.1), на нем настроен pptp сервер - при подключении его ip 10.9.0.2, клиента - 10.9.0.200. Так же на 192.168.0.2:9040 слуашет прозрачный прокси и на 192.168.0.2:53530 DNS сервер. Нужно все соединения ppp+ клиентов перенаправить на прозрачный прокси.
Вот так не получается:

firewall-cmd --permanent --direct --add-rule ipv4 nat PREROUTING 0 -i ppp+ -p tcp --dport 80 -j REDIRECT --to-port 9040
firewall-cmd --permanent --direct --add-rule ipv4 nat PREROUTING 0 -i ppp+ -p tcp --dport 443 -j REDIRECT --to-port 9040

firewall-cmd --permanent --direct --add-rule ipv4 nat PREROUTING 0 -i ppp+ -p udp -m udp --dport 53 -j REDIRECT --to-ports 53530
firewall-cmd --permanent --direct --add-rule ipv4 nat PREROUTING 0 -i ppp+ -p udp -m udp --dport 5353 -j REDIRECT --to-ports 53530


firewall-cmd --permanent --direct --add-rule ipv4 filter FORWARD 0 -i ppp+ -p tcp --dport 80 -j ACCEPT
firewall-cmd --permanent --direct --add-rule ipv4 filter FORWARD 0 -i ppp+ -p tcp --dport 443 -j ACCEPT

firewall-cmd --permanent --direct --add-rule ipv4 filter FORWARD 0 -i ppp+ -p udp --dport 53 -j ACCEPT
firewall-cmd --permanent --direct --add-rule ipv4 filter FORWARD 0 -i ppp+ -p udp --dport 5353 -j ACCEPT

firewall-cmd --permanent --direct --add-rule ipv4 filter FORWARD 0 -i ppp+ -p udp --dport 53530 -j ACCEPT
firewall-cmd --permanent --direct --add-rule ipv4 filter FORWARD 0         -p udp --dport 53530 -j ACCEPT
firewall-cmd --permanent --direct --add-rule ipv4 filter FORWARD 0 -i ppp+ -p tcp --dport 9040 -j ACCEPT
firewall-cmd --permanent --direct --add-rule ipv4 filter FORWARD 0         -p tcp --dport 9040 -j ACCEPT


firewall-cmd --permanent --direct --add-rule ipv4 filter FORWARD 1 -i ppp+ -j DROP
firewall-cmd --permanent --direct --add-rule ipv4 filter FORWARD 1 -o ppp+ -j DROP

пробовал как и не обходимо, весь траффик перенаправить, а не только по портам

firewall-cmd --permanent --direct --add-rule ipv4 nat PREROUTING 0 -i ppp+ -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -j REDIRECT --to-ports 9040
firewall-cmd --permanent --direct --add-rule ipv4 nat PREROUTING 0 -i ppp+ -p udp -m udp --dport 53 -j REDIRECT --to-ports 53530
firewall-cmd --permanent --direct --add-rule ipv4 nat PREROUTING 0 -i ppp+ -p udp -m udp --dport 5353 -j REDIRECT --to-ports 53530

firewall-cmd --permanent --direct --add-rule ipv4 filter FORWARD 0 -i ppp+ -p tcp --dport 9040 -j ACCEPT
firewall-cmd --permanent --direct --add-rule ipv4 filter FORWARD 0 -i ppp+ -p udp --dport 53530 -j ACCEPT

firewall-cmd --permanent --direct --add-rule ipv4 filter FORWARD 0 -i eth1 -p tcp --dport 9040 -j ACCEPT
firewall-cmd --permanent --direct --add-rule ipv4 filter FORWARD 0 -i eth1 -p udp --dport 53530 -j ACCEPT

firewall-cmd --permanent --direct --add-rule ipv4 nat POSTROUTING 0 -o ppp+ -j MASQUERADE
так же пробовал DNAT для DNS - не работает, на тестируемой тачке стоят гуглоДНС
firewall-cmd --permanent --direct --add-rule ipv4 nat PREROUTING 0 -i ppp+ -p udp --dport 53   -j DNAT  --to 192.168.0.2:53530
firewall-cmd --permanent --direct --add-rule ipv4 nat PREROUTING 0 -i ppp+ -p udp --dport 5353 -j DNAT --to 192.168.0.2:53530

firewall-cmd --permanent --direct --add-rule ipv4 filter FORWARD 0 -i ppp+ -p udp --dport 53530 -d 192.168.0.2 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT

firewall-cmd --permanent --direct --add-rule ipv4 nat POSTROUTING 0 -o ppp+ -j MASQUERADE

Подскажите пожалуйста, как заставить клиентов pptp ходить через прозрачный прокси и свой ДНС с помощью FireWallD на CentOS 7.



Последнее исправление: holegef (всего исправлений: 2)

Если я верно понимаю, то там есть интерфейс pptp?

его ip 10.9.0.2

firewalld --get-default-zone 
firewalld --get-active-zones

Возможно, дефолт зона - public, а интерфейс в internal. Или другой, а в правилах зона не указана - потому всё идёт на дефолтную.

i3wm
()

А с явным использованим прокси в настройках браузера работает? Пока оно не заработает, дальше делать что-либо бессмысленно.

firewall-cmd --permanent --direct --add-rule ipv4 nat POSTROUTING 0 -o ppp+ -j MASQUERADE

Достаточно редкий вариант использования. Можешь пояснить зачем?

У клиентов шлюз куда указывает после подъема pptp ?

vel ★★★★★
()
Последнее исправление: vel (всего исправлений: 2)
Ответ на: комментарий от i3wm
# firewall-cmd --get-active-zones
public
  interfaces: eth1
[root@centos ~]# firewall-cmd --get-default-zone 
public
[root@centos ~]# 
holegef
() автор топика
Ответ на: комментарий от vel

без результата добавдение интерфейса

firewall-cmd --get-active-zones
public
  interfaces: ppp+ eth1

holegef
() автор топика
Ответ на: комментарий от holegef

У клиента не может быть шлюз 192.168.0.1 - это адрес ему недоступен.

у клиента должен быть шлюз 10.9.0.2

Просто NAT в сторону клиента - это достаточно редкий кейс (double nat).

vel ★★★★★
()
Последнее исправление: vel (всего исправлений: 1)
Ответ на: комментарий от vel

У клиента не может быть шлюз 192.168.0.1 - это адрес ему недоступен.

у клиента должен быть шлюз 10.9.0.2

та да, но тесты в KVM и у них одна общая сеть...

Просто NAT в сторону клиента - это достаточно редкий кейс (double nat).

Не могли бы объяснить?

holegef
() автор топика
Ответ на: комментарий от holegef

та да, но тесты в KVM и у них одна общая сеть...

тогда при чем тут pptp ?

nat в сторону клиента используют, когда адреса клиентов не маршрутизируются в сети со стороны сервера.

У тебя прокся на 192.168.0.2:9040. Настоятельно рекомендую использовать DNAT, т.к. REDIRECT использует адрес интерфейса через которой пришел пакет. Если пакет пришел с ppp 10.9.0.200:1024, то redirect будет на 10.9.0.2:9040, где его никто не ждет.

vel ★★★★★
()
Ответ на: комментарий от holegef

Пример:

host1 10.0.0.2/24 шлюз 10.0.0.1

server 10.0.0.3/24,10.0.1.3/24

host2 10.0.1.4/24 шлюз 10.0.1.1

На хостах нет доп. маршрутов. Шлюз на сервере в данном случае нас не интересует.

Сервер должен редиректить запросы от 10.0.1.0/23 к 10.0.1.3:80 на 10.0.0.2:8080

На нем есть

-t nat PREROUTING -s 10.0.1.0/24 -p tcp -d 10.0.1.3 --dport 80 -j DNAT --to-destination 10.0.0.2:8080

И оно не будет работать без

-t nat POSTROUTING -p tcp --dport 8080 -d 10.0.0.2 -s 10.0.1.0/24 -j MASQUERADE

маскарад можно заменить на SNAT --to-source 10.0.0.3

vel ★★★★★
()
Ответ на: комментарий от vel

Спасибо!
DNAT-ом получилось, в чем была проблема? В firewalld, что бы DNAT заработал на ppp+ интерфейс и его подсеть нужно добавить в зону trusted

firewall-cmd --permanent --zone=trusted --add-interface=ppp+
firewall-cmd --permanent --zone=trusted --add-source=10.9.0.0/24
holegef
() автор топика
Ответ на: комментарий от holegef

Проблема в непонимании машрутизации в ip-сетях.

У нас маршрутизация пакетов, а не соединений и о правильной машрутизации ответных пакетов тоже нужно помнить.

Если в приведенном примере host1(10.0.0.2) рассказать о сети 10.0.1.0/24 в виде маршрута через 10.0.0.3, то SNAT/MASQUERADE будет ненужен.

vel ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.