The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Индекс форумов
Составление сообщения

Исходное сообщение
"два прова + два фейса + ппп + влан"
Отправлено chippa, 11-Май-10 15:58 
>Иметь свою AS неплохо, но тут тоже есть подводные камни. Ладно если
>канал упал и лежит, а если пропадание скачет? Время перестройки таблиц
>и анонсирование на рутерах занимает длительное время, если туда-сюда скакать, до
>20 минут может уйти.

Лично у меня получилось вот так:
eth0 - локальная сеть, она же для канала №2
eth0:1 - локальная сеть для VPN-щиков.
eth1 - канал №1 в интернет
eth1.100 - VLAN между офисом и складом, проброшенный внутри канала №1
ppp0-pppXX - VPN подключения пользователей за пределами офиса/склада.
192.168.0.XXX - локальные пользователи.

Ограничения: всего 2 физических интерфейса, непонимание разных-там-протоколов и всякой всячины. Только Linux-платформа. Срок выполнения с отрицательным значением.
Задача: создать сказку для всех пользователей.

Результат: пользователи из офиса/склада ходят там, где надо (мир + локал), внешние пользователи могут использовать как внутренние, так и внешние сервисы.

=== скрипт
#!/bin/sh
PATH=/usr/sbin:/sbin:/bin:/usr/bin


#
# удалить все действующие правила
#
iptables -F
iptables -t nat -F
iptables -t mangle -F
iptables -X
# Всегда принимать трафик на loopback-интерфейсе

iptables -A INPUT -i lo -j ACCEPT

# Разрешить соединения, которые инициированы изнутри (eth0)
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -m state --state NEW -i ! eth1 -j ACCEPT
iptables -A FORWARD -i eth1 -o eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -i eth1 -o ppp+ -m state --state ESTABLISHED,RELATED -j ACCEPT


###

# Masquerade.
iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 8080 -j REDIRECT --to-port 3128
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 8800 -j REDIRECT --to-port 3128
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 5190 -j REDIRECT --to-port 3128
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 6880:7000 -j REDIRECT --to-port 3128


# Слушаем почтовые порты и перенаправляем на почтовый сервер.

iptables -t nat -A PREROUTING -p tcp --dst 62.182.X.Y --dport 25 -j DNAT --to-destination 192.168.0.222
iptables -A FORWARD -i eth1 -d 192.168.0.222 -p tcp --dport 25 -j ACCEPT

iptables -t nat -A PREROUTING -p tcp --dst 62.182.X.Y --dport 110 -j DNAT --to-destination 192.168.0.222
iptables -A FORWARD -i eth1 -d 192.168.0.222 -p tcp --dport 110 -j ACCEPT

iptables -t nat -A PREROUTING -p tcp --dst 62.182.X.Y --dport 587 -j DNAT --to-destination 192.168.0.222
iptables -A FORWARD -i eth1 -d 192.168.0.222 -p tcp --dport 587 -j ACCEPT

# ADSL-модем настроен роутером (по некоторым причинам) и форвардит 4 порта на Fedora-box
# перенаправляем со второго интерфейса почту на почтовый сервер.
iptables -t nat -A PREROUTING -p tcp --dst 192.168.0.195 --dport 587 -j DNAT --to-destination 192.168.0.222
iptables -A FORWARD -i eth1 -d 192.168.0.222 -p tcp --dport 587 -j ACCEPT

iptables -t nat -A PREROUTING -p tcp --dst 192.168.0.195 --dport 110 -j DNAT --to-destination 192.168.0.222
iptables -A FORWARD -i eth1 -d 192.168.0.222 -p tcp --dport 110 -j ACCEPT

iptables -t nat -A PREROUTING -p tcp --dst 192.168.0.195 --dport 143 -j DNAT --to-destination 192.168.0.222
iptables -A FORWARD -i eth1 -d 192.168.0.222 -p tcp --dport 143 -j ACCEPT

iptables -t nat -A PREROUTING -p tcp --dst 192.168.0.195 --dport 25 -j DNAT --to-destination 192.168.0.222
iptables -A FORWARD -i eth1 -d 192.168.0.222 -p tcp --dport 25 -j ACCEPT


# Разрешаем соединение с PPTP-сервером для всех;
iptables -A INPUT -m tcp -p tcp --dport 1723 -j ACCEPT

# Разрешаем протокол GRE для всех;
iptables -A INPUT -p gre -j ACCEPT

iptables -A FORWARD -i eth0 -o ppp+ -m state --state NEW -p gre -j ACCEPT
iptables -A FORWARD -i ppp+ -o eth0 -m state --state NEW -p gre -j ACCEPT

iptables -A FORWARD -i eth1 -o eth0 -m state --state NEW -p gre -j ACCEPT
iptables -A FORWARD -i eth0 -o eth1 -m state --state NEW -p gre -j ACCEPT

#
iptables -A FORWARD -i eth0 -o eth1 -j ACCEPT
iptables -A FORWARD -i eth0 -o eth0 -j ACCEPT
iptables -A FORWARD -i ppp+ -o eth1 -j ACCEPT
iptables -A FORWARD -i ppp+ -o eth0 -j ACCEPT

# World for warehouse:
iptables -A FORWARD -i eth1.100 -o eth0 -j ACCEPT


