powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Unix-системы [игнор отключен] [закрыт для гостей] / Объединить 2 подсети, как ?
4 сообщений из 4, страница 1 из 1
Объединить 2 подсети, как ?
    #32940937
Grim
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброе время суток!!
Сам Linux изучаю с полгода. Умею ставить Oracle,PHP,Fbird,httpd и т.д. конфигурить немного.

Код: plaintext
1.
2.
3.
4.
Есть  2  подсети соединены они через VDSL модем.

Надо чтобы юзверы из сети ( 192 . 168 . 2 .*) могли по ФТП протоколу обращаться к ФТП серваку
в другой подсети ( 192 . 168 . 3 .*).
В FTP клиенте прокси буду указывать Linux машину. Все это хочу замутить на Linux-е (RedHat or Fedora)
Киньте ссылки или готовые файлики конфигурации как раутить енто дело.
Какие используються команды (ifconfig,route,??) (или проги SQUID,???) для раутинга и пересылки?
Еще не всем IP-шкам разрешается доступ к ФТП серванту.

Где можно почитать по конкретней, а то куча инфы и конкретного мануала нет??

Спасибо за помощь.
...
Рейтинг: 0 / 0
Объединить 2 подсети, как ?
    #32941124
Slack
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
Идеологически было бы правильнее, чтобы за каждый внешний сервис отвечала бы отдельно локальная служба, которая бы уже в свою очередь раздавала доступ к этому сервису. Например,
за HTTP и FTP
- прокси-сервер squid/delegate
за SMTP
- почтовый сервер sendmail/postfix/exim
за POP3 и IMAP
- средства доступа к эл. почте imap/cyrus-imap/courier-imap/Qpopper
и т.д.

Но, во-первых, не всегда есть время чтобы осуществить настройку всех этих программных пакетов, а во-вторых, не всегда можно подобрать соответствующую службу.
В таких случаях можно воспользоваться  маскарадингом , когда все запросы с локальных машин устремляются на сервер, а он в свою очередь высылает запросы в другую сеть только уже от своего имени. Затем ответы приходят на сервер, а он уже знает кому какой ответ предназначался и отсылает их локальным машинам. 

Для организации маскарадинга в первую очередь необходимо включит пересылку пакетов. За это отвечает одна из переменных ядра, доступных через файловую систему proc - /proc/sys/net/ipv4/ip_forward. Чтоб включить пересылку в данная переменная должна быть установлена в "1":
$ echo "1" > /proc/sys/net/ipv4/ip_forward

Также можно воспользоваться утилитой sysctl, которая также позволяет манипулировать параметрами ядра "на лету".
$ /sbin/sysctl -w net.ipv4.ip_forward=1
$ /sbin/sysctl -w net.ipv4.ip_forward=0

Если необходимо, чтоб пересылка включалась автоматически во время загрузки системы, то можно добавить в файл /etc/sysctl.conf следующие строчки:
# Enables packet forwarding
net.ipv4.ip_forward = 1

Теперь нужно сконфигурировать таблицы ядра с помощью iptables таким образом, чтобы компьютеры локальной сети маскировались за сервером. Для этого нужно исправить файл формирования правил 
/etc/netfilter/filter.dialup.start. Приведу сразу результат.

--------------- begin /etc/netfilter/filter.dialup.start --------------
#!/bin/bash
#******************************************************
#   Предопределения
#******************************************************
# Для инета
# Сетевой инет-интрефейс
INET_IFACE="ppp0"

# Для локальной стороны
# Сетевой интерфейс, связанный с локалкой
LAN_IFACE="eth0"
# IP-адрес "локального" сетевого интерфейса
LAN_IP="192.168.2.192"
# Диапазон ip-адресов локальной подсети
LAN_IP_RANGE="192.168.2.0/24"

# Для внутренних дел (интерфейс обратной петли)
# Название
LO_IFACE="lo"
# IP-адрес
LO_IP="127.0.0.1"

# Ускоренное обращение к утилитам
IPTABLES="/sbin/iptables"
DEPMOD="/sbin/depmod"
MODPROBE="/sbin/modprobe"

#******************************************************
#   Загрузка модулей, отвечающих за работу фильтрации
#******************************************************
$DEPMOD -a
$DEPMOD -a
$MODPROBE ip_tables
$MODPROBE ip_conntrack
$MODPROBE iptable_filter
$MODPROBE iptable_nat
$MODPROBE ipt_LOG
$MODPROBE ipt_limit
$MODPROBE ipt_state
$MODPROBE ipt_MASQUERADE
$MODPROBE ip_nat_ftp
$MODPROBE ip_conntrack_ftp

