Решено: Iptables: разрешить шлюзу ходить в сеть

Обсуждение настройки и работы сервисов, резервирования, сетевых настроек и вопросов безопасности ОС.

Модераторы: SLEDopit, Модераторы разделов

Аватара пользователя
lolobot
Сообщения: 436
ОС: Gentoo 2008.0

Решено: Iptables: разрешить шлюзу ходить в сеть

Сообщение lolobot »

Раньше было iptables -P INPUT ACCEPT, решил поставить политику DROP c целью закрыть извне все порты кроме разрешенных. Проблема в том, что с шлюза перестал пинговаться интернет. Что то никак не соображу как разрешить шлюзу ходить в интернет, а интернету запретить ходить на все порты шлюза.

ppp0 - интернет (pppoe, динамический ip)
eth2 - lan

Код: Выделить всё


iptables -F
iptables -t nat -F

#Разрешаю ходить в сеть из локалки
iptables -A INPUT -i eth2 -j ACCEPT
iptables -A OUTPUT -o eth2 -j ACCEPT
iptables -A FORWARD -i eth2 -j ACCEPT

#Разрешаю апач
#iptables -A INPUT -i ppp0 -p tcp --dport 80 -j ACCEPT

### Политики ###
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP

iptables -N ALLOW_PORTS
iptables -F ALLOW_PORTS

...
GNU/Linux forever! [Gentoo 2008.0]
Спасибо сказали:
Аватара пользователя
Mage-Warrior
Сообщения: 869
Статус: Семь раз понюхай, один раз откуси!
ОС: SlackWare 12.1

Re: Решено: Iptables: разрешить шлюзу ходить в сеть

Сообщение Mage-Warrior »

1. Забыли про loopback

Код: Выделить всё

iptables -A INPUT -i lo -d 127.0.0.1 -s 127.0.0.1 -j ACCEPT
iptables -A OUTPUT -o lo -d 127.0.0.1 -s 127.0.0.1 -j ACCEPT

2. Возьмите любой простейший конфиг iptables - там все есть.

Код: Выделить всё

iptables -A OUTPUT -o ppp0 -j ACCEPT
iptables -A INPUT -i ppp0 -m state --state ESTABLISHED,RELATED -j ACCEPT
*- Большинство проблем, дружок, завсегда покажет лог! -*
Спасибо сказали:
Аватара пользователя
lolobot
Сообщения: 436
ОС: Gentoo 2008.0

Re: Решено: Iptables: разрешить шлюзу ходить в сеть

Сообщение lolobot »

Mage-Warrior писал(а):
22.06.2009 08:30
2. Возьмите любой простейший конфиг iptables - там все есть.

Код: Выделить всё

iptables -A OUTPUT -o ppp0 -j ACCEPT
iptables -A INPUT -i ppp0 -m state --state ESTABLISHED,RELATED -j ACCEPT

Что то не работает. Вот полный скрипт:

Код: Выделить всё

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

iptables -F
iptables -F -t nat
iptables -F -t mangle
iptables -F -t filter
iptables -X

iptables -A INPUT -i lo -d 127.0.0.1 -s 127.0.0.1 -j ACCEPT
iptables -A OUTPUT -o lo -d 127.0.0.1 -s 127.0.0.1 -j ACCEPT

iptables -A OUTPUT -o ppp0 -j ACCEPT
iptables -A INPUT -i ppp0 -m state --state ESTABLISHED,RELATED -j ACCEPT

iptables -A INPUT -i eth2 -j ACCEPT
iptables -A FORWARD -i eth2 -j ACCEPT
iptables -A OUTPUT -o eth2 -j ACCEPT

iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP

iptables -N ALLOW_PORTS
iptables -F ALLOW_PORTS

export WAN=ppp0
export WANTWO=eth1
export LAN=eth2

iptables -A FORWARD -i ${LAN} -s 192.168.0.0/255.255.255.0 -j ACCEPT
iptables -A FORWARD -i ${WAN} -d 192.168.0.0/255.255.255.0 -j ACCEPT
iptables -A FORWARD -i ${WANTWO} -d 192.168.0.0/255.255.255.0 -j ACCEPT
iptables -t nat -A POSTROUTING -o ${WAN} -j MASQUERADE
iptables -t nat -A POSTROUTING -o ${WANTWO} -j MASQUERADE

route add -net 80.237.6.0 netmask 255.255.255.0 gw 192.168.38.1
route add -net 80.237.24.0 netmask 255.255.255.0 gw 192.168.38.1
route add -net 80.237.27.0 netmask 255.255.255.0 gw 192.168.38.1
route add -net 80.79.78.0 netmask 255.255.255.0 gw 192.168.38.1
route add -net 80.79.75.0 netmask 255.255.255.0 gw 192.168.38.1
route add -net 62.33.242.0 netmask 255.255.255.0 gw 192.168.38.1


Что делаю не так?
GNU/Linux forever! [Gentoo 2008.0]
Спасибо сказали:
Аватара пользователя
Mage-Warrior
Сообщения: 869
Статус: Семь раз понюхай, один раз откуси!
ОС: SlackWare 12.1

Re: Решено: Iptables: разрешить шлюзу ходить в сеть

Сообщение Mage-Warrior »

Проморгал я, что у Вас политика на OUTPUT = ACCEPT. Так что разрешающие правила на эту цепочку можно просто удалить.
С правилами, вроде, все в порядке. Попробуйте-ка теперь:

Код: Выделить всё

#ping 89.104.102.12
#ping linuxforum.ru
#traceroute 89.104.102.12
#ip r s

Все от root-а, желательно. Результат выполнения каждой команды ждем в следующем Вашем сообщении. Успеха!
*- Большинство проблем, дружок, завсегда покажет лог! -*
Спасибо сказали:
Аватара пользователя
lolobot
Сообщения: 436
ОС: Gentoo 2008.0

Re: Решено: Iptables: разрешить шлюзу ходить в сеть

Сообщение lolobot »

Закомментировал iptables -A OUTPUT -o lo -d 127.0.0.1 -s 127.0.0.1 -j ACCEPT iptables -A OUTPUT -o ppp0 -j ACCEPT и iptables -A OUTPUT -o eth2 -j ACCEPT

Код: Выделить всё

# ping 89.104.102.12
PING 89.104.102.12 (89.104.102.12) 56(84) bytes of data.
^C
--- 89.104.102.12 ping statistics ---
24 packets transmitted, 0 received, 100% packet loss, time 23012ms


Код: Выделить всё

# ping linuxforum.ru
ping: unknown host linuxforum.ru


Код: Выделить всё

# traceroute 89.104.102.12
traceroute to 89.104.102.12 (89.104.102.12), 30 hops max, 40 byte packets
 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  * * *


Код: Выделить всё

# ip r s
172.16.0.223 dev ppp0  proto kernel  scope link  src 95.72.58.239
192.168.38.0/24 dev eth1  proto kernel  scope link  src 192.168.38.67
80.237.6.0/24 via 192.168.38.1 dev eth1
80.79.78.0/24 via 192.168.38.1 dev eth1
192.168.0.0/24 dev eth2  proto kernel  scope link  src 192.168.0.1
80.79.75.0/24 via 192.168.38.1 dev eth1
62.33.242.0/24 via 192.168.38.1 dev eth1
80.237.27.0/24 via 192.168.38.1 dev eth1
80.237.24.0/24 via 192.168.38.1 dev eth1
127.0.0.0/8 dev lo  scope link
default via 172.16.0.223 dev ppp0


К слову сказать стоит сделать -P INPUT ACCEPT и все сразу же начинает пинговаться...
GNU/Linux forever! [Gentoo 2008.0]
Спасибо сказали:
Аватара пользователя
Mage-Warrior
Сообщения: 869
Статус: Семь раз понюхай, один раз откуси!
ОС: SlackWare 12.1

Re: Решено: Iptables: разрешить шлюзу ходить в сеть

Сообщение Mage-Warrior »

Закомментировал iptables -P OUTPUT ACCEPT

Я не это имел ввиду. Я имел ввиду строки, содержащие "-A OUTPUT" и "-J ACCEPT"

Ну, все. Довели! Ща будем размашисто по-русски бить наугад :yes3:
Что это за интерфейсик такой у вас eth1. Добавляем для него:

Код: Выделить всё

iptables -A INPUT -i eth1 -j ACCEPT

Заработало? А то у меня мысль что-то никак не идет умная :blush: .
*- Большинство проблем, дружок, завсегда покажет лог! -*
Спасибо сказали:
Аватара пользователя
lolobot
Сообщения: 436
ОС: Gentoo 2008.0

Re: Решено: Iptables: разрешить шлюзу ходить в сеть

Сообщение lolobot »

eth1 - это городская локалка (в нее еще роуты прописаны). Увы iptables -A INPUT -i eth1 -j ACCEPT не помогло...
GNU/Linux forever! [Gentoo 2008.0]
Спасибо сказали:
Аватара пользователя
Mage-Warrior
Сообщения: 869
Статус: Семь раз понюхай, один раз откуси!
ОС: SlackWare 12.1

Re: Решено: Iptables: разрешить шлюзу ходить в сеть

Сообщение Mage-Warrior »

lolobot писал(а):
22.06.2009 10:52
eth1 - это городская локалка (в нее еще роуты прописаны). Увы iptables -A INPUT -i eth1 -j ACCEPT не помогло...


При выполнении скрипта никаких ругательств не выпадает? Сразу после его запуска сделайте, пожалуйста:

Код: Выделить всё

# dmesg|tail -n 20
# iptables -L


Я так полагаю, что ввод в скрипт:

Код: Выделить всё

iptables -A INPUT -p ppp0 -J ACCEPT

несомненно "оживит" интернет, но это не то. Нужно правильное решение...
... Сегодня не мой день %-)
*- Большинство проблем, дружок, завсегда покажет лог! -*
Спасибо сказали:
Аватара пользователя
lolobot
Сообщения: 436
ОС: Gentoo 2008.0

Re: Решено: Iptables: разрешить шлюзу ходить в сеть

Сообщение lolobot »

При запуске скрипт выдает:

Код: Выделить всё

iptables: No chain/target/match by that name
SIOCADDRT: File exists
SIOCADDRT: File exists
SIOCADDRT: File exists
SIOCADDRT: File exists
SIOCADDRT: File exists
SIOCADDRT: File exists
SIOCADDRT: File exists

iptables: No chain/target/match by that name - реакция на iptables -A INPUT -i ppp0 -m state --state ESTABLISHED,RELATED -j ACCEPT
SIOCADDRT: File exists появляются при многократных запусках route.

Код: Выделить всё

# dmesg|tail -n 20
ACPI: PCI Interrupt 0000:00:1f.5[B] -> Link [LNKB] -> GSI 3 (level, low) -> IRQ 3
PCI: Setting latency timer of device 0000:00:1f.5 to 64
saa7134 ALSA driver for DMA sound loaded
saa7133[0]/alsa: saa7133[0] at 0xff8ff000 irq 5 registered as card -1
intel8x0_measure_ac97_clock: measured 51260 usecs
intel8x0: clocking to 48000
EXT3 FS on hda3, internal journal
EXT2-fs warning (device hda1): ext2_fill_super: mounting ext3 filesystem as ext2
Adding 1028152k swap on /dev/hda2.  Priority:-1 extents:1 across:1028152k
e100: eth0: e100_watchdog: link up, 100Mbps, full-duplex
eth1: link up, 100Mbps, full-duplex, lpa 0x45E1
eth2: link up, 100Mbps, full-duplex, lpa 0x45E1
i2c-adapter i2c-1: master_xfer[0] W, addr=0x61, len=4
i2c-adapter i2c-1: master_xfer[0] W, addr=0x61, len=4
i2c-adapter i2c-1: master_xfer[0] W, addr=0x61, len=4
i2c-adapter i2c-1: master_xfer[0] W, addr=0x61, len=4
i2c-adapter i2c-1: master_xfer[0] W, addr=0x61, len=4
i2c-adapter i2c-1: master_xfer[0] W, addr=0x43, len=4
i2c-adapter i2c-1: master_xfer[0] W, addr=0x61, len=4
i2c-adapter i2c-1: master_xfer[0] W, addr=0x43, len=4


Код: Выделить всё

# iptables -L
Chain INPUT (policy DROP)
target     prot opt source               destination
ACCEPT     all  --  home-server.home-network  home-server.home-network
ACCEPT     all  --  anywhere             anywhere

Chain FORWARD (policy DROP)
target     prot opt source               destination
ACCEPT     all  --  anywhere             anywhere
ACCEPT     all  --  192.168.0.0/24       anywhere
ACCEPT     all  --  anywhere             192.168.0.0/24
ACCEPT     all  --  anywhere             192.168.0.0/24

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

Chain ALLOW_PORTS (0 references)
target     prot opt source               destination
GNU/Linux forever! [Gentoo 2008.0]
Спасибо сказали:
Аватара пользователя
Mage-Warrior
Сообщения: 869
Статус: Семь раз понюхай, один раз откуси!
ОС: SlackWare 12.1

Re: Решено: Iptables: разрешить шлюзу ходить в сеть

Сообщение Mage-Warrior »

Ура! Мы близки к разгадке!
В начало скрипта добавить

Код: Выделить всё

/sbin/depmod -a
/sbin/modprobe ip_tables
/sbin/modprobe ip_conntrack
/sbin/modprobe iptable_filter
/sbin/modprobe iptable_mangle
/sbin/modprobe iptable_nat
/sbin/modprobe ipt_LOG  # Может пригодиться
/sbin/modprobe ipt_limit  # И это тоже. Я дома использую такое правило.
/sbin/modprobe ipt_state


Это чтобы наверняка. Видимо, момент истины 8-)
*- Большинство проблем, дружок, завсегда покажет лог! -*
Спасибо сказали:
Аватара пользователя
lolobot
Сообщения: 436
ОС: Gentoo 2008.0

Re: Решено: Iptables: разрешить шлюзу ходить в сеть

Сообщение lolobot »

Огромное спасибо! Оказывается просто я не собрал все эти модули. Перекомпилил ядро и все заработало.
GNU/Linux forever! [Gentoo 2008.0]
Спасибо сказали:
pelmen
Сообщения: 1268
ОС: debian

Re: Решено: Iptables: разрешить шлюзу ходить в сеть

Сообщение pelmen »

Mage-Warrior писал(а):
22.06.2009 11:00
Я так полагаю, что ввод в скрипт:

Код: Выделить всё

iptables -A INPUT -p ppp0 -J ACCEPT
несомненно "оживит" интернет
iptables -A INPUT -p all -i ppp0 -J ACCEPT
Спасибо сказали:
Аватара пользователя
Mage-Warrior
Сообщения: 869
Статус: Семь раз понюхай, один раз откуси!
ОС: SlackWare 12.1

Re: Решено: Iptables: разрешить шлюзу ходить в сеть

Сообщение Mage-Warrior »

pelmen писал(а):
22.06.2009 12:05
Mage-Warrior писал(а):
22.06.2009 11:00
Я так полагаю, что ввод в скрипт:

Код: Выделить всё

iptables -A INPUT -p ppp0 -J ACCEPT
несомненно "оживит" интернет
iptables -A INPUT -p all -i ppp0 -J ACCEPT


Здесь написано:
-p
...
Если данному критерию передается числовое значение 0, то это эквивалентно использованию спецификатора ALL, который подразумевается по умолчанию, когда критерий --protocol не используется

Поэтому -p all необязателен.
А с -p ppp0 это я да, опечатался. Спасибо за корректировку!

P.S.: Ура, товарищи!
*- Большинство проблем, дружок, завсегда покажет лог! -*
Спасибо сказали: