Разделить 2 интернет канала на одном устройстве

Настройка сетевых служб, маршрутизации, фаерволлов. Проблемы с сетевым оборудованием.
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Аватара пользователя
k0ma
сержант
Сообщения: 217
Зарегистрирован: 2010-12-07 8:13:09
Откуда: Глубоко в Сибири

Разделить 2 интернет канала на одном устройстве

Непрочитанное сообщение k0ma » 2015-07-10 11:20:44

День добрый, есть Фря 10х64 на ней настроен mpd5 который поднимает соединение vpn от местного провайдера и работает еще как сервер чтобы пускать в мир пару ребят по средством vpn. С недавних пор появился в нашем "ауле" МТС 3г, настроил ppp соединение на данной машине. Сейчас встала задача Статически разделить ребят кто через какой канал ходит. Посоветовали почитать в сторону нескольких таблиц маршрутизации (setfib) и форвардинг адресов на МТС. Начал читать про fib, ядро пересобрал, фиб появился, работает, но немогу во вторую таблицу добавить дефолтовый роут.

Код: Выделить всё

 # cat /etc/rc.conf |grep setfib
setfib0_enable="YES"
setfib0_defaultroute="192.168.100.1"
setfib1_enable="YES"
setfib1_defaultroute="10.0.0.2"
Так не работает.

Код: Выделить всё

#cat /etc/ppp/ppp.conf
mts_3g:
   set device /dev/cuaU0.1
   set speed 921600
   enable force-scripts
   set phone "*99#"
   ........
   #add! default HISADDR
   setfib 1 add! default HISADDR
Х3, листинга точного не нашел, но и так не помогает. В общем завис на добавлении дефолтовго маршрута на 2ую таблицу маршрутизации. Подскажите где почитать либо что где прописать.
:bn:

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/


Аватара пользователя
k0ma
сержант
Сообщения: 217
Зарегистрирован: 2010-12-07 8:13:09
Откуда: Глубоко в Сибири

Разделить 2 интернет канала на одном устройстве

Непрочитанное сообщение k0ma » 2015-07-10 20:32:10

Благодарю, но я думал будут готовые решения... =)
:bn:

Гость
проходил мимо

Разделить 2 интернет канала на одном устройстве

Непрочитанное сообщение Гость » 2015-07-10 21:22:10

готовые по типу сделайте "за меня для меня" ? это точно не unixway и не на этом форуме

Аватара пользователя
k0ma
сержант
Сообщения: 217
Зарегистрирован: 2010-12-07 8:13:09
Откуда: Глубоко в Сибири

Разделить 2 интернет канала на одном устройстве

Непрочитанное сообщение k0ma » 2015-07-13 7:19:05

Доброго времени суток.
Сделал 2 таблицы маршрутизации, дефолтовые шлюзы для каждой таблицы свои. все хорошо.
Пинги идут от обеих таблиц.
Начал редактировать правила для ipfw и синтаксис немного не понятен.

Код: Выделить всё

setfib 0 ip from any to any via bce0
setfib 0 ip from 1.2.3.4 to any
setfib 0 ip from any to 1.2.3.4
setfib 1 ip from any to any via bce1
setfib 1 ip from 5.6.7.8 to any
setfib 1 ip from any to 5.6.7.8
allow tcp from 5.6.7.8 to any established out via bce1
allow tcp from any to 5.6.7.8 established in via bce1
allow ip from any to any frag via bce1
allow tcp from 5.6.7.8 to any setup
allow udp from 5.6.7.8 to any keep-state
allow udp from 5.6.7.8 to any dst-port 53 keep-state
allow udp from 5.6.7.8 to any dst-port 123 keep-state
allow icmp from 5.6.7.8 to any out via bce1
allow icmp from any to 5.6.7.8 in via bce1
Сперва я писал так

Код: Выделить всё