#******************************************************
#   Работаем с таблицей filter
#******************************************************
# Определение политик по умолчанию
$IPTABLES -P INPUT DROP
$IPTABLES -P FORWARD DROP
$IPTABLES -P OUTPUT ACCEPT

# Отдельно выделим цепочку для "плохих" пакетов
$IPTABLES -N bad_tcp_packets
# Не способствовать спуфинг-атаке "Sequence Number Prediction"
$IPTABLES -A bad_tcp_packets -p tcp --tcp-flags SYN,ACK SYN,ACK -m state\
             --state NEW -j REJECT --reject-with tcp-reset
# Не пропускать пакеты со статусом NEW и со сброшенным битом SYN
# Данное правило я оставляю закомментированным, потому что иначе я не
# смогу запускать сценарий запуска из сессии ssh, потому что она как
# раз попадет под действие этой цепочки
# $IPTABLES -A bad_tcp_packets -p tcp ! --syn -m state --state NEW -j DROP

# Отдельно выделим цепочку для прохождения ICMP пакетов
# пропускать будем только icmp-сообщения следующих типов:
#    3 - destination-unreachable (пункт назначения не доступен)
#    8 - echo-request (запрос на ping)
#   11 - time-exceeded (истекло время (ttl) при traceroute)
$IPTABLES -N icmp_packets
$IPTABLES -A icmp_packets -p ICMP --icmp-type 3 -j ACCEPT
$IPTABLES -A icmp_packets -p ICMP --icmp-type 8 -j ACCEPT
$IPTABLES -A icmp_packets -p ICMP --icmp-type 11 -j ACCEPT
$IPTABLES -A icmp_packets -p ICMP -j DROP

# Отдельно выделим цепочку для прохождения TCP пакетов
# Пропускать будет только tcp-пакеты адресованные к портам:
#   22 - сервис ssh
$IPTABLES -N tcp_packets
$IPTABLES -A tcp_packets -p TCP --dport 22 -j ACCEPT
$IPTABLES -A tcp_packets -p TCP -j DROP

# Отдельно выделим цепочку для прохождения UDP пакетов
# Пропускать будет только udp-пакеты адресованные к портам:
$IPTABLES -N udp_packets
$IPTABLES -A udp_packets -p UDP --destination-port 53 -j ACCEPT
$IPTABLES -A udp_packets -p UDP -j DROP

#******************************************************
#   Таблица filter - стандартная цепочка INPUT
#******************************************************
# Обрабатываем входящие плохие пакеты
$IPTABLES -A INPUT -p tcp -j bad_tcp_packets
# Разрешаем все входящие на интерфейс обратной петли
$IPTABLES -A INPUT -p ALL -i $LO_IFACE -j ACCEPT
# Разрешаем все соединения получившие уже маркировку как
# установленное (ESTABLISHED) или связанное с уже
# установленным (RELATED) - для ускорения пропуска
$IPTABLES -A INPUT -p ALL -m state --state ESTABLISHED,RELATED -j ACCEPT
# Обрабатываем ICMP-сообщения: для локалки разрешить все, для инета -
# разрешить определенные
$IPTABLES -A INPUT -p ICMP -i $LAN_IFACE -s $LAN_IP_RANGE -j ACCEPT
$IPTABLES -A INPUT -p ICMP -i $INET_IFACE -j icmp_packets
# Обрабатываем TCP-соединения: для локалки разрешить определенные, для
# инета - запретить
$IPTABLES -A INPUT -p TCP -i $LAN_IFACE -s $LAN_IP_RANGE -j tcp_packets
$IPTABLES -A INPUT -p TCP -i $INET_IFACE -j DROP
# Обрабатываем UDP-соединения: аналогично TCP
$IPTABLES -A INPUT -p UDP -i $LAN_IFACE -s $LAN_IP_RANGE -j udp_packets
$IPTABLES -A INPUT -p UDP -i $INET_IFACE -j DROP

#******************************************************
#   Таблица filter - стандартная цепочка FORWARD
#******************************************************
# Обрабатываем пересылаемые плохие пакеты
$IPTABLES -A FORWARD -p tcp -j bad_tcp_packets
# Разрешаем любую пересылку со стороны локалки
$IPTABLES -A FORWARD -i $LAN_IFACE -j ACCEPT
# Для всех остальных: разрешаем только "установленные" и "связанные"
# соединения
$IPTABLES -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