# чтобы можно было много раз запускать скрипт.
/sbin/ip rule del table 1
/sbin/ip rule del table 2
/sbin/ip rule del table 1
/sbin/ip rule del table 2
/sbin/ip rule del table 1
/sbin/ip rule del table 2
/sbin/ip rule del table 1
/sbin/ip rule del table 2
/sbin/ip rule del table 1
/sbin/ip rule del table 2


#Задание правил маршрутизации IP по источнику для DSL
/sbin/ip rule add from 192.168.0.195 lookup 1
/sbin/ip route add 192.168.0.0/24 via 192.168.0.195 table 1
/sbin/ip route add 192.168.100.0/24 via 192.168.100.1 table 1
/sbin/ip route add 0/0 via 192.168.0.205 table 1

#Задание правил маршрутизации IP по источнику
#для кабельного модема
/sbin/ip rule add from 62.182.X.Y lookup 2
/sbin/ip route add 192.168.0.0/24 via 192.168.0.195 table 2
/sbin/ip route add 192.168.100.0/24 via 192.168.100.1 table 2
/sbin/ip route add 0/0 via 62.182.X.Y table 2


/sbin/ip route add default equalize nexthop via 62.182.X.Y dev eth1 weight 1 nexthop via 192.168.0.205 dev eth0 weight 2

# Включить forward
echo 1 > /proc/sys/net/ipv4/ip_forward
=== конец скрипта


=== вывод /sbin/ifconfig
eth0      Link encap:Ethernet  HWaddr XX:XX:XX:XX:YY:XX
          inet addr:192.168.0.195  Bcast:192.168.0.255  Mask:255.255.255.0
          inet6 addr: xxxxxxxxxxxxxxxxxxxxx Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:4882528 errors:0 dropped:0 overruns:0 frame:0
          TX packets:4852570 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:1807257021 (1.6 GiB)  TX bytes:1667394752 (1.5 GiB)
          Interrupt:21 Base address:0x6000

eth0:1    Link encap:Ethernet  HWaddr XX:XX:XX:XX:XX:XX
          inet addr:192.168.1.195  Bcast:192.168.1.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          Interrupt:21 Base address:0x6000

eth1      Link encap:Ethernet  HWaddr XX:XX:XX:XX:XX:XX
          inet addr:62.182.X.Y  Bcast:62.182.X.Z  Mask:255.255.255.252
          inet6 addr: xxxxxxxxxxxxxxxxxxxx Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:3515408 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1371371 errors:0 dropped:0 overruns:0 carrier:0
          collisions:11090 txqueuelen:1000
          RX bytes:993204705 (947.1 MiB)  TX bytes:250501114 (238.8 MiB)
          Interrupt:20 Base address:0xa400

eth1.100  Link encap:Ethernet  HWaddr XX:XX:XX:XX:XX:XX
          inet addr:192.168.100.1  Bcast:192.168.100.7  Mask:255.255.255.248
          inet6 addr: xxxxxxxxxxxxxxxxxxxxx Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:18898 errors:0 dropped:0 overruns:0 frame:0
          TX packets:24132 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:1297122 (1.2 MiB)  TX bytes:32352819 (30.8 MiB)

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:63621 errors:0 dropped:0 overruns:0 frame:0
          TX packets:63621 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:84760923 (80.8 MiB)  TX bytes:84760923 (80.8 MiB)

# пользовательские подключения:
ppp0      Link encap:Point-to-Point Protocol
          inet addr:192.168.1.195  P-t-P:192.168.1.152  Mask:255.255.255.255
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1396  Metric:1
          RX packets:51537 errors:0 dropped:0 overruns:0 frame:0
          TX packets:50700 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:3
          RX bytes:4715996 (4.4 MiB)  TX bytes:14402777 (13.7 MiB)

ppp1      Link encap:Point-to-Point Protocol
          inet addr:192.168.1.195  P-t-P:192.168.1.154  Mask:255.255.255.255
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1396  Metric:1
          RX packets:36127 errors:0 dropped:0 overruns:0 frame:0
          TX packets:33257 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:3
          RX bytes:2996923 (2.8 MiB)  TX bytes:6929575 (6.6 MiB)

=== конец /sbin/ifconfig

=== вывод /sbin/route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.1.152   *               255.255.255.255 UH    0      0        0 ppp0
192.168.1.154   *               255.255.255.255 UH    0      0        0 ppp1
62.182.X.Z      *               255.255.255.252 U     0      0        0 eth1
192.168.100.0   *               255.255.255.248 U     0      0        0 eth1.100
192.168.1.0     *               255.255.255.0   U     0      0        0 eth0
192.168.0.0     *               255.255.255.0   U     0      0        0 eth0
169.254.0.0     *               255.255.0.0     U     0      0        0 eth1
default         62.182.X.Z      0.0.0.0         UG    0      0        0 eth1

=== конец /sbin/route

Ключевой момент: в настройках у eth0 и eth1 не указаны шлюзы (gateway) по-умолчанию.

Скрипт может иметь лишние строчки, но времени на оптимизацию банально нету. И так работает :)

 

Ваше сообщение
Имя*:
EMail:
Для отправки новых сообщений в текущей нити на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру