Tomsk Sysadmins Forum

Unix => Администрирование => Topic started by: bav on February 17, 2009, 09:42:19

Title: squid+iptables+iproute
Post by: bav 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 - и все поехало...
Title: squid+iptables+iproute
Post by: .05 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 мне у Вас понравилось, чето я до него не доходил
Title: squid+iptables+iproute
Post by: bav 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)... А вообще надо будет по правилам пройтись с нуля как время будет... Возможно где-то что-то теряется по пути к локальному процессу...