#******************************************************
#   Работаем с таблицей nat
#******************************************************

#******************************************************
#   Таблица nat - стандартная цепочка POSTROUTING
#******************************************************
# Включаем пересылку и маскирование (маскарад) адресов локальной сети
$IPTABLES -t nat -A POSTROUTING -o $INET_IFACE -j MASQUERADE
--------------- end /etc/netfilter/filter.dialup.start ----------------

Итак, добавилось политика по умолчанию для таблицы filter цепочки FORWARD, также фильтрация пересылаемых пакетов в таблице filter цепочке FORWARD, плюс в таблице nat цепочке POSTROUTING добавилось правило маскирующее все пакеты исходящие из сервера в Инет.

Для того чтобы это все заработало нужно сначала сбросить существующие правила, а затем применить новые:
$ /etc/netfilter/filter.flush
$ /etc/netfilter/filter.dialup.start

На клиентских машинах в качестве шлюза нужно указать ip-адрес сервера.

Теперь, после дозвона сервером в Инет, клиентские машины могут полноценно работать с внешним миром:
...
Рейтинг: 0 / 0
Объединить 2 подсети, как ?
    #32941221
Hakan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Юзай ИПТАБЛЭС.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
iptables -F 
iptables -t nat -F 
iptables -t mangle -F 
iptables -P FORWARD DROP 
#разрешаем пересылку пакетов между внутренним и внешним 
#интерфейсом 
iptables -A FORWARD -i eth0 -o eth1 -j ACCEPT 
# Разрешаем пересылку с внутреннего на внутренний 
#интерфейс. Происходит следующее: 
#Когда пакет проходит цепочку PREROUTINNG у него меняется 
#адрес назначения с  213 . 227 . 206 . 34  на  192 . 168 . 0 . 10   но 
#адрес источника остается  192 . 168 . 0 . 9  
#но теперь у пакета адрес источника и адрес назначения в одной сети 
#и ему надо не покидая интерфейса вернуться обратно в сеть, 
#что делается благодаря последнему правилу в цепочке 
#POSTROUTING 
iptables -A FORWARD -i eth0 -o eth0 -j ACCEPT 
#разрешаю хождение icmp протокола между интерфейсами 
iptables -A FORWARD -p icmp -m icmp -j ACCEPT 
#разрешаю хождение udp между интерфейсами (все пользуются 
#внешним DNS, поэтому без этого правила не работает) 
iptables -A FORWARD -p udp -m udp -j ACCEPT 
#дальше понятно... 
iptables -A FORWARD -i eth1 -o eth0 -p tcp -m state --state RELATED,ESTABLISHED -j ACCEPT 
iptables -A FORWARD -d  192 . 168 . 0 . 10  -p tcp -m tcp --dport 80 -j ACCEPT 
#отловил при помощи следующего правила пакет, 
#который показал, с какого на какой интерфейс он шел. 
#iptables -A FORWARD -j LOG --log-level debug 
#привязал вебсервер 
iptables -t nat -A PREROUTING -d  213 . 227 . 206 . 34  -p tcp -m tcp --dport 80 -j DNAT --to-destination 192.168.0.10:80 
#выпустил локальную сеть наружу 
iptables -t nat -A POSTROUTING -s  192 . 168 . 0 . 0 / 24  -o eth1 -j SNAT --to-source 213.227.206.34 
#только для тех адресов, адрес источника которых находится в 
#локальной сети и адрес назначения - вебсервер (--dport 80) 
#делать преобразование адреса источника на внутренний адрес 
#файрвола 
iptables -t nat -A POSTROUTING -d  192 . 168 . 0 . 10  -s  192 . 168 . 0 . 0 / 24  -p tcp -m tcp --dport  80  -j SNAT --to-source  192 . 186 . 0 . 1  


внешний интерфейс eth1 213.227.206.34,
а внутренний eth0 192.168.0.1
...
Рейтинг: 0 / 0
Объединить 2 подсети, как ?
    #32947653
Умничек
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Можно шлюз сконфигурить или маршруты вписать.
Только не знаю где на русском хорошую доку достать.
Учите Инглиш и будет вам щестье
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Unix-системы [игнор отключен] [закрыт для гостей] / Объединить 2 подсети, как ?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]