URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 56246
[ Назад ]

Исходное сообщение
"GRE тунель - не все в него "

Отправлено Alex , 06-Май-05 16:09 
У меня FreeBSD и GRE туннель к спутниковому провайдеру. Как мне настроить чтобы веб-трафик ходил по спутнику, а остальное шло по наземному каналу?

спасибо


Содержание

Сообщения в этом обсуждении
"GRE тунель - не все в него "
Отправлено Bushi , 06-Май-05 17:50 
>У меня FreeBSD и GRE туннель к спутниковому провайдеру. Как мне настроить
>чтобы веб-трафик ходил по спутнику, а остальное шло по наземному каналу?
>
>
>спасибо

У меня сделано следующим образом. Поднят gre, но default route указывает на наземный канал. A в ipfw добавлено правило:

forward 192.168.253.253 ip from 192.168.203.54 to any xmit ng0 out,

где 192.168.253.253 - удаленный адрес на gre,
192.168.203.54 - локальный адрес на gre,
ng0 - внешний интерфейс, через который прописан default route.
То есть все ходит через землю, но если у ip-пакета source-ip 192.168.203.54 - то заворачивается в туннель и возвращается через спутник.

Теперь делаем аксесс-лист в squid.conf, например, такой:

tcp_outgoing_address 192.168.203.54 !mynet clients

где mynet - acl, описывающий мою сеть (чтобы ходило напрямую),
clients - клиенты, кого нужно завернуть на спутник.

P.S. в FreeBSD 5.3 есть проблема с правилом fwd ipfw. Трафик не заворачивается, если источник пакета - сама система. Следующий патч исправляет проблему:

Index: ip_output.c
===================================================================
RCS file: /FreeBSD-CVS/src/sys/netinet/ip_output.c,v
retrieving revision 1.225.2.3
diff -u -b -r1.225.2.3 ip_output.c
--- ip_output.c   15 Sep 2004 15:07:09 -0000   1.225.2.3
+++ ip_output.c   19 Sep 2004 15:51:42 -0000
@@ -713,7 +713,7 @@
    /* Or forward to some other address? */
    fwd_tag = m_tag_find(m, PACKET_TAG_IPFORWARD, NULL);
    if (fwd_tag) {
-      if (!in_localip(ip->ip_src) && !in_localaddr(ip->ip_dst)) {
+      if (!in_localaddr(ip->ip_dst)) {
          dst = (struct sockaddr_in *)&ro->ro_dst;
          bcopy((fwd_tag+1), dst, sizeof(struct sockaddr_in));
          m->m_flags |= M_SKIP_FIREWALL;


"GRE тунель - не все в него "
Отправлено Alex , 06-Май-05 19:10 
>
>У меня сделано следующим образом. Поднят gre, но default route указывает на
>наземный канал. A в ipfw добавлено правило:
>
>forward 192.168.253.253 ip from 192.168.203.54 to any xmit ng0 out,
>
>где 192.168.253.253 - удаленный адрес на gre,
>192.168.203.54 - локальный адрес на gre,
>ng0 - внешний интерфейс, через который прописан default route.
>То есть все ходит через землю, но если у ip-пакета source-ip 192.168.203.54
>- то заворачивается в туннель и возвращается через спутник.
>
>Теперь делаем аксесс-лист в squid.conf, например, такой:
>
>tcp_outgoing_address 192.168.203.54 !mynet clients
>
>где mynet - acl, описывающий мою сеть (чтобы ходило напрямую),
>clients - клиенты, кого нужно завернуть на спутник.
>
пожалуйста для тех кто за файрволом
1)В этом случае нужно нат поднимать (дивертить пакеты отдельно от земли)?
2)Если можно укажи как поднимаешь в твоем случае гре тунель
так сказть сколько шагов делаешь ?
Потому как похоже у меня гре тунель работает но по земле...

в общем чуть подробнее....


"GRE тунель - не все в него "
Отправлено Bushi , 06-Май-05 19:30 
>пожалуйста для тех кто за файрволом
>1)В этом случае нужно нат поднимать (дивертить пакеты отдельно от земли)?
Если со сквидом, то не нат не нужен. Если без сквида, то нужен отдельный нат, причем он будет работать на разных интерфейсах (gre на out и dvb на in).
>2)Если можно укажи как поднимаешь в твоем случае гре тунель
>так сказть сколько шагов делаешь ?
>Потому как похоже у меня гре тунель работает но по земле...
У меня не gre, а ipip, но сути это не меняет:

