Author Topic: squid+iptables+iproute  (Read 4370 times)

0 Members and 1 Guest are viewing this topic.

Offline bav

  • Newbie
  • *
  • Posts: 37
  • Karma: +0/-0
squid+iptables+iproute
« on: February 17, 2009, 09:42:19 »
Собственно есть бубунта сервер 8.10. Есть безлимитный впн. Необходимо чтобы squid работал через впн.

ip rule add fwmark 1 table vpn
ip route show table main | grep -Ev ^default \
   | while read ROUTE ; do
        ip route add table vpn $ROUTE
         done

ip route add default dev ppp0 table vpn

echo "1" > /proc/sys/net/ipv4/ip_forward
echo 0 > echo 0 > /proc/sys/net/ipv4/conf/ppp0/rp_filter
echo 0 > echo 0 > /proc/sys/net/ipv4/conf/eth1/rp_filter

iptables -A OUTPUT -t mangle -j CONNMARK --restore-mark
iptables -A OUTPUT -t mangle -p icmp -j MARK --set-mark 1
iptables -A OUTPUT -t mangle -m owner --uid-owner proxy -j MARK --set-mark 1
iptables -A OUTPUT -t mangle -j CONNMARK --save-mark

В table vpn у нас прописаны томские сети и дефолтом стоит впн. В table main - томские сети и дефолтом eth1. Трафик маркируется, все работает замечательно. Tracert с сервера идет через впн, squid работает через впн (имеется ввиду внешка). Но стоит удалить из table main дефолтный маршрут - все, затык. Пускаешь трасерт с сервера во внешку - говорит что сеть недоступна. При этом томск ходит нормально. Ну и сквидом тоже самое (томск работает, а внешка нет). Почему так? Стоит прописать дефолт в main - и все поехало...

Offline .05

  • Full Member
  • ***
  • Posts: 225
  • Karma: +2/-1
squid+iptables+iproute
« Reply #1 on: February 17, 2009, 11:24:17 »
хотел соб-но спросить у Вас до этого iptables -A OUTPUT -P DROP нет, не?
и по поводу трасероуте я делал у себя так, чтобы с шлюза его разрешить
-A OUTPUT -i $INTIF  -m state  --state NEW,ESTABLISHED -p udp --dport 33434:33523  -j ACCEPT
те порты отвечающие за трасировку udp 33434:33523  помимо icmp  т.к трафик упд у Вас не маркируется он идет по таблице main (as i see). Соотв-но днс имена доже не резольвятся. Попробуйте сделать
iptables -A OUTPUT -t mangle -p udp -j MARK --set-mark 1


кстати решение --uid-owner proxy мне у Вас понравилось, чето я до него не доходил
« Last Edit: February 17, 2009, 11:38:14 by .05 »
Ведь я только всего и хочу, чтобы всё всегда было по-моему

Offline bav

  • Newbie
  • *
  • Posts: 37
  • Karma: +0/-0
squid+iptables+iproute
« Reply #2 on: February 17, 2009, 14:32:18 »
Quote from: .05
хотел соб-но спросить у Вас до этого iptables -A OUTPUT -P DROP нет, не?
и по поводу трасероуте я делал у себя так, чтобы с шлюза его разрешить
-A OUTPUT -i $INTIF  -m state  --state NEW,ESTABLISHED -p udp --dport 33434:33523  -j ACCEPT
те порты отвечающие за трасировку udp 33434:33523  помимо icmp  т.к трафик упд у Вас не маркируется он идет по таблице main (as i see). Соотв-но днс имена доже не резольвятся. Попробуйте сделать
iptables -A OUTPUT -t mangle -p udp -j MARK --set-mark 1
кстати решение --uid-owner proxy мне у Вас понравилось, чето я до него не доходил

ДНС-имена резолвяться. По  айпишнику тоже пробовал))). Я как понимаю tracert от traceroute тем и отличается, что один icmp а другой udp (tracert=traceroute -I)... А вообще надо будет по правилам пройтись с нуля как время будет... Возможно где-то что-то теряется по пути к локальному процессу...
« Last Edit: February 17, 2009, 14:33:01 by bav »