LinuxForum.Fans
Тема

Помогите раздать инет в сети

Автор: ERT 232 сообщений 68409 просмотров
26.04.2011 21:44 #155576

Здравствуйте!
Сразу хотелось бы попросить прощения у администрации форума за то, что дублирую свой пост созданием новой темы, но очень нужна помощь, т.к. вот уже скоро неделя пройдет в попытках раздать инет в локалку (debian с закрытыми глазами уже устанавливаю).
Я просто скопирую свой ранее созданный пост в этот раздел (не доглядел куда написать).
На сервере установлен Debian Squeeze, больше ничего не устанавливал, т.к. она будет предназначена только для игровых серверов (возможно стоит еще что-либо до установить к дистрибутиву? Подскажите).
Имеем два сетевых интерфейса: eth0 (смотрит в инет) и eth1 (смотрит в локальную сеть). В локальной сети 16 машин (IP 192.168.0.2, 192.168.0.101 - 192.168.0.115) с ОС Windows XP Pro.
eth0 - статический IP (выделенная линия от провайдера, без модема).
eth1 - назначаю address 192.168.0.1, netmask 255.255.255.0, broadcast 192.168.0.255 и network 192.168.0.0.
Все машины в локальной сети соединены через свич и имеют статические IP (это необходимо для работы некоторых программ).
Я перепробовал достаточное количество мануалов по настройке инета через iptables и максимум, что у меня получилось - это добиться работоспособности ICQ и то до перезагрузки сервера. Все машины локальной сети пингуются, SSH работает, а дальше все.
Заранее благодарен.

26.04.2011 21:55 #155581

Что делали, выложыте свои действия в командах консоли. Тогда поможем.

26.04.2011 22:32 #155594

echo 'net.ipv4.ip_forward = 1' >>/etc/sysctl.conf; sysctl -p
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 ! -d 192.168.0.0/24 -j MASQUERADE
iptables -t mangle -A FORWARD -p tcp -m tcp --tcp-flags RST,SYN SYN -j TCPMSS --clamp-mss-to-pmtu
iptables-save >/etc/iptables.conf

Вот по этому пробовал (уже тут на форуме порекомендовали).

Пробовал так же по этому мануалу.
Ввожу в консоли
ifconfig eth1 192.168.0.1 netmask 255.255.255.0
ifconfig eth1 up
Редактирую: /etc/sysctl.conf, убираю коммент net.ipv4.ip_forward=1
Выполняю: sysctl -w net.ipv4.ip_forward="1"
Ввожу следующее правило: iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
В rc.local добавляю: iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

И многие другие.

26.04.2011 23:30 #155630
text

#!/bin/sh
echo 1 > /proc/sys/net/ipv4/ip_forward
echo 1 > /proc/sys/net/ipv4/ip_dynaddr
modprobe iptable_nat
modprobe ip_conntrack_ftp
modprobe ip_nat_ftp
modprobe virtio_net 
export IPT="/sbin/iptables " 
export P_PLAN=eth0
export Z_PLAN=eth1
export Z_COMP=192.168.0.0/24
# flush all the rules in the filter and nat tables.
$IPT           -F
$IPT -t nat    -F
$IPT -t mangle -F
# erase all chains that's not default in filter and nat table.
$IPT           -X
$IPT -t nat    -X
$IPT -t mangle -X
# Let's go
# Закрываем изначально ВСЁ:
$IPT -P INPUT   DROP
$IPT -P OUTPUT  DROP
$IPT -P FORWARD DROP
# ********************************************************************************* #
# разрешаем локальный траффик для loopback и внутренней сети
$IPT -A INPUT  -i lo      -j ACCEPT
$IPT -A INPUT  -i $Z_PLAN -j ACCEPT
$IPT -A OUTPUT -o lo      -j ACCEPT
$IPT -A OUTPUT -o $Z_PLAN -j ACCEPT
# ********************************************************************************* #
# Принимать все пакеты, которые инициированы из уже установленного соединения, и имеющим
# признак ESTABLISHED.
# Состояние ESTABLISHED говорит о том, что это не первый пакет в соединении.
$IPT -A INPUT              -m state --state RELATED,ESTABLISHED     -j ACCEPT
$IPT -A OUTPUT             -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
$IPT -A FORWARD -o $P_PLAN -m state --state RELATED,ESTABLISHED     -j ACCEPT
$IPT -A FORWARD -o $Z_PLAN -m state --state RELATED,ESTABLISHED     -j ACCEPT
$IPT -A FORWARD -i $P_PLAN -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
$IPT -A FORWARD -i $Z_PLAN -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
# ********************************************************************************* #
# Разрешаем доступ из внутренней сети наружу
$IPT -A FORWARD -i $Z_PLAN -o $P_PLAN -j ACCEPT
# Разрешаем обмен между сетями
$IPT -A FORWARD -i $Z_PLAN -o $V_PLAN -j ACCEPT
# ********************************************************************************* #
# Маскарадинг
$IPT -t nat -A POSTROUTING -o $P_PLAN -s $Z_COMP    -j MASQUERADE   

$IPT -L -n -t nat

Это сокращенный рабочий конфиг, во время отладки вот это:

text

# Закрываем изначально ВСЁ:
$IPT -P INPUT   DROP
$IPT -P OUTPUT  DROP
$IPT -P FORWARD DROP

меняешь DROP на ACCEPT
Последняя строка $IPT -L -n -t nat - для того чтобы после исполнения скрипта виде что вышло.

ы. А вообще разговор про iptables надо начинать с вывода команд ifconfig и iptables -Lvn

27.04.2011 00:44 #155648
Rolmops написал:
Попробуй всё это там http://forum.ubuntu.ru/index.php?topic=107492.0 корректно сформулировать

Я честно говоря не понимаю к чему это было сказано и возможно следовало бы оставить Ваше высказывание без внимания, но "туда" мне посоветовали сходить с этого форума, как вариант, который у некоторых работает на Debian. А что касается корректных формулировок, то я, пока еще, не специалист в этой области и попытался объяснить как смог. Со временем научусь и вопросы мои будут корректными.

newzenon, благодарю. Завтра доберусь до сервера и попробую.
И у меня к Вам вопрос по поводу этого скрипта (лучше спросить, чем думать как с ним обращаться).
Этот конфиг набирается как команды поочередно или сохраняется как iptables.conf (я смотрел на подобные конфиги, но не понял как его применять).

27.04.2011 00:49 #155650

Нет. Сохраните его как файл с названием firewall.sh и права ему
[console]chmod +x firewall.sh[/console]
и тогда в консоли
[console]/path/to/file/firewall.sh[/console]
Название файлу даёте которые захочете.

27.04.2011 00:59 #155657

Спасибо.
Мне еще следовало написать о том, что после того, как я прописываю IP и netmask для eth1, а потом перезагружаю сетевые интерфесы /etc/init.d/networking restart, то eth0 не поднимется. Приходится поднимать его отдельно ifup eth0.
После ребута (все сетевые интерфейсы подняты до ребута) - все сетевые интерфейсы подняты.
Это нормально?

27.04.2011 01:18 #155659

ERT, содержимое файла /etc/network/interfaces в студию, и как я говорил вывод ifconfig и ifconfig -a (первый покажет поднятые интерфейсы, второй все существующие)
ы. Файл советую поместить в /etc. Права на файл можно и не выставлять запускать только:

text

$ sh /etc/firewall.sh

и конечно с привилегиями суперпользователя.

27.04.2011 01:31 #155661

ERT, почитайте про bash скрипты и iptables хотя бы основы, а то с сервером Дебиан и статическим IP вы проблем огребёте, потому как будете светится в интернет всем содержимым.
И вот эту строку не надо - она у меня для виртуалок:
modprobe virtio_net

27.04.2011 09:45 #155700

Сохранил конфиг firewall.sh, закинул в etc и запускаю sh /etc/firewall.sh. Как понимаю, ему много чего не хватает.

Показать

Вот мой /etc/network/interfaces

Показать

Вот ifconfig

Показать

Вот ifconfig -a

Показать
27.04.2011 09:51 · отредактировано #155703

Из скрипта удали вот ети строки

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

echo 1 > /proc/sys/net/ipv4/ip_dynaddr modprobe iptable_nat modprobe ip_conntrack_ftp modprobe ip_nat_ftp modprobe virtio_net

export IPT="/sbin/iptables " export P_PLAN=eth0 export Z_PLAN=eth1 export Z_COMP=192.168.0.0/24 # flush all the rules in the filter and nat tables. $IPT -F $IPT -t nat -F $IPT -t mangle -F # erase all chains that's not default in filter and nat table. $IPT -X $IPT -t nat -X $IPT -t mangle -X # Let's go # Закрываем изначально ВСЁ: $IPT -P INPUT DROP $IPT -P OUTPUT DROP $IPT -P FORWARD DROP # ********************************************************************************* # # разрешаем локальный траффик для loopback и внутренней сети $IPT -A INPUT -i lo -j ACCEPT $IPT -A INPUT -i $Z_PLAN -j ACCEPT $IPT -A OUTPUT -o lo -j ACCEPT $IPT -A OUTPUT -o $Z_PLAN -j ACCEPT # ********************************************************************************* # # Принимать все пакеты, которые инициированы из уже установленного соединения, и имеющим # признак ESTABLISHED. # Состояние ESTABLISHED говорит о том, что это не первый пакет в соединении. $IPT -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT $IPT -A OUTPUT -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT $IPT -A FORWARD -o $P_PLAN -m state --state RELATED,ESTABLISHED -j ACCEPT $IPT -A FORWARD -o $Z_PLAN -m state --state RELATED,ESTABLISHED -j ACCEPT $IPT -A FORWARD -i $P_PLAN -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT $IPT -A FORWARD -i $Z_PLAN -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT # ********************************************************************************* # # Разрешаем доступ из внутренней сети наружу $IPT -A FORWARD -i $Z_PLAN -o $P_PLAN -j ACCEPT # Разрешаем обмен между сетями $IPT -A FORWARD -i $Z_PLAN -o $V_PLAN -j ACCEPT # ********************************************************************************* # # Маскарадинг $IPT -t nat -A POSTROUTING -o $P_PLAN -s $Z_COMP -j MASQUERADE

$IPT -L -n -t nat

И пройдись по такому пути /proc/sys/net/ipv4 в MC. И посмотри где ошыбка в пути. Ищи файл ip_forward

27.04.2011 10:24 #155720
kisil написал:
Из скрипта удали вот ети строки
И пройдись по такому пути /proc/sys/net/ipv4 в MC. И посмотри где ошыбка в пути. Ищи файл ip_forward

Удалил. Тут я понял. У меня не установлен ftp и т.д.
[console]root@evolution:~# sh /etc/firewall.sh
: bad variable name
[/console]
Файл ip_forward есть, но он пустой, а точнее в нем одно значение "0"

27.04.2011 10:24 #155721

В /etc/network/interfaces поменяй allow-hotplug eth0 на auto eth0 - после eth0 будет автоматом подниматься,

и к интерфейсу eth1 в конце допиши на всякий:
network 192.168.0.0
broadcast 192.168.0.255
по аналогии с eth0.

Так а сам iptables стоит?
Сделай:

text

$ aptitude install iptables

И еще поставь dnsmasq - это чтобы потом у клиентов dns-server был шлюз твой - 192.168.0.1

text

$ aptitude install dnsmasq

ы. И вставляй в сообщения текст, а не картинки, в firewall.sh строки не удаляй, просто закоментируй (поставь перед строкой #) - потом разберешься нужно оно тебе или нет.

27.04.2011 10:46 #155727

kisil, modprobe iptable_nat - вот на это уж точно ругаться не должно, значит либо что-то не установлено либо (ну это экзотика) где нибудь кирилица или еще какие символы затесались.

27.04.2011 10:48 · отредактировано #155728

После того, как добавил к сетевому интерфейсу eth0, в конце, network и broadcast

Показать
[console]root@evolution:~# /etc/init.d/networking restart
Running /etc/init.d/networking restart is deprecated because it may not enable a
gain some interfaces ... (warning).
Reconfiguring network interfaces.../etc/network/interfaces:19: duplicate option
ifdown: couldn't read interfaces file "/etc/network/interfaces"
/etc/network/interfaces:19: duplicate option
ifup: couldn't read interfaces file "/etc/network/interfaces"
failed.[/console]

iptables я не устанавливал, но вот как прошла попытка установить

Показать
[console]root@evolution:~# aptitude install iptables
Ни одного пакета не будет установлено, обновлено или удалено.
0 пакетов обновлено, 0 установлено новых, 0 пакетов отмечено для удаления, и 0 пакетов не обновлено.
Необходимо получить 0 B архивов. После распаковки 0 B будет занято.[/console]

dnsmasq установил.

27.04.2011 11:31 #155741
ERT написал:
После того, как добавил к сетевому интерфейсу eth0, в конце, network и broadcast
Показать
[console]root@evolution:~# /etc/init.d/networking restart
Running /etc/init.d/networking restart is deprecated because it may not enable a
gain some interfaces ... (warning).
Reconfiguring network interfaces.../etc/network/interfaces:19: duplicate option
ifdown: couldn't read interfaces file "/etc/network/interfaces"
/etc/network/interfaces:19: duplicate option
ifup: couldn't read interfaces file "/etc/network/interfaces"
failed.[/console]

Ну у тебя где-то дубликаты, внимательней.

ERT написал:

iptables я не устанавливал, но вот как прошла попытка установить

Показать
[console]root@evolution:~# aptitude install iptables
Ни одного пакета не будет установлено, обновлено или удалено.
0 пакетов обновлено, 0 установлено новых, 0 пакетов отмечено для удаления, и 0 пакетов не обновлено.
Необходимо получить 0 B архивов. После распаковки 0 B будет занято.[/console]

dnsmasq установил.

"Ни одного пакета не будет установлено...." - значит на месте всё ок.

На чём остановились?

27.04.2011 11:38 #155742

Вот пример:

text

# /etc/network/interfaces
# Файл описывает сетевые интерфейсы доступные в системе и способы активирования их.

# The loopback network interface auto lo iface lo inet loopback

auto eth0 iface eth0 inet static address xxx.xxx.xxx.xxx netmask xxx.xxx.xxx.xxx network xxx.xxx.xxx.xxx broadcast xxx.xxx.xxx.xxx gateaway xxx.xxx.xxx.xxx dns-nameservers xxx.xxx.xxx.xxx

auto eth1 iface eth1 inet static address 192.168.0.1 netmask 255.255.255.0 network 192.168.0.0 broadcast 192.168.0.255

27.04.2011 11:49 · отредактировано #155744
newzenon написал:
Ну у тебя где-то дубликаты, внимательней.
На чём остановились?

Не к тому интерфейсу дописал.

Снова запускаю sh /etc/firewall.sh (закомментировал строки)
[console]root@evolution:~# sh /etc/firewall.sh
: Directory nonexistentnnot create /proc/sys/net/ipv4/ip_forward
: bad variable name
[/console]
dnsmasq как-то надо настраивать?

Войдите или зарегистрируйтесь, чтобы ответить.