LINUX.ORG.RU
ФорумAdmin

Маршрутизация линукс

 ,


0

2

доброе утро есть сервер дебиан на нем 2 сетевые карты одна 192.168.0.114 смотрит в интернет вторая 192.168.1.1 смотрит в сеть нужно чтобы пользователи с сети 192.168.1.0 выходили в интернет настроил dhcp

  • subnet 192.168.1.0 netmask 255.255.255.0 {
  • range 192.168.1.2 192.168.1.240;
  • option domain-name-servers 192.168.0.114;
  • option routers 192.168.1.1;
  • default-lease-time 604800;
  • max-lease-time 604800;
  • }

и настроил iptables

  • #!/bin/bash
  • iptables -F
  • iptables -t nat -F
  • iptables -X
  • iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
  • iptables -A FORWARD -m conntrack --ctstate NEW -i eth0 -s 192.168.1.0/24 -j ACCEPT
  • iptables -P FORWARD DROP
  • iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
  • iptables -A INPUT -i eth0 -s 192.168.1.0/24 -j ACCEPT
  • iptables -A INPUT -i lo -j ACCEPT
  • iptables -A INPUT -p icmp --icmp-type 0 -j ACCEPT
  • iptables -A INPUT -p icmp --icmp-type 8 -j ACCEPT
  • iptables -P INPUT DROP
  • #открываем порты наружу
  • iptables -t nat -A POSTROUTING -o eth1 -s 192.168.1.0/24 -p tcp -m multiport --dports 20,21,22,110,25,993,465 -j SNAT --to-source 192.168.0.114
  • iptables -t nat -A POSTROUTING -o eth1 -s 192.168.1.0/24 -p tcp -m multiport --dports 200,500,1194,5222,10000,3389,4444,7002,8125,8126 -j SNAT --to-source 192.168.0.114
  • iptables -t nat -A POSTROUTING -o eth1 -s 192.168.1.0/24 -p tcp -m multiport --dports 20,21,22,110,25,993,465,5222,10000,3389,4444,7002,8125,8126,1500 -j MASQUERADE
  • #ftp
  • iptables -t nat -A POSTROUTING -o eth1 -s 192.168.1.0/24 -p tcp --dport 21 -j SNAT --to-source 192.168.0.114
  • iptables -t nat -A POSTROUTING -o eth1 -s 192.168.1.0/24 -p tcp --dport 20 -j SNAT --to-source 192.168.0.114
  • #стандартный порт ssh можно и закрыть
  • iptables -t nat -A POSTROUTING -o eth1 -s 192.168.1.0/24 -p tcp --dport 221 -j SNAT --to-source 192.168.0.114
  • #электронная почта
  • iptables -t nat -A POSTROUTING -o eth1 -s 192.168.1.0/24 -p tcp --dport 110 -j SNAT --to-source 192.168.0.114
  • iptables -t nat -A POSTROUTING -o eth1 -s 192.168.1.0/24 -p tcp --dport 25 -j SNAT --to-source 192.168.0.114
  • iptables -t nat -A POSTROUTING -o eth1 -s 192.168.1.0/24 -p tcp --dport 993 -j SNAT --to-source 192.168.0.114
  • iptables -t nat -A POSTROUTING -o eth1 -s 192.168.1.0/24 -p tcp --dport 465 -j SNAT --to-source 192.168.0.114
  • #хз че за порты и кому нужны
  • iptables -t nat -A POSTROUTING -o eth1 -s 192.168.1.0/24 -p tcp --dport 200 -j SNAT --to-source 192.168.0.114
  • iptables -t nat -A POSTROUTING -o eth1 -s 192.168.1.0/24 -p tcp --dport 500 -j SNAT --to-source 192.168.0.114
  • iptables -t nat -A POSTROUTING -o eth1 -s 192.168.1.0/24 -p tcp --dport 1194 -j SNAT --to-source 192.168.0.114
  • iptables -t nat -A POSTROUTING -o eth1 -s 192.168.1.0/24 -p tcp --dport 5222 -j SNAT --to-source 192.168.0.114
  • iptables -t nat -A POSTROUTING -o eth1 -s 192.168.1.0/24 -p tcp --dport 10000 -j SNAT --to-source 192.168.0.114
  • iptables -t nat -A POSTROUTING -o eth1 -s 192.168.1.0/24 -p tcp --dport 3389 -j SNAT --to-source 192.168.0.114
  • iptables -t nat -A POSTROUTING -o eth1 -s 192.168.1.0/24 -p tcp --dport 4444 -j SNAT --to-source 192.168.0.114
  • iptables -t nat -A POSTROUTING -o eth1 -s 192.168.1.0/24 -p tcp --dport 7002 -j SNAT --to-source 192.168.0.114
  • iptables -t nat -A POSTROUTING -o eth1 -s 192.168.1.0/24 -p tcp --dport 8125 -j SNAT --to-source 192.168.0.114
  • iptables -t nat -A POSTROUTING -o eth1 -s 192.168.1.0/24 -p tcp --dport 8126 -j SNAT --to-source 192.168.0.114
  • iptables -t nat -A POSTROUTING -o eth1 -s 192.168.1.0/24 -p tcp --dport 1500 -j SNAT --to-source 192.168.0.114
  • #порты для ping
  • iptables -t nat -A POSTROUTING -o eth1 -s 192.168.1.0/24 -p icmp --icmp-type 0 -j SNAT --to-source 192.168.0.114
  • iptables -t nat -A POSTROUTING -o eth1 -s 192.168.1.0/24 -p icmp --icmp-type 8 -j SNAT --to-source 192.168.0.114
  • #ipv6
  • ip6tables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
  • ip6tables -A FORWARD -m conntrack --ctstate NEW -i eth0 -j ACCEPT
  • ip6tables -P FORWARD DROP
  • ip6tables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
  • ip6tables -A INPUT -i eth0 -j ACCEPT
  • ip6tables -A INPUT -i lo -j ACCEPT
  • ip6tables -P INPUT DROP
  • ip6tables -P OUTPUT DROP

