Страница 1 из 1
И снова два провайдера..
Добавлено: 2009-11-05 17:35:05
Candyman
Добрый день, коллеги.
Обращаюсь к вам с просьбой помочь, потому что сам запутался и кручусь вокруг да около, не приходя к решению.
Вот собственно описание задачи:
Есть два провайдера, один - укртелеком, пользователи ходят через него в интернет (MPD5), другой - лимитированный по трафику Голден Телеком с постоянным адресо, раньше все ходили через него, но после десятка разбирательств кто что скачал решили перейти на безлимитный укртелеком, но с голденом не расстались, потому что на нем висит сайт и т.п.
Задача моя состоит в том, чтобы все ходили через одного провайдера, но в то же время должен быть доступен сайт, FTP, SSH и прочее, что привязано в постоянному адресу (у укретекома динамика).
С первой частью я справился, сделал через MPD5 и kernel nat:
Код: Выделить всё
00100 156472 10534488 allow ip from any to any via lo0
00200 0 0 deny ip from any to 127.0.0.0/8
00300 0 0 deny ip from 127.0.0.0/8 to any
01040 9705305 4924288499 allow ip from any to any via vr0
01050 0 0 deny ip from any to 192.168.0.0/16 in recv ng0
01060 0 0 deny ip from 192.168.0.0/16 to any in recv ng0
01070 0 0 deny ip from any to 172.16.0.0/12 in recv ng0
01080 1 159 deny ip from 172.16.0.0/12 to any in recv ng0
01090 0 0 deny ip from any to 10.0.0.0/8 in recv ng0
10100 50 2312 deny ip from 10.0.0.0/8 to any in recv ng0
10110 0 0 deny ip from any to 169.254.0.0/16 in recv ng0
10120 0 0 deny ip from 169.254.0.0/16 to any in recv ng0
10125 26 1300 allow tcp from any to me dst-port 22 via ng0
10130 553245 55343790 nat 1 ip from 192.168.0.0/24 to any via ng0
10131 1493610 1088856277 nat 1 ip from any to 95.133.104.112 via ng0
65535 187082 12116965 deny ip from any to any
Но пытаясь добавлять правила для голдена, не могу доступиться извне ни по http, ни по ftp, ни по ssh..
Посоветуйте мне набор правил для реализации такой задачи.
Заранее благодарен.
Re: И снова два провайдера..
Добавлено: 2009-11-05 17:53:29
---nebo---
дайте
1)
2) адресацию внутри сети + адреса серверов, к торомым должен быть доступ
Re: И снова два провайдера..
Добавлено: 2009-11-05 18:30:07
Larin
а в чем собственно проблема?
разреши в фаерволе ssh(и что тебе там нужно) по интерфейсу голедн телекома
Re: И снова два провайдера..
Добавлено: 2009-11-05 18:34:28
Candyman
Код: Выделить всё
vr0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
options=2808<VLAN_MTU,WOL_UCAST,WOL_MAGIC>
ether 00:13:46:eb:56:35
inet 192.168.0.156 netmask 0xffffff00 broadcast 192.168.0.255
media: Ethernet autoselect (100baseTX <full-duplex>)
status: active
rl0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
options=8<VLAN_MTU>
ether 00:e0:4c:16:9d:e0
inet 192.168.1.2 netmask 0xffffff00 broadcast 192.168.1.255
media: Ethernet autoselect (100baseTX <full-duplex>)
status: active
fxp0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
options=2009<RXCSUM,VLAN_MTU,WOL_MAGIC>
ether 00:13:20:d6:d2:d7
inet 62.64.79.174 netmask 0xfffffffc broadcast 62.64.79.175
media: Ethernet autoselect (100baseTX <full-duplex>)
status: active
plip0: flags=108810<POINTOPOINT,SIMPLEX,MULTICAST,NEEDSGIANT> metric 0 mtu 1500
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> metric 0 mtu 16384
inet6 fe80::1%lo0 prefixlen 64 scopeid 0x5
inet6 ::1 prefixlen 128
inet 127.0.0.1 netmask 0xff000000
ng0: flags=88d1<UP,POINTOPOINT,RUNNING,NOARP,SIMPLEX,MULTICAST> metric 0 mtu 1460
inet 95.133.104.112 --> 195.5.5.185 netmask 0xffffffff
fxp0 - лимитированный, на котором висит сайт и т.п., rl0 смотрит на модем, vr0 - на локальную сеть.
Внутри сети (vr0) - 192.168.0.0/24, на интерфейсе, который идет к укртелекомовскому модему (rl0) - 192.168.1.0/24, на интерфейсе от голдена (fxp0) - 62.64.79.174/29.
Вотъ.
Re: И снова два провайдера..
Добавлено: 2009-11-05 18:35:20
Candyman
Larin писал(а):а в чем собственно проблема?
разреши в фаерволе ssh(и что тебе там нужно) по интерфейсу голедн телекома
А куда правила добавлять?
После ната или перед?
Логика говорит, что после, но в данном случае она не сработала)
Re: И снова два провайдера..
Добавлено: 2009-11-05 18:43:21
schizoid
сайт, фтп и т.д. на этом же сервере, или на сервере внутри сети?
Re: И снова два провайдера..
Добавлено: 2009-11-05 18:44:03
Candyman
Все на одной машине.
Re: И снова два провайдера..
Добавлено: 2009-11-05 18:46:13
Larin
Candyman писал(а):Larin писал(а):а в чем собственно проблема?
разреши в фаерволе ssh(и что тебе там нужно) по интерфейсу голедн телекома
А куда правила добавлять?
После ната или перед?
Логика говорит, что после, но в данном случае она не сработала)
у тебя же нат на укртелекоме. пакеты с голдентелекомовского интерфейса не причем...
Код: Выделить всё
ipfw add allow tcp from any to me 22 in via fxp0
Re: И снова два провайдера..
Добавлено: 2009-11-05 21:26:01
Candyman
Larin писал(а):Candyman писал(а):Larin писал(а):а в чем собственно проблема?
разреши в фаерволе ssh(и что тебе там нужно) по интерфейсу голедн телекома
А куда правила добавлять?
После ната или перед?
Логика говорит, что после, но в данном случае она не сработала)
у тебя же нат на укртелекоме. пакеты с голдентелекомовского интерфейса не причем...
Код: Выделить всё
ipfw add allow tcp from any to me 22 in via fxp0
Пробовал, не работает..
Вроде руки прямые, но что-то явно пошло не так(
Может я где-то в принципе ошибаюсь?
Re: И снова два провайдера..
Добавлено: 2009-11-05 21:47:26
terminus
Вам надо смотреть в сторону использования двух таблиц маршрутизации. Если сейчас у вас default route прописан через Украину ng0 то соединения пришедшие от Голден телеком назад попруться через default route.
Настройте default route (defaultrouter в rc.conf) так чтобы он шел через голден, а для соединений инициированных от клиентов из локальной сети (которые надо натить через Украину) пропишите вторую таблицу где стоит Украинский default route через ng0.
Код: Выделить всё
ipfw add setfib 1 ip from any to any in recv vr0
ipfw add allow ip from any to any via vr0
ipfw nat 1 config log if fxp0 same_ports reset deny_in redirect_port tcp 127.0.0.1:80 80 redirect_port tcp 127.0.0.1:22 22
ipfw nat 2 config log if ng0 same_ports reset deny_in
ipfw add nat 1 ip from any to any via fxp0
ipfw add nat 2 ip from any to any via ng0
Это как пример-образец. Если нет желания, то от nat 1, который прикрывает интерфейс смотрящий в голден, можно отказаться...
Re: И снова два провайдера..
Добавлено: 2009-11-05 22:05:02
Candyman
Спасибо, попробую, когда завтра на работу попаду. Сделал бы и сейчас, но ssh-то нет)
Re: И снова два провайдера..
Добавлено: 2009-11-06 10:42:25
schizoid
ну по ssh такие вещи мутить...можно сервак потерять
Re: И снова два провайдера..
Добавлено: 2009-11-16 22:57:54
Candyman
Короче говоря, сейчас конфиг такой:
Код: Выделить всё
01040 9267 2859323 setfib 0 ip from any to any via vr0 keep-state
01050 7180 2510270 allow ip from any to any via vr0
01060 0 0 setfib 1 ip from any to any via vr0 keep-state
01070 0 0 allow ip from any to any via vr0
01080 0 0 deny ip from any to 192.168.0.0/16 in recv ng0
01081 0 0 deny ip from any to 192.168.0.0/16 in recv fxp0
01090 0 0 deny ip from 192.168.0.0/16 to any in recv ng0
01091 0 0 deny ip from 192.168.0.0/16 to any in recv fxp0
10100 0 0 deny ip from any to 172.16.0.0/12 in recv ng0
10101 0 0 deny ip from any to 172.16.0.0/12 in recv fxp0
10110 0 0 deny ip from 172.16.0.0/12 to any in recv ng0
10111 0 0 deny ip from 172.16.0.0/12 to any in recv fxp0
10120 0 0 deny ip from any to 10.0.0.0/8 in recv ng0
10121 0 0 deny ip from any to 10.0.0.0/8 in recv fxp0
10130 0 0 deny ip from 10.0.0.0/8 to any in recv ng0
10131 0 0 deny ip from 10.0.0.0/8 to any in recv fxp0
10140 0 0 deny ip from any to 169.254.0.0/16 in recv ng0
10141 0 0 deny ip from any to 169.254.0.0/16 in recv fxp0
10150 0 0 deny ip from 169.254.0.0/16 to any in recv ng0
10151 0 0 deny ip from 169.254.0.0/16 to any in recv fxp0
10170 5354 1858755 nat 1 ip from any to any via ng0
10171 3027 1493026 setfib 0 ip from any to any in recv ng0
10200 142 5912 nat 2 ip from any to any via fxp0
10201 78 3352 setfib 1 ip from any to any in recv fxp0
10220 6200 1912573 allow ip from any to any
65535 14 4186 deny ip from any to any
Кроме этого в rc.conf:
Код: Выделить всё
setfib1_enable="YES"
setfib1_defaultroute="62.64.79.174"
Просматриваю таблицы маршрутов:
Код: Выделить всё
[root@etf /home/asm]# setfib 0 netstat -rn
Routing tables
Internet:
Destination Gateway Flags Refs Use Netif Expire
default 195.5.5.185 UGS 0 2480 ng0
11.22.33.0/24 link#2 UC 0 0 rl0
62.64.79.172/30 link#3 UC 0 0 fxp0
62.64.79.174 00:13:20:d6:d2:d7 UHLW 1 9 lo0
127.0.0.1 127.0.0.1 UH 0 387 lo0
192.168.0.0/24 link#1 UC 0 0 vr0
192.168.0.32 00:1c:c0:c7:b6:14 UHLW 1 4017 vr0 1184
192.168.0.39 00:13:ce:16:5c:98 UHLW 1 209 vr0 1162
192.168.0.100 00:1c:c0:73:b0:80 UHLW 1 17 vr0 1178
192.168.0.156 00:13:46:eb:56:35 UHLW 1 1 lo0
192.168.0.255 ff:ff:ff:ff:ff:ff UHLWb 1 28 vr0
195.5.5.185 95.133.168.246 UH 1 0 ng0
Internet6:
Destination Gateway Flags Netif Expire
::1 ::1 UHL lo0
fe80::%lo0/64 fe80::1%lo0 U lo0
fe80::1%lo0 link#5 UHL lo0
ff01:5::/32 fe80::1%lo0 UC lo0
ff02::%lo0/32 fe80::1%lo0 UC lo0
Код: Выделить всё
[root@etf /home/asm]# setfib 1 netstat -rn
Routing tables
Internet:
Destination Gateway Flags Refs Use Netif Expire
default 62.64.79.174 UGS 0 64 fxp0
11.22.33.0/24 link#2 UC 0 0 rl0
62.64.79.172/30 link#3 UC 0 0 fxp0
62.64.79.174 00:13:20:d6:d2:d7 UHLW 2 1 lo0
127.0.0.1 127.0.0.1 UH 0 0 lo0
192.168.0.0/24 link#1 UC 0 0 vr0
192.168.0.32 00:1c:c0:c7:b6:14 UHLW 1 0 vr0 1168
192.168.0.39 00:13:ce:16:5c:98 UHLW 1 0 vr0 1146
192.168.0.100 00:1c:c0:73:b0:80 UHLW 1 0 vr0 1162
195.5.5.185 95.133.168.246 UH 0 0 ng0
Internet6:
Destination Gateway Flags Netif Expire
::1 ::1 UHL lo0
fe80::%lo0/64 fe80::1%lo0 U lo0
fe80::1%lo0 link#5 UHL lo0
ff01:5::/32 fe80::1%lo0 UC lo0
ff02::%lo0/32 fe80::1%lo0 UC lo0
Смотрел уже tcpdump'ом, вижу, что запрос приходит, но ответа нет..(
Есть идеи где я ошибаюсь?
Re: И снова два провайдера..
Добавлено: 2009-11-16 23:45:12
terminus
Вам как надо было сделать - чтобы юзеры шли через Украину а все остальное шло через голдентелеком?
Вы настроили:
195.5.5.185 как гейтвей для таблицы 0 (Украина)
62.64.79.174 как гейтвей для таблицы 1 (Голдентелеком)
Неправельно!
Надо чтобы голден был маршрут по умолчанию в таблице 0, а Украина в талице 1!
Тогда эти правила (при условии что net.inet.ip.fw.one_pass=1):
Код: Выделить всё
# fib 0 / fxp0 / nat 1 - RU
# fib 1 / ng0 / nat 2 - UA
ipfw add setfib 1 ip from any to any in recv vr0
ipfw add allow ip from any to any via vr0
ipfw nat 1 config log if fxp0 same_ports reset deny_in redirect_port tcp 127.0.0.1:80 80
ipfw nat 2 config log if ng0 same_ports reset deny_in
ipfw add nat 1 ip from any to any via fxp0
ipfw add nat 2 ip from any to any via ng0
ipfw add deny all from any to any
дадут то, что трафик приходящий из внутренней сети через vr0 будет помечаться на использование fib 1 на которой весит Украинский провайдер и будет ходить через ng0, через нат 2 - через Украину.
В то же самое время когда на сервер придет соединение на 80 порт оно пройдет через нат и будет принято апачем. Когда апач станет слать страфик назад, он сделает это используя таблицу маршрутизации по-умолчанию fib 0 - и тогда трафик уйдет назад через fxp0, через нат 1 - через Голден.
И зачем вы там навешали keep-state'ов?

Ненадо их. Сделайте чтобы в rc.conf были прописаны настройки относящиеся к голден телеком, а setfib1 настройте для линка поднимаегого MPD:
Код: Выделить всё
setfib1_enable="YES"
setfib1_defaultroute="195.5.5.185"
ifconfig_fxp0="inet 62.64.79.172 netmask 255.255.255.254"
defaultrouter="62.64.79.174"
У вас в MPD статические или динамические адреса прописаны? Если статические то просто не прописывайте там в настройках default gateway иначе он станет пытаться вешать его на fib 0. Этот default gateway будет устанавливаться через setfib1_defaultroute="195.5.5.185"
Re: И снова два провайдера..
Добавлено: 2009-11-17 0:22:55
GRooVE
дайте вывод
может там восьмерка

Re: И снова два провайдера..
Добавлено: 2009-11-17 1:37:30
Candyman
GRooVE писал(а):дайте вывод
может там восьмерка

Код: Выделить всё
FreeBSD etf.com.ua 7.2-RELEASE-p3 FreeBSD 7.2-RELEASE-p3 #3: Sat Aug 29 02:09:37 EEST 2009 root@etf.com.ua:/usr/obj/usr/src/sys/ETF i386