LINUX.ORG.RU
ФорумAdmin

ip-up, dnsmasq и netfilter


0

1

Доброе время суток.

Slackware 13.1, kernel 2.6.37. Настраиваю шлюз.

eth1 - WAN, eth0 - LAN; Подключаемся к корбино-билайну по l2tp.

Есть проблемы.

1) Не прописываются маршруты из /etc/ppp/ip-up.d/beeline при вот таких файлах (+x у обоих стоит) и ipparam beeline в настройках l2tp:

# cat /etc/ppp/ip-up.d/beeline

#!/bin/sh
GW=10.42.200.1
route del $5 dev $1
route add -host $5 gw $GW

route add -net 85.21.0.0 netmask 255.255.0.0 gw $GW
route add -net 10.0.0.0 netmask 255.0.0.0 gw $GW

for i in $(grep "^nameserver" /etc/resolv.conf | awk '{print $2}') ; do
   route add -host $i gw $GW
done

route del default
route add default dev ppp0
# cat /etc/ppp/ip-up

#!/bin/sh
if [-x /etc/ppp/ip-up.d/$6 ]; then
   /etc/ppp/ip-up.d/$6 $1 $2 $3 $4 $5
fi

2)в dnsmasq прописал

interface eth0
dhcp-range=192.168.1.50,192.168.1.150,12h

Но не понял, какой IP у моего dns- и dhcp-сервера в локальной сети, где это прописывается? 192.168.1.1 не пингуется...

3)NAT, как я понимаю, включается (в простом случае) маскарадингом пакетов для ppp0? Т.е. для проверки шлюза с ненастроенным фаерволлом (все правила - ACCEPT, грамотная настройка нетфильтра - следующий шаг) достаточно прописать лишь

# iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
?

Как netfilter определяет output interface у пакетов, идущих из локалки на шлюз? Как он отличает транзитный траффик от входящего?

Хотелось бы ссылку на хорошую литературу по netfilter и его грамотной настройке. Если еще и на русском - так вообще замечательно.

1) Попробйте прописать в скриптах полные пути к командам (/sbin/route), хотя, ИМХО, лучше использовать не route, а «ip route add».

Если не поможет, добавляйте в скрипты отладочную печать, допустим: «echo START > /tmp/ip-up.debug.txt»

2) Есть команда netconfig, ещё есть файл rc.inet1.conf. Команда «ip addr show» или «ifconfig» покажет текущие настройки сетевых интерфейсов. Там и узнаете, какой у вас адрес.

3) Поищите в интернете. Есть диаграмма движения пакета, транзитный трафик от входящего отличается по ip-адресу (система знает все свои ip-адреса). Цепочка -t nat POSTROUTING работает после принятия решения по маршрутизации пакета, когда уже известен исходящий адрес.

все правила - ACCEPT

Ещё маршрутизацию нужно разрешить в /proc (через sysctl).

mky ★★★★★ ()

Что то я не совсем понял ваш скрипт. 10.42.200.1 это кто? Он доступен через eth1? Зачем тогда маршруты на него прописывать только при подключнии к ppp? Пропишите их статически, пусть будут всегда.

А «route del $5 dev $1; route add -host $5 gw $GW» это нормально?

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

10.42.200.1 - гейтвей к, в частности, VPN-серверу. Доступен через eth1.
Этапы подключения по VPN к билайну:
1)подключаемся к локалке, получаем некоторые маршруты по DHCP, но не получаем default.
2)прописываем default для eth1, иначе оно не найдет tp.internet.beeline.ru
3)подключаемся. Интернета нет. Для этого надо прописать default для ppp0.
4)Если мы тупо сменим default, то потеряем VPN-сервер, соединение упадет. Поэтому прописываем маршрут к VPN-серверу через eth1 и гейтвей 10.42.200.1, и только затем route add default dev ppp0.

Оно нам надо вместо вот этого маршрута
vpn254-l0.spb.c * 255.255.255.255 UH 0 0 0 ppp0
который получается после установки ppp-соединения. Это вообще какая-то хрень, вот зачем нам маршрут до VPN-сервера через VPN?

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