setfib 0 allow all from 1.2.3.4 to any
setfib 0 allow all from any to 1.2.3.4
setfib 1 allow all from 5.6.7.8 to any
setfib 1 ip from any to 5.6.7.8
Вобщем не совсем понятно как через ipfw разделить трафик, есть 2 адреса 192.168.10.1 и 192.168.10.2.
Необходимо чтобы 10.1 ходил в мире через 1.2.3.4, а 10.2 ходил в мир через 5.6.7.8. Подскажите синтаксис.
Так же имееться ipnat.

Код: Выделить всё

map tun0 from 192.168.10.12/32 to any -> 5.6.7.8/32
Верно?
:bn:

Аватара пользователя
k0ma
сержант
Сообщения: 217
Зарегистрирован: 2010-12-07 8:13:09
Откуда: Глубоко в Сибири

Разделить 2 интернет канала на одном устройстве

Непрочитанное сообщение k0ma » 2015-07-14 12:40:22

Ребят ну пожалуйста, подскажите че куда дальше шевелиться?тернистый этот unixway...
:bn:

Аватара пользователя
k0ma
сержант
Сообщения: 217
Зарегистрирован: 2010-12-07 8:13:09
Откуда: Глубоко в Сибири

Разделить 2 интернет канала на одном устройстве

Непрочитанное сообщение k0ma » 2015-07-21 11:46:42

Добился результата 1 раз, все было!
Сейчас все пропало, хотя ничего не менял, просто вечером заработало и на следующий день все ушло...
Это Мтс коннект, пашет все отлично, сигнал есть, пинги от машины в мире через МТС идут.

Код: Выделить всё

root@router:/usr/home/koma # setfib 1 ping 8.8.8.8
PING 8.8.8.8 (8.8.8.8): 56 data bytes
64 bytes from 8.8.8.8: icmp_seq=0 ttl=42 time=1926.071 ms
64 bytes from 8.8.8.8: icmp_seq=1 ttl=42 time=1095.049 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=42 time=993.173 ms
64 bytes from 8.8.8.8: icmp_seq=3 ttl=42 time=932.735 ms
^C
--- 8.8.8.8 ping statistics ---
5 packets transmitted, 4 packets received, 20.0% packet loss
round-trip min/avg/max/stddev = 932.735/1236.757/1926.071/402.181 ms
root@router:/usr/home/koma # setfib 0 ping 8.8.8.8
PING 8.8.8.8 (8.8.8.8): 56 data bytes
64 bytes from 8.8.8.8: icmp_seq=0 ttl=56 time=598.920 ms
64 bytes from 8.8.8.8: icmp_seq=1 ttl=56 time=595.456 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=56 time=599.332 ms
^C
--- 8.8.8.8 ping statistics ---
4 packets transmitted, 3 packets received, 25.0% packet loss
round-trip min/avg/max/stddev = 595.456/597.903/599.332/1.738 ms

Код: Выделить всё

tun0: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> metric 0 mtu 1500
        options=80000<LINKSTATE>
        inet 10.162.16.122 --> 10.0.0.2 netmask 0xffffff00 
        nd6 options=21<PERFORMNUD,AUTO_LINKLOCAL>
        Opened by PID 21521
Вот настройки для ipfw, 192.168.1.14 это клиент, который должен идти в мир через МТС.

Код: Выделить всё

#mts
#MTSconnect 3G
${ipfw} 50 setfib 1 all from any to any via tun0
${ipfw} 50 setfib 1 all from 10.0.0.2 to any via tun0
${ipfw} 50 setfib 1 all from any to 10.0.0.1 via tun0
${ipfw} 50 allow all from 10.0.0.2 to any established out via tun0
${ipfw} 50 allow all from any to 10.0.0.2 established in via tun0
${ipfw} 50 allow all from any to any frag via tun0
${ipfw} 50 allow tcp from 10.0.0.2 to any setup
${ipfw} 50 allow udp from 10.0.0.2 to any keep-state
${ipfw} 50 allow all from 192.168.1.14 to any keep-state via tun0
С машины я вижу клиента, и от клиента меня тоже видно, шлюз у клиента по дефолту я (192.168.10.1)

Код: Выделить всё

root@router:/usr/home/koma # ping 192.168.1.14
PING 192.168.1.14 (192.168.1.14): 56 data bytes
64 bytes from 192.168.1.14: icmp_seq=0 ttl=64 time=0.493 ms
^C
--- 192.168.1.14 ping statistics ---
1 packets transmitted, 1 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 0.493/0.493/0.493/0.000 ms

Код: Выделить всё

ubuntu user # netstat -rn
Таблица маршутизации ядра протокола IP
Destination Gateway Genmask Flags MSS Window irtt Iface
0.0.0.0         0.0.0.0         0.0.0.0         U         0 0          0 ppp0
172.17.12.0     0.0.0.0         255.255.252.0   U         0 0          0 eth0
172.17.15.252   0.0.0.0         255.255.255.255 UH        0 0          0 eth0
172.17.15.252   0.0.0.0         255.255.255.255 UH        0 0          0 eth0
192.168.10.1    0.0.0.0         255.255.255.255 UH        0 0          0 ppp0
Таблицы маршрутизации 2

Код: Выделить всё

root@router:/usr/home/koma # setfib 0 netstat -rn | grep default
default            192.168.100.1      UGS         ng0
root@router:/usr/home/koma # setfib 1 netstat -rn | grep default
default            10.0.0.2           UGS        tun0
Подскажите куда еще посмотреть чтобы ОНО заработало.
Еще бывает проблема, что после перезагрузки в 0 таблицу подставляется 10.0.0.2 и в 1 таблицу тоже, и его каждый раз надо удалять руками, подскажите как это побороть?

Код: Выделить всё

#cat /etc/rc.conf
defaultrouter="192.168.100.1" - дефолтовый маршрут для самой фря и для 0 таблицы маршрутизации.
#2oi gateway
#setfib0_enable="YES"
#setfib0_defaultrouter="192.168.100.1"
setfib1_enable="YES"
setfib1_defaultrouter="10.0.0.2"
Может неверно пишу?
если посмотреть tcpdump в сторону tun0 или ng1, я вижу только запросы до мира, но в тунеле ничего не вижу...

Код: Выделить всё

root@router:/usr/home/koma # setfib 1 tcpdump -i tun0
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on tun0, link-type NULL (BSD loopback), capture size 65535 bytes
^C
0 packets captured
0 packets received by filter
0 packets dropped by kernel
root@router:/usr/home/koma # setfib 1 tcpdump -i ng1
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on ng1, link-type NULL (BSD loopback), capture size 65535 bytes
16:37:43.657515 IP 192.168.1.14 > google-public-dns-a.google.com: ICMP echo request, id 3013, seq 20, length 64
16:37:44.665203 IP 192.168.1.14 > google-public-dns-a.google.com: ICMP echo request, id 3013, seq 21, length 64
16:37:45.673101 IP 192.168.1.14 > google-public-dns-a.google.com: ICMP echo request, id 3013, seq 22, length 64
16:37:46.680040 IP 192.168.1.14 > google-public-dns-a.google.com: ICMP echo request, id 3013, seq 23, length 64
16:37:47.688166 IP 192.168.1.14 > google-public-dns-a.google.com: ICMP echo request, id 3013, seq 24, length 64
16:37:48.695833 IP 192.168.1.14 > google-public-dns-a.google.com: ICMP echo request, id 3013, seq 25, length 64
16:37:49.706102 IP 192.168.1.14 > google-public-dns-a.google.com: ICMP echo request, id 3013, seq 26, length 64
16:37:50.707465 IP 192.168.1.14 > google-public-dns-a.google.com: ICMP echo request, id 3013, seq 27, length 64
16:37:51.708034 IP 192.168.1.14 > google-public-dns-a.google.com: ICMP echo request, id 3013, seq 28, length 64
16:37:52.715879 IP 192.168.1.14 > google-public-dns-a.google.com: ICMP echo request, id 3013, seq 29, length 64
^C
10 packets captured
10 packets received by filter
0 packets dropped by kernel
Я с клиента подключаю vpn соединение, получаю адрес 192.168.1.14 и пингую 8.8.8.8 и tcpdump'om я вижу только в тунеле от машины до клиента, а дальше ната нету.