#!/bin/sh
MTU=1500
TUNNEL_SOURCE=1.1.1.1
TUNNEL_DESTINATION=2.2.2.2
IP=192.168.203.54
IP_REMOTE=192.168.253.253

start()
{
  /sbin/ifconfig gif0 create
  /sbin/ifconfig gif0 tunnel $TUNNEL_SOURCE $TUNNEL_DESTINATION
  /sbin/ifconfig gif0 inet $IP/32 $IP_REMOTE
  /sbin/ifconfig gif0 mtu $MTU
  /sbin/ifconfig gif0 up
}

stop()
{
  /sbin/ifconfig gif0 destroy
}

case "$1" in
start)
    start;
    ;;
stop)
    stop;
    ;;
*)
    echo "Usage: `basename $0` {start|stop}" >&2
    ;;
esac

exit 0

Слово gif можно заменить на gre.


"GRE тунель - не все в него "
Отправлено Alex , 06-Май-05 20:26 
ОГРОМНОЕ СПАСИБО ВСЕ ЗАРАБОТАЛО

наплутал в форвардинге :))

Хорошо что есть  у  кого спросить :)


"GRE тунель - не все в него "
Отправлено smartkz , 06-Сен-05 12:49 
>>У меня FreeBSD и GRE туннель к спутниковому провайдеру. Как мне настроить
>>чтобы веб-трафик ходил по спутнику, а остальное шло по наземному каналу?
>>
>>
>>спасибо
>
>У меня сделано следующим образом. Поднят gre, но default route указывает на
>наземный канал. A в ipfw добавлено правило:
>
>forward 192.168.253.253 ip from 192.168.203.54 to any xmit ng0 out,
>
>где 192.168.253.253 - удаленный адрес на gre,
>192.168.203.54 - локальный адрес на gre,
>ng0 - внешний интерфейс, через который прописан default route.
>То есть все ходит через землю, но если у ip-пакета source-ip 192.168.203.54
>- то заворачивается в туннель и возвращается через спутник.
>
>Теперь делаем аксесс-лист в squid.conf, например, такой:
>
>tcp_outgoing_address 192.168.203.54 !mynet clients
>
>где mynet - acl, описывающий мою сеть (чтобы ходило напрямую),
>clients - клиенты, кого нужно завернуть на спутник.
>
>P.S. в FreeBSD 5.3 есть проблема с правилом fwd ipfw. Трафик не
>заворачивается, если источник пакета - сама система. Следующий патч исправляет проблему:
>
>
>Index: ip_output.c
>===================================================================
>RCS file: /FreeBSD-CVS/src/sys/netinet/ip_output.c,v
>retrieving revision 1.225.2.3
>diff -u -b -r1.225.2.3 ip_output.c
>--- ip_output.c   15 Sep 2004 15:07:09 -0000   1.225.2.3
>
>+++ ip_output.c   19 Sep 2004 15:51:42 -0000
>@@ -713,7 +713,7 @@
>    /* Or forward to some other address? */
>
>    fwd_tag = m_tag_find(m, PACKET_TAG_IPFORWARD, NULL);
>    if (fwd_tag) {
>-      if (!in_localip(ip->ip_src) && !in_localaddr(ip->ip_dst)) {
>+      if (!in_localaddr(ip->ip_dst)) {
>          dst = (struct sockaddr_in *)&ro->ro_dst;
>          bcopy((fwd_tag+1), dst,
>sizeof(struct sockaddr_in));
>          m->m_flags |= M_SKIP_FIREWALL;

Здравствуйте.
Подскажите как настроить FreeBSD на спутниковый интернет.
у меня на данный момент FreeBSD 5.3 и пентаофис настроить ни как не могу ..
на мой компьютер настраивая спутниковый интернет все работает без проблем через фри не получаеться.????
На фри через mpd подымаю впн происходит регистрация но как только я меняю шлюз по умолчанию с земного на спутниковый все пинги пропадают и инета нет


"GRE тунель - не все в него "
Отправлено Bushi , 06-Май-05 17:52 
>У меня FreeBSD и GRE туннель к спутниковому провайдеру. Как мне настроить
>чтобы веб-трафик ходил по спутнику, а остальное шло по наземному каналу?
>
>
>спасибо

Можно без сквида, просто сделать так (не забыть про nat):

forward 192.168.253.253 tcp from any to any dst-port 80 xmit ng0 out