LINUX.ORG.RU

Сообщения glombert

 

интернет через 2 провайдеров+проброс портов - решение проблемы

Немало помучившись с решением проблемы, публикую результат. Выражаю благодарность Pinkbype и somestuff за оказанную неоценимую помощь. Итак была задача: имеем двух провайдеров. Необходимо обеспечить доступ в интернет из локальной сети и доступ из интернета к нашим ресурсам по портам 21, 80, 8004, 8005. Чтобы упростить задачу были созданы две локальные подсети, работающие каждая через своего провайдера. Весь http-трафик идет через первого провайдера.

Решение. OS - Ubuntu server 10.10 Установлены dnsmasq и squid

Прошу сильно не бить за ошибки. Но все работает.

Настройка сетевых интерфейсов

##########/etc/network/interfaces

# The loopback network interface

auto lo

iface lo inet loopback

# The primary network interface

# Локальная сеть

auto eth0

iface eth0 inet static

address 192.168.0.8

netmask 255.255.255.0

network 192.168.0.0

broadcast 192.168.0.255

# Сеть провайдера 1

auto eth1

iface eth1 inet static

address 192.168.1.5

netmask 255.255.255.0

network 192.168.1.0

broadcast 192.168.1.255

# Сеть провайдера 2

auto eth2

iface eth2 inet static

address 192.168.2.5

netmask 255.255.255.0

network 192.168.2.0

broadcast 192.168.2.255

# Запускаем маршрутизатор

post-up /etc/start-router

############## конец файла

Cоздаем таблицы маршрутизации Т1 и Т2

########## файл /etc/iprouter2/rt_tables

#

# reserved values

#

255 local

254 main

253 default

0 unspec

#

# local

#

#1 inr.rule

10 T1

20 T2

############## конец файла

И собственно запускаем наш маршрутизатор

############# /etc/start-router

#! /bin/sh

echo 1 > /proc/sys/net/ipv4/ip_forward

IP_LOCAL=«192.168.0.8» # адрес маршрутизатора в локальной сети

IP_INET1=«192.168.1.5» # адрес маршрутизатора в сети провайдера 1

IP_INET2=«192.168.2.5» # адрес маршрутизатора в сети провайдера 2

IF_LOCAL=«eth0» # интерфейс маршрутизатора в локальной сети

IF_INET1=«eth1» # интерфейс маршрутизатора в сети провайдера 1

IF_INET2=«eth2» # интерфейс маршрутизатора в сети провайдера 2

NET_LOCAL=«192.168.0.0/24» # локальная сеть

NET_INET1=«192.168.1.0/24» # сеть провайдера 1

NET_INET2=«192.168.2.0/24» # сеть провайдера 2

SUB_NET1=«192.168.0.0/25» # локальная подсеть 1

SUB_NET2=«192.168.0.128/25» # локальная подсеть 2

GW_INET1=«192.168.1.8» # шлюз в сеть провайдера 1

GW_INET2=«192.168.2.1» # шлюз в сеть провайдера 2

IP_WEB1=«192.168.0.4» # адреса web+ftp сервера IP_WEB2=«192.168.0.134» # адреса web+ftp сервера

IP_SOMS1=«192.168.0.3» # адреса RTK сервера

IP_SOMS2=«192.168.0.133» # адреса RTK сервера

IP_LOCAL_BROADCAST1=«192.168.1.127» # широковещательный адрес подсети 1

IP_LOCAL_BROADCAST2=«192.168.1.255» # широковещательный адрес подсети 2

IP_INET_BROADCAST1=«192.168.1.255» # широковещательный адрес сети провайдера 1

IP_INET_BROADCAST2=«192.168.2.255» # широковещательный адрес сети провайдера 2

# T1 -таблица маршрутизации для провайдера 1

# T2 -таблица маршрутизации для провайдера 2

# очищаем таблицы маршрутизации

ip route flush table T1

ip route flush table T2

# добавляем правила маршрутизации для провайдера 1

ip route add $NET_INET1 dev $IF_INET1 src $IP_INET1 table T1

ip route add $NET_LOCAL dev $IF_LOCAL table T1

ip route add $NET_INET2 dev $IF_INET2 table T1

ip route add 127.0.0.0/8 dev lo table T1

ip route add default via $GW_INET1 table T1

# добавляем правила маршрутизации для провайдера 2

ip route add $NET_INET2 dev $IF_INET2 src $IP_INET2 table T2

ip route add $NET_LOCAL dev $IF_LOCAL table T2

ip route add $NET_INET1 dev $IF_INET1 table T2

ip route add 127.0.0.0/8 dev lo table T2

ip route add default via $GW_INET2 table T2

# добавляем правила маршрутизации в таблицу main

ip route add $NET_INET1 dev $IF_INET1 src $IP_INET1

ip route add $NET_INET2 dev $IF_INET2 src $IP_INET2

# добавляем маршрут по умолчанию

ip route add default via $GW_INET1

# очищаем правила

ip rule delete table T1

ip rule delete table T2

ip rule delete table T1

ip rule delete table T2

ip rule delete table T1

ip rule delete table T2

# правила маркировки пакетов

ip rule add fwmark 10 table T1

ip rule add fwmark 20 table T2

# добавляем правила для входящего трафика

ip rule add from $IP_INET1 table T1

ip rule add from $IP_INET2 table T2

# добавляем правила для входящего трафика

ip rule add from $SUB_NET1 table T1

ip rule add from $SUB_NET2 table T2

ip route flush cache

glombert
()

интернет через 2 провайдеров

Убился напрочь, помогите. Есть локальная сеть с двумя подсетями (192.168.0.0/25 и 192.168.0.128/25), 2 провайдера со статическими ip-адресами Надо заставить ходить пользователей из первой подсети через первого провайдера, из 2-й через второго. Ubuntu server 10.10

Шлюзы провайдеров пингуются. Через первого провайдера все идет хорошо (на него установлен шлюз по умолчанию). При попытке выйти в интернет из второй подсети (через второго провайдера) трассировка обрывается на шлюзе.

Трассировка маршрута к ya.ru [77.88.21.3] с максимальным числом прыжков 30:

1 2 ms 1 ms 1 ms 192.168.0.8 2 1 ms 1 ms 1 ms 192.168.2.1 3 * * * Превышен интервал ожидания для запроса. (Если шлюз по умолчанию поменять на второго провайдера - пинги пойдут )

Где недокрутил, подскажите.

#! /bin/sh echo 1 > /proc/sys/net/ipv4/ip_forward

# адреса сетевых карт IP_LOCAL=«192.168.0.8» # локальная сеть IP_INET1=«192.168.1.5» # провайдер 1 IP_INET2=«192.168.2.5» # провайдер 2

IF_LOCAL=«eth0» # локальная сеть IF_INET1=«eth1» # провайдер 1 IF_INET2=«eth2» # провайдер 2

NET_LOCAL=«192.168.0.0/24» # локальная сеть NET_INET1=«192.168.1.0/24» # сеть провайдера 1 NET_INET2=«192.168.2.0/24» # сеть провайдера 2

GW_INET1=«192.168.1.8» # шлюз провайдера 1 GW_INET2=«192.168.2.1» # шлюз провайдера 2

NET_SUB1=«192.168.0.0/25» # подсеть 1 NET_SUB2=«192.168.0.128/25» # подсеть 2

ip route flush table T1 ip route flush table T2

# заполняем таблицу 1 ip route add $NET_INET1 dev $IF_INET1 src $IP_INET1 table T1 ip route add $NET_LOCAL dev $IF_LOCAL table T1 ip route add $NET_INET2 dev $IF_INET2 table T1 ip route add 127.0.0.0/8 dev lo table T1 ip route add default via $GW_INET1 table T1

# заполняем таблицу 2 ip route add $NET_INET2 dev $IF_INET2 src $IP_INET2 table T2 ip route add $NET_LOCAL dev $IF_LOCAL table T2 ip route add $NET_INET1 dev $IF_INET1 table T2 ip route add 127.0.0.0/8 dev lo table T2 ip route add default via $GW_INET2 table T2

# заполняем таблицу main ip route add $NET_INET1 dev $IF_INET1 src $IP_INET1 ip route add $NET_INET2 dev $IF_INET2 src $IP_INET2

# шлюз по умолчанию ip route add default via $GW_INET2

ip rule delete table T1 ip rule delete table T2 ip rule delete table T1 ip rule delete table T2

# заполняем правила ip rule add from $IP_INET1 table T1 ip rule add from $IP_INET2 table T2

ip rule add fwmark 10 table T1 ip rule add fwmark 20 table T2

ip route flush cache

IPT=«/sbin/iptables»

$IPT -F $IPT -t nat -F $IPT -t mangle -F

#$IPT -t mangle -A PREROUTING -s $NET_SUB1 -j MARK --set-mark 10 #$IPT -t mangle -A PREROUTING -s $NET_SUB2 -j MARK --set-mark 20

$IPT -t nat -A POSTROUTING -m mark --mark 10 -j MASQUERADE $IPT -t nat -A POSTROUTING -m mark --mark 20 -j MASQUERADE

# разрешаем форвардинг из локальной сети $IPT -A FORWARD -i $IF_LOCAL -o $IF_INET1 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT $IPT -A FORWARD -i $IF_LOCAL -o $IF_INET2 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT

# разрешаем форвардинг из интернета $IPT -A FORWARD -i $IF_INET1 -m state --state RELATED,ESTABLISHED -j ACCEPT $IPT -A FORWARD -i $IF_INET2 -m state --state RELATED,ESTABLISHED -j ACCEPT

exit 0

glombert
()

RSS подписка на новые темы