пинг идет на 8.8.8.8 и на 8.8.4.4 и по сети, но не заходит вообще никуда


Разбирайтесь с правилами по порядку, а не сваливая в кучу из разных примеров. У вас же mutiport уже юзается, а потом повторяются уже по отдельности в этой портянке. SNAT вместе с MASQUERADE... Вам действительно надо OUPUT закрыть?

пинг идет на 8.8.8.8 и на 8.8.4.4

У вас серый IP выдаёт провайдер или ещё есть маршрутизатор?

vodz ★★★★★ ()
Ответ на: комментарий от TDot

Я не силен в iptables, но всегда думал, что в цепочку OUTPUT попадают те пакеты, источником которых является сам маршрутизатор, а пакеты от других хостов обрабатываются в FORWARD.

Khnazile ★★★★★ ()
Ответ на: комментарий от TDot

Увлекательная портянка. Но один вопрос, что спросить-то хотели в таких условиях? «Я накопипастил хз что» (слово хз у вас даже в комментарии присутствует) «и ничего не работает». Удивительно не правда ли? Ну и докинем, я буду не сильно удивлен, что у вас и названия интерфейсов ошибочны и на 192.168.0.114 никакого dns сервера нэма.

anc ★★★★★ ()
Последнее исправление: anc (всего исправлений: 1)
Ответ на: комментарий от anc

А это не только его конкретный случай, это практически повсеместно, человеки понахватаются отовсюду, а чё как непонятно.

А вообще при использовании статического адреса снаружи используется snat, динамика - masquerade. Когда используется masquerade, то он для каждого пакета пытается выяснить какой адрес у внешнего интерфейса, это приведет к повышенному потреблению ресурсов на серваке (понятно, что не от его 10 юзеров). И ещё, при обрыве соединения (линка), маскарад, сбросит все открытые соединения так как будет думать, что у него изменился адрес. А snat конкретно знает, что ему подставлять и ничего не будет сбрасывать до окончания своих таймеров.

anonymous ()
Ответ на: комментарий от anonymous

Когда используется masquerade, то он для каждого пакета пытается выяснить какой адрес у внешнего интерфейса, это приведет к повышенному потреблению ресурсов на серваке

Очень смешно. Двадцать лет в криокамере пролежали?

И ещё, при обрыве соединения (линка), маскарад, сбросит все открытые соединения так как будет думать, что у него изменился адрес.

Прописываю ещё лет двадцать криокамеры.

anc ★★★★★ ()

Где разрешающий FORWARD для подсети?

1)iptables -t filter -A FORWARD -i Локальный_Интерфейс -o WAN_интерфейс -p tcp -m multiport --dports 80,443 -j ACCEPT

2)Переменную sysctl net.ipv4.ip_forward=1

3)Что с DNS сервером в сети? Если нет то пиши 1.1.1.1 iptables -t filter -A FORWARD -i Локальный_Интерфейс -o WAN_интерфейс -d 1.1.1.1 -p tcp --dport 53 -j ACCEPT

4)Проверь все SNAT/Masquerade - для транзитных пакетов.

mandreika ()
Ответ на: комментарий от anc

Открываете (http://ipset.netfilter.org/iptables-extensions.man.html), находите MASQUERADE и читаете. Ещё можно обратиться к Vel-у , он больше разбирается во внутренностях netfilter, попросить его объяснить как там сейчас дела обстоят.

anonymous ()
Ответ на: комментарий от anonymous

По пунктам в чем вы правы/неправы

то он для каждого пакета пытается выяснить какой адрес у внешнего интерфейса

Не для каждого пакета, а только для первого пакета

это приведет к повышенному потреблению ресурсов на серваке

При современных мощностях это уже не имеет значения. Нагрузка SNAT vs MASQ даже здесь уже не раз обсуждалась. Это модная тема. Имхо изначально порождена iptables-tutorial но он писался очень давно.

И ещё, при обрыве соединения (линка), маскарад, сбросит все открытые соединения

Он очистит conntrack это да. Но не сбросит соединение, на примере tcp rst слать не будет. Если у вас регулярно падает линк то имхо проблема conntrack для вас будет самой последней.
Вот например у вас качается файлик (бегают пакетики), линк упал файлик уже не качается. Вам не теплее не холоднее от того что conntrack очистился. Или другой пример не активная ssh сессия (пакетики не бегают) линк упал/потом поднялся но соединение же не разорвано, можно продолжить работать. А вся фигня в том что state NEW это первый пакет в соединении а не syn на примере tcp, просто первый пакет.
Другой вопрос если вы на форварде например киляете INVALID, или проверяете флаги tcp, тут это может «навредить». Вариантов когда при падении линка+очистка conntrack может быть хуже чем падении линка и сохранение conntrack придумать можно. Но это уже отдельные случаи.

anc ★★★★★ ()
Ответ на: комментарий от anc

По поводу «всех пакетов» и «сбрасывает соединения» это я действительно погорячился. А насчет маскарада, ну не скажите, будет у вас интенсивный трафик через сервак, будете биться за каждый % нагрузки ЦП и используемой памяти. Для мелких железок dlink, микротик и тд на которых крутятся всякие *wrt будет иметь значение.

anonymous ()
Ответ на: комментарий от anonymous

будет у вас интенсивный трафик через сервак, будете биться за каждый % нагрузки ЦП и используемой памяти

Это должен быть или очень интенсивный трафик или очень слабый сервак или все вместе взятое.

Вот как раз на «мелких железках» и используется MASQ и ничего так пережевывают.

ЗЫ Просто напомню, что в ipchains был только MASQ и железки в то время были ой как послабее современных. Работало же.

anc ★★★★★ ()
Последнее исправление: anc (всего исправлений: 1)