Есть конкретная задача, хотелось бы устроить конкурс спризом!
Нужны знатоки таких жутких вещей как iproute2 iptables
объявляю приз 500р. для знатока, решение вопроса на 2 минуты!
пишите в личку опишу задачу в этой ветке,в мыло, или как угодно!
побеждает первый кто пришлет верное решение!
ИТАК!
есть роутер! в нем 3 сетевых карты!
eth0 192.168.0.221 это локалка
eth1 192.168.2.2 эта смотрит в сторону адсл модема (192.168.2.1) на провайдера 1
eth2 192.168.1.1 эта смотрит в сторону адсл модема (192.168.1.1) на провайдера 2
на самом роутере крутится 8.04 Server, тут же поднято ftp(proftpd), mysql, apache
интернет организован так:
есть пров1, есть пров2, есть в зоне прова2 еще 1 роутер который находится дома, на нем поднят vpn сервер.
т.е. с нашего роутера (он же vnp client) устанавливается vpn соединение на домашний роутер (vpn сервер) и путем манипуляций с iptables у всех в локалке повяляется инет

теперь что не так!
- до того как был поднят опенвпн, все работало через Squid (ну да хрен с ним)
на роутере, как я сказал поднят Proftpd, и он должен работать через любого прова - это РАЗ!
- внутри локальной сети существует Windows Server 2008R2, на нем крутится sharepoint, mssql, свой ftp, iis7, значит должен быть проброс с обоих провайдеров внутрь локальной сети к этим серверам - это ДВА!
- инет должен ходить через домашний роутер (через впн или еще как нибудь, но весь инет (т.е. ftp аська и прочая хрень, а не
только http))
Вот как работало раньше!
ip route add 192.168.2.0/24 src 192.168.2.2 dev eth1 table inet1
ip route add default via 192.168.2.1 dev eth1 table inet1
ip rule add from 192.168.2.2 table inet1
ip rule add fwmark 2 table inet1
ip route add 192.168.1.0/24 src 192.168.1.2 dev eth2 table inet2
ip route add default via 192.168.1.1 dev eth2 table inet2
ip rule add from 192.168.1.2 table inet2
ip rule add fwmark 3 table inet2
ip route add 192.168.0.0/24 dev eth0 src 192.168.0.221 table inet1
ip route add 192.168.0.0/24 dev eth0 src 192.168.0.221 table inet2
ip route add 89.239.a.a via 192.168.2.1 dev eth1 # dns прова 1
ip route add 89.250.b.b via 192.168.1.1 dev eth2 # dns прова 2
ip route flush cache
iptables -A PREROUTING -i eth1 -t mangle -j MARK --set-mark 2
iptables -A PREROUTING -i eth2 -t mangle -j MARK --set-mark 3
iptables -A PREROUTING -i eth0 -t mangle -j MARK --set-mark 2
#это было сделано для внутреннего фтп на 2008 сервере
iptables -A PREROUTING -i eth0 -s 192.168.0.11 -d ! 192.168.0.0/24 -p tcp -m tcp --sports 20:21 -t mangle -j MARK --set-mark 2
iptables -A PREROUTING -i eth0 -s 192.168.0.11 -d ! 192.168.0.0/24 -p tcp -m tcp --sports 49152:65534 -t mangle -j MARK --set-mark 2
#это маркировка в зависимости от того какой днс на клиентской машине, если у человека днс1 то его инет идет через первого прова, если днс2 то через второго
iptables -A PREROUTING -i eth0 -s 192.168.0.0/24 -d 89.250.a.a -t mangle -j MARK --set-mark 3
iptables -A PREROUTING -i eth0 -s 192.168.0.0/24 -d 89.239.b.b -t mangle -j MARK --set-mark 2
iptables -A OUTPUT -t mangle -d ! 192.168.0.0/24 -j MARK --set-mark 2
#это для того что бы весь трафик сквида шел через прова2
iptables -A OUTPUT -t mangle -d ! 192.168.0.0/24 -p tcp --dport 3128 -j MARK --set-mark 3
iptables -A OUTPUT -t mangle -d 89.250.а.а -j MARK --set-mark 3
iptables -A OUTPUT -t mangle -d 89.239.b.b -j MARK --set-mark 2
#iptables -A PREROUTING -i eth0 -s 192.168.0.0/24 -d ! 192.168.0.0/24 -p tcp -m tcp --dport 3128 -t mangle -j MARK --set-mark 3
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth1 -j MASQUERADE
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth2 -j MASQUERADE
проброс портов выполнен вот в таком плане
#80
#iptables -t nat -A PREROUTING -d 192.168.2.2 -p tcp -m tcp --dport 80 -j DNAT --to-destination 192.168.0.11:80
#iptables -t nat -A POSTROUTING -d 192.168.0.11 -p tcp -m tcp --dport 80 -j SNAT --to-source 192.168.2.2
повторюсь, все работало до тех пор пока не подняли впн.
теперь после того как подняли, что бы работал инет пришлось урезать вот до такого
route add -host 89.250.х.х gw 192.168.1.1 dev eth2 #делаем роут до домашнего роутера
route del default gw 192.168.1.1 dev eth2 №собственно убиваем дефолтоут
route add default gw 192.168.254.6 dev tun0 metric 0 #ставим новый дефолтроут на впн
ip route add 192.168.2.0/24 src 192.168.2.2 dev eth1 table inet1
ip route add default via 192.168.2.1 dev eth1 table inet1
ip rule add from 192.168.2.2 table inet1
#ip rule add fwmark 2 table inet1
ip route add 192.168.1.0/24 src 192.168.1.2 dev eth2 table inet2
ip route add default via 192.168.1.1 dev eth2 table inet2
ip rule add from 192.168.1.2 table inet2
#ip rule add fwmark 3 table inet2
ip route add 192.168.254.0/24 src 192.168.254.6 dev tun0 table inet3
ip route add default via 192.168.254.6 dev tun0 table inet3
ip rule add from 192.168.254.6 table inet3
#ip rule add fwmark 4 table inet3
ip route add 192.168.0.0/24 dev eth0 src 192.168.0.221 table inet1
ip route add 192.168.0.0/24 dev eth0 src 192.168.0.221 table inet2
#ip route add 192.168.0.0/24 dev eth0 src 192.168.0.221 table inet3
ip route add 89.239.a.a via 192.168.2.1 dev eth1
ip route add 89.250.b.b via 192.168.1.1 dev eth2
ip route flush cache
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth1 -j MASQUERADE
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth2 -j MASQUERADE
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o tun0 -j MASQUERADE
после всех этих действий есть инет через впн, можно пинговать со всех провайдеров, ftp работает только на роутере,
не работает ни один проброс! (это критично)
причем tcpdump показывает что пакеты вроде как приходят и вроде как уходят, (ну например когда по рдп коннект идет) но ничего не происходит!
мозги кипят:) вроде понятно что все просто, но уже не понятно где именно:)
поэтому и прошу помощи

задавайте вопросы, выложу конфиги какие надо