Отправлено спустя 12 минут 16 секунд:
Этот нат сейчас.

Код: Выделить всё

root@router:/usr/home/koma # ipnat -l |grep 192.168.1.14
map tun0 from 192.168.1.14/32 to 0/0 -> 10.162.16.122/32
Вчера когда все БЫЛО, было виндо, что я натил 192.168.1.14 в мир на 8.8.8.8 через этот же адрес 10.162.16.122/32,а сегодня не натит...
Более того, я с клиента 192.168.1.14 вижу адрес МТС коннекта - 10.162.16.122/32.
:bn:

Аватара пользователя
trubb
лейтенант
Сообщения: 865
Зарегистрирован: 2005-03-16 17:42:26
Откуда: сами мы не местные, приехали на лечение

Разделить 2 интернет канала на одном устройстве

Непрочитанное сообщение trubb » 2015-07-21 12:04:43

ща тебе посоветуют купить железку от Cisco )))
иГрАюВсТрАйКбОл!

Аватара пользователя
k0ma
сержант
Сообщения: 217
Зарегистрирован: 2010-12-07 8:13:09
Откуда: Глубоко в Сибири

Разделить 2 интернет канала на одном устройстве

Непрочитанное сообщение k0ma » 2015-07-21 15:11:19

Ребят, подскажите что прописать в /etc/ppp/ppp.conf
чтобы дефолтовый маршрут который дается мне после подключения tun0 шел в setfib 1 а не в setfib 0?
Либо как указать в rc.conf что я имею ввиду tun0 когда пишу там

Код: Выделить всё

setfib1_enable="YES"
setfib1_defaultroute="10.0.0.2"
Вобщем когда я запускаю тачку, у меня в setfib 0 указывается 2 маршрута, основной и 10.0.0.2 от ppp (tun0).
а в setfib 1 падает тоже шлюз 10.0.0.2 но для vlan20.

Код: Выделить всё

root@router:/usr/home/koma # ifconfig vlan20
vlan20: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
        options=3<RXCSUM,TXCSUM>
        ether 00:19:db:f2:ab:d6
        inet 10.0.0.253 netmask 0xffffff00 broadcast 10.0.0.255 
        nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>
        media: Ethernet autoselect (100baseTX <full-duplex>)
        status: active
        vlan: 20 parent interface: re0
Вот конфиг ррр

Код: Выделить всё

root@router:/usr/home/koma # cat /etc/ppp/ppp.conf
default:
   set log Phase Chat LCP IPCP CCP tun command
   ident user-ppp VERSION

   # Ensure that "device" references the correct serial port
   # for your modem. (cuau0 = COM1, cuau1 = COM2)
   #
   set device /dev/cuau1
   set speed 115200
   set dial "ABORT BUSY ABORT NO\\sCARRIER TIMEOUT 5 \
   \"\" AT OK-AT-OK ATE1Q0 OK \\dATDT\\T TIMEOUT 40 CONNECT"
   set timeout 180                        # 3 minute idle timer (the default)
   enable dns                             # request DNS info (for resolv.conf)
mts_3g:
   set device /dev/cuaU0.1
   set speed 921600
   enable force-scripts
   set phone "*99#"
   set authname mts
   set authkey mts
   disable pap
   disable chap
   disable ipv6
   set dial "ABORT BUSY ABORT NO\\sCARRIER TIMEOUT 5 \
   \"\" AT OK-AT-OK ATE1Q0 OK \
   AT OK-AT-OK \
   AT+CPBS=\\\"SM\\\" OK \
   AT+CGDCONT=1,\\\"IP\\\",\\\"internet.mts.ru\\\" OK \
   \\dATDT\\T TIMEOUT 60 CONNECT"
   set login
   # set timeout 30
   enable dns
   resolv rewrite
   set ifaddr 10.0.0.1/0 10.0.0.2/0 255.255.255.0 0.0.0.0
   add! default HISADDR
   #setfib1 add! default HISADDR 
Интересует строка add! default HISADDR надо чтобы данная строка падала в setfib1 а не в setfib0
:bn:

Аватара пользователя
k0ma
сержант
Сообщения: 217
Зарегистрирован: 2010-12-07 8:13:09
Откуда: Глубоко в Сибири

Разделить 2 интернет канала на одном устройстве

Непрочитанное сообщение k0ma » 2015-07-24 13:35:14

Ребят я почитал тути моя ситуация похожа на пример 5, там тоже одна сеть локальная и 2 мира, надо разделить между людьми в сети. В примере 5 там просто делиться 2 канала на 50\50 между одной локалкой правилами:

Код: Выделить всё

add 1010 prob 0.5 skipto 1060 ip from any to any in recv fxp0 - пропускает 50% сети в setfib1
add 1040 setfib 0 ip from any to any in recv fxp0 keep-state - принадлежат адреса приходящие с fxp0 ( 50%)
add 1050 allow ip from any to any via fxp0 
add 1060 setfib 1 ip from any to any in recv fxp0 keep-state - принадлежат адреса приходящие с fxp0 ( вторые 50%)
add 1070 allow ip from any to any via fxp0
А мне надо статически поделить пользователей, только определенный адрес 192.168.1.14 должен идти "налево", все остальные пойдут "направо", пожалуйста подскажите как мне поделить их между 2мя таблицами, вот и все, я думаю дальше разберусь.
:bn:

Гость
проходил мимо

Разделить 2 интернет канала на одном устройстве

Непрочитанное сообщение Гость » 2015-07-24 18:55:45

вот того кто вам подсказал насчет ipfw+fib, тот пусть и помогает
а я сразу вас направлю на нужный и правильный путь
pf nat pbr freebsd
вбиваете в гугл и сразу первая ссылка
https://forums.freebsd.org/threads/pf-2-nat.21623/

Аватара пользователя
k0ma
сержант
Сообщения: 217
Зарегистрирован: 2010-12-07 8:13:09
Откуда: Глубоко в Сибири

Разделить 2 интернет канала на одном устройстве

Непрочитанное сообщение k0ma » 2015-07-29 7:56:50

даже на сайте лисяры написано что ipfw может все сам сделать, и разрулить и натить, и запретить и разрешить, зачем мне щас про pf pbr читать?
У меня сейчас такая проблема что я подымаю две vpn'ки и надо между ними делить еще vpn'ки, допустим мне надо чтобы адреса 192.168.10.0.24 уходили в мир через ng0(192.168.100.22), а пользователь 192.168.1.14 ходил в мире через ng1(1.1.1.1) адрес постоянный.
У меня получилось разграничить пользователей по 2ум каналам через ipnat, просто говорю что один натиться через один адрес, другой через другой адрес, но ведь это не камельфо, каждый раз для всех свой НАТ. Проще и логичнее добавить тех кто мне нужен в setfib1 и посылать их сразу в другой канал. Подскажите как эту выборку сделать? именно определенный адрес добавить в определенный setfib.
У меня нету ничего кроме Freebsd10.1+mpd5, все впнки подымаются на mpd5, load pptp_server, load pptp_client, load mts_3g. Надо все разрулить только через ipfw +mpd5+setfib. Не надо советовать мне ваш pf!

Отправлено спустя 4 минуты 52 секунды:
Пробывал словить адрес так

Код: Выделить всё

${ipfw} setfib 0 ip from any to any via ng0
${ipfw} setfib 1 ip from any to any via ng1      
${ipfw} setfib 1 ip from 192.168.1.14 to any
${ipfw} setfib 1 ip from any to 192.168.1.14
верно или совершенно не так он ловиться?
Или все от меня к 192.168.1.14 ?
:bn:

Гость
проходил мимо

Разделить 2 интернет канала на одном устройстве

Непрочитанное сообщение Гость » 2015-07-29 17:54:17

затем что в ipfw это все сделали раком, что в новом что в старом

а в pf это делается 1-3 строчками, во всех версиях