iptable - конфигурация для исходящего трафика из локальной сети
Я переустановил коробку ClearOS, которая основана на CentOS. Предыдущая установка работала нормально в течение 3 лет, без сбоев, но я, возможно, неправильно настроил что-то в этой установке, так как все работает не так, как должно.
Работа в Интернете не работает, если фильтрация контента отключена. Раньше я мог просматривать без прокси, но это больше не работает, если веб-прокси не включен. То же самое для трафика SSH.
Это гораздо серьезнее: локальная сеть не может подключиться к внешним ssh-серверам. Кажется, порт 22 не разрешен, но у меня установлен брандмауэр, разрешающий весь внешний трафик.
Соответствующий конфиг выложен ниже, маршрут и список iptables.
iptable:
[root@alcastraz ~]# iptables --list -n -v
Chain INPUT (policy DROP 223 packets, 9229 bytes)
pkts bytes target prot opt in out source destination
0 0 DROP all -- eth0 * 0.0.0.0/0 46.241.27.20
0 0 DROP all -- eth0 * 46.241.27.20 0.0.0.0/0
0 0 DROP all -- eth0 * 0.0.0.0/0 196.29.120.73
0 0 DROP all -- eth0 * 196.29.120.73 0.0.0.0/0
88 3768 DROP all -- * * 0.0.0.0/0 0.0.0.0/0 state INVALID
0 0 REJECT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp flags:0x12/0x12 state NEW reject-with tcp-reset
18 1602 DROP tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp flags:!0x17/0x02 state NEW
0 0 DROP all -- eth0 * 127.0.0.0/8 0.0.0.0/0
0 0 DROP all -- eth0 * 169.254.0.0/16 0.0.0.0/0
9422 2499K ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0
0 0 ACCEPT all -- pptp+ * 0.0.0.0/0 0.0.0.0/0
0 0 ACCEPT all -- tun+ * 0.0.0.0/0 0.0.0.0/0
14099 2515K ACCEPT all -- eth1 * 0.0.0.0/0 0.0.0.0/0
0 0 ACCEPT udp -- eth2 * 0.0.0.0/0 192.168.0.50 udp spt:68 dpt:67
0 0 ACCEPT tcp -- eth2 * 0.0.0.0/0 192.168.0.50 tcp spt:68 dpt:67
0 0 ACCEPT udp -- eth2 * 192.168.0.0/24 192.168.0.50 udp dpt:53
0 0 ACCEPT tcp -- eth2 * 192.168.0.0/24 192.168.0.50 tcp dpt:53
35 1015 ACCEPT icmp -- eth0 * 0.0.0.0/0 0.0.0.0/0 icmp type 0
0 0 ACCEPT icmp -- eth0 * 0.0.0.0/0 0.0.0.0/0 icmp type 3
0 0 ACCEPT icmp -- eth0 * 0.0.0.0/0 0.0.0.0/0 icmp type 8
0 0 ACCEPT icmp -- eth0 * 0.0.0.0/0 0.0.0.0/0 icmp type 11
76 25624 ACCEPT udp -- eth0 * 0.0.0.0/0 0.0.0.0/0 udp spt:67 dpt:68
0 0 ACCEPT tcp -- eth0 * 0.0.0.0/0 0.0.0.0/0 tcp spt:67 dpt:68
0 0 ACCEPT tcp -- * * 0.0.0.0/0 192.168.0.50 tcp dpt:80
0 0 ACCEPT tcp -- * * 0.0.0.0/0 96.22.88.25 tcp dpt:80
0 0 ACCEPT tcp -- * * 0.0.0.0/0 192.168.0.50 tcp dpt:443
0 0 ACCEPT tcp -- * * 0.0.0.0/0 96.22.88.25 tcp dpt:443
0 0 ACCEPT tcp -- * * 0.0.0.0/0 192.168.0.50 tcp dpt:22
0 0 ACCEPT tcp -- * * 0.0.0.0/0 96.22.88.25 tcp dpt:22
0 0 ACCEPT tcp -- * * 0.0.0.0/0 192.168.0.50 tcp dpt:1875
0 0 ACCEPT tcp -- * * 0.0.0.0/0 96.22.88.25 tcp dpt:1875
0 0 ACCEPT udp -- eth2 * 0.0.0.0/0 0.0.0.0/0 udp dpts:1024:65535 state RELATED,ESTABLISHED
0 0 ACCEPT tcp -- eth2 * 0.0.0.0/0 0.0.0.0/0 tcp dpts:1024:65535 state RELATED,ESTABLISHED
438 56397 ACCEPT udp -- eth0 * 0.0.0.0/0 0.0.0.0/0 udp dpts:1024:65535 state RELATED,ESTABLISHED
18645 6458K ACCEPT tcp -- eth0 * 0.0.0.0/0 0.0.0.0/0 tcp dpts:1024:65535 state RELATED,ESTABLISHED
Chain FORWARD (policy DROP 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
0 0 DROP all -- eth0 * 0.0.0.0/0 46.241.27.20
0 0 DROP all -- eth0 * 46.241.27.20 0.0.0.0/0
0 0 DROP all -- eth0 * 0.0.0.0/0 196.29.120.73
0 0 DROP all -- eth0 * 196.29.120.73 0.0.0.0/0
0 0 ACCEPT icmp -- * * 192.168.0.0/24 0.0.0.0/0 icmp type 0
0 0 ACCEPT icmp -- * * 0.0.0.0/0 192.168.0.0/24 icmp type 0
0 0 ACCEPT icmp -- * * 192.168.0.0/24 0.0.0.0/0 icmp type 3
0 0 ACCEPT icmp -- * * 0.0.0.0/0 192.168.0.0/24 icmp type 3
4 336 ACCEPT icmp -- * * 192.168.0.0/24 0.0.0.0/0 icmp type 8
0 0 ACCEPT icmp -- * * 0.0.0.0/0 192.168.0.0/24 icmp type 8
0 0 ACCEPT icmp -- * * 192.168.0.0/24 0.0.0.0/0 icmp type 11
0 0 ACCEPT icmp -- * * 0.0.0.0/0 192.168.0.0/24 icmp type 11
0 0 DROP icmp -- * * 192.168.0.0/24 0.0.0.0/0
0 0 DROP icmp -- * * 0.0.0.0/0 192.168.0.0/24
0 0 ACCEPT all -- * * 192.168.0.0/24 192.168.0.0/24 state RELATED,ESTABLISHED
0 0 DROP all -- * * 192.168.0.0/24 192.168.0.0/24
0 0 ACCEPT all -- * * 192.168.0.0/24 192.168.0.0/24
0 0 ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
0 0 ACCEPT all -- eth2 * 0.0.0.0/0 0.0.0.0/0
84 4754 ACCEPT all -- eth1 * 0.0.0.0/0 0.0.0.0/0
0 0 ACCEPT all -- pptp+ * 0.0.0.0/0 0.0.0.0/0
0 0 ACCEPT all -- tun+ * 0.0.0.0/0 0.0.0.0/0
Chain OUTPUT (policy DROP 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
9440 2500K ACCEPT all -- * lo 0.0.0.0/0 0.0.0.0/0
0 0 ACCEPT all -- * pptp+ 0.0.0.0/0 0.0.0.0/0
0 0 ACCEPT all -- * tun+ 0.0.0.0/0 0.0.0.0/0
15382 6989K ACCEPT all -- * eth1 0.0.0.0/0 0.0.0.0/0
35 1015 ACCEPT icmp -- * eth0 0.0.0.0/0 0.0.0.0/0
0 0 ACCEPT udp -- * eth0 0.0.0.0/0 0.0.0.0/0 udp spt:68 dpt:67
0 0 ACCEPT tcp -- * eth0 0.0.0.0/0 0.0.0.0/0 tcp spt:68 dpt:67
0 0 ACCEPT tcp -- * eth2 192.168.0.50 0.0.0.0/0 tcp spt:80
0 0 ACCEPT tcp -- * eth0 96.22.88.25 0.0.0.0/0 tcp spt:80
0 0 ACCEPT tcp -- * eth2 192.168.0.50 0.0.0.0/0 tcp spt:443
0 0 ACCEPT tcp -- * eth0 96.22.88.25 0.0.0.0/0 tcp spt:443
0 0 ACCEPT tcp -- * eth2 192.168.0.50 0.0.0.0/0 tcp spt:22
0 0 ACCEPT tcp -- * eth0 96.22.88.25 0.0.0.0/0 tcp spt:22
0 0 ACCEPT tcp -- * eth2 192.168.0.50 0.0.0.0/0 tcp spt:1875
0 0 ACCEPT tcp -- * eth0 96.22.88.25 0.0.0.0/0 tcp spt:1875
0 0 ACCEPT all -- * eth2 0.0.0.0/0 0.0.0.0/0
21153 3140K ACCEPT all -- * eth0 0.0.0.0/0 0.0.0.0/0
Chain drop-lan (0 references)
pkts bytes target prot opt in out source destination
0 0 DROP all -- * * 0.0.0.0/0 0.0.0.0/0
маршрут:
[root@alcastraz ~]# route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.0.0 * 255.255.255.0 U 0 0 0 eth1
192.168.0.0 * 255.255.255.0 U 0 0 0 eth2
96.22.88.0 * 255.255.255.0 U 0 0 0 eth0
default modemcable001.8 0.0.0.0 UG 0 0 0 eth0
Любая помощь или информация для решения этой проблемы будет принята с благодарностью.
Спасибо!
2 ответа
Это набор правил, созданных вручную?
Одна вещь, которая выскакивает: сеть 192.168.0.0/24 на двух интерфейсах: eth1
а также eth2
- это почти наверняка не то, что вы хотите.
Для общей отладки вы также можете использовать эту команду:
watch -d iptables -L -v -n
(или некоторый вариант этого.) Затем вы можете наблюдать увеличение пакетов по мере прохождения трафика. Это действительно хорошо только для сетей с низким трафиком, где у вас мало постороннего трафика.
Еще нужно включить ведение журнала для некоторых записей брандмауэра: используйте LOG
целевое расширение.
Еще одна вещь: сбросить счетчик и посмотреть, что падает - или еще лучше, используйте это LOG
цель в сочетании с правилами, которые DROP
, В вашем списке есть только два правила, которые были сопоставлены и отбросили пакеты (вытаскивая правила из контекста):
Chain INPUT (policy DROP 223 packets, 9229 bytes)
pkts bytes target prot opt in out source destination
88 3768 DROP all -- * * 0.0.0.0/0 0.0.0.0/0 state INVALID
18 1602 DROP tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp flags:!0x17/0x02 state NEW
Возможно, это следует исследовать?
Чтобы полностью избавиться от этого беспорядка, я бы предложил использовать Firewall Builder, отличный дизайнер мультибрандмауэров на основе графического интерфейса. Вы можете спроектировать брандмауэр где угодно и вставить его туда, где он будет выполнять свою работу - у fwbuilder даже есть способы выдвинуть брандмауэр на удаленный хост.
Я хотел бы рассмотреть возможность использования брандмауэра для создания вашего брандмауэра. Нечто подобное Shorewall, которое хорошо документировано и имеет несколько хороших примеров конфигураций, может сделать вашу жизнь проще. При быстром рассмотрении конфигурация трех интерфейсов (зон) может быть хорошей отправной точкой для вас. Ключевыми файлами для shorewall являются зоны, интерфейсы, хосты, политика и правила. Существует ряд макросов, которые генерируют закомментированные правила по имени, а не по порту.
Обычно ваш state RELATED,ESTABLISHED
правила будут в верхней части списка. Использование отдельных цепочек для разных транспортных потоков может помочь понять, что происходит.
Похоже, только два адреса имеют открытый доступ к порту 80, что объясняет вашу проблему с просмотром. Нужно быть контент-фильтром. Другим может быть адрес, с которого вы могли просматривать, минуя контент-фильтр.