LINUX.ORG.RU
ФорумAdmin

iptables

 ,


0

1

debian 8 gw0 iptables

#!/bin/bash
iptables -F
iptables -F -t nat
iptables -F -t mangle
iptables -F -t raw

#iptables -P FORWARD DROP
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

#iptables -P INPUT DROP
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -P OUTPUT ACCEPT
iptables -A INPUT -i lo -j ACCEPT
#iptables -A INPUT -p icmp --icmp-type fragmentation-needed -j ACCEPT
iptables -A INPUT -p icmp -j ACCEPT
iptables -A INPUT -p tcp -i eth0 --dport 22 -j ACCEPT
iptables -A INPUT -p udp -i eth0 --dport 53 -j ACCEPT
iptables -A INPUT -p tcp -i eth0 --dport 53 -j ACCEPT
iptables -A INPUT -p tcp -i eth0 --dport 80 -j ACCEPT


iptables -A OUTPUT -p tcp -m tcp --dport 143 -j ACCEPT
iptables -A OUTPUT -p tcp -m tcp --dport 995 -j ACCEPT
iptables -A OUTPUT -p tcp -m tcp --dport 53 -j ACCEPT
iptables -A OUTPUT -p udp -m udp --dport 53 -j ACCEPT



iptables -A FORWARD -s 192.168.40.0/24 ! -d 192.168.40.0/24 -j ACCEPT
iptables -t nat -A PREROUTING -p tcp -m tcp -s 192.168.40.0/24 ! -d 192.168.40.0/24 --dport 80 -j REDIRECT --to-ports 3128
iptables -t nat -A POSTROUTING -s 192.168.40.0/24 -o eth0:1 -j MASQUERADE
iptables -t nat -A POSTROUTING -s 192.168.40.0/24 -o eth2 -j MASQUERADE


#inet_ertel - full inet
#inet_rt    - need mark and output (second route table)

помогите пробросить 1)порт из локальной машины с ip 192.168.40.80:123 в инет 2) порт из локальной машины с ip 192.168.40.80:123 в инет на хост 123.123.123.123 и братно

У вас там и так всё открыто. И, чем вы отличаете " в инет" от «в инет на хост»?

А, если под «и братно» подразумевается, что 123.123.123.123 может инициировать соединения с 192.168.40.80, то тогда пишите DNAT правило и добавьте разрешение в FORWARD.

P.S. алиасы интерфейсов не различются на уровне iptables.

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

второй конфиг iptables

# Generated by iptables-save v1.4.14 on Thu Aug 14 19:59:54 2014
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:fr_inet - [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -i eth0 -j ACCEPT
-A INPUT -i eth0:1 -j ACCEPT
-A fr_inet -p icmp -j ACCEPT
-A fr_inet -p tcp -m tcp --dport 22 -j ACCEPT
COMMIT
# Completed on Thu Aug 14 19:59:54 2014
# Generated by iptables-save v1.4.14 on Thu Aug 14 19:59:54 2014
*mangle
:PREROUTING ACCEPT [3222:455538]
:INPUT ACCEPT [2778:305347]
:FORWARD ACCEPT [121:6235]
:OUTPUT ACCEPT [2398:557233]
:POSTROUTING ACCEPT [2519:563468]
-A FORWARD -i eth0:1 -j MARK -d 192.168.40.0/24 --set-mark 0x1
COMMIT
# Completed on Thu Aug 14 19:59:54 2014
# Generated by iptables-save v1.4.14 on Thu Aug 14 19:59:54 2014
*nat
:INPUT ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:PREROUTING ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
# ##for  pve web
-A POSTROUTING -o eth0:1 -j SNAT --to-source 192.168.0.254
-A POSTROUTING -o eth2 -j SNAT --to-source 243.21.129.17
-A PREROUTING -p tcp -m tcp  -d 192.168.40.0/24 --dport 80 -j REDIRECT --to-ports 3128
#need if not using autoconf proxy
#-A PREROUTING -p tcp -m tcp  -d 192.168.40.0/24 --dport 443 -j REDIRECT --to-ports 3128
:INPUT DROP [0:0]
:OUTPUT ACCEPT [0:0]
:forward_to_inet - [0:0]
:FORWARD DROP [0:0]
:allowed - [0:0]
:tcp_packets_inet - [0:0]
:icmp_packets - [0:0]
:bad_tcp_packets - [0:0]
:tcp_packets_lan - [0:0]
-A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -s 192.168.0.0/24 -i eth0:1 -j forward_to_inet
-A allowed -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -j ACCEPT
-A allowed -p tcp -m state --state RELATED,ESTABLISHED -j ACCEPT
-A allowed -p tcp -j DROP
-A bad_tcp_packets -p tcp -m tcp -m state --tcp-flags SYN,ACK SYN,ACK --state NEW -j REJECT --reject-with tcp-reset
-A bad_tcp_packets -p tcp -m tcp -m state ! --tcp-flags FIN,SYN,RST,ACK SYN --state NEW -j DROP
-A forward_to_inet -s 192.168.0.0/24 -p tcp -m tcp --dport 443 -j ACCEPT
-A forward_to_inet -s 192.168.0.0/24 -p tcp -m tcp --dport 9091 -j ACCEPT
-A forward_to_inet -p tcp -m tcp --dport 80
#icq
-A forward_to_inet -p tcp -m tcp --dport 5190
#icq
-A forward_to_inet -p udp -m udp --dport 5190

-A forward_to_inet -p tcp -m tcp --dport 21
#ne ponyatno chto eto
-A forward_to_inet -p tcp -m tcp -d 243.9.147.74 --dport 21 -j ACCEPT
-A forward_to_inet -p tcp -m tcp --dport 20
-A forward_to_inet -p tcp -m tcp --dport 25 -j ACCEPT
-A forward_to_inet -p tcp -m tcp --dport 110 -j ACCEPT
#-A forward_to_inet -p tcp -m tcp --dport 1194 -j ACCEPT
#-A forward_to_inet -p tcp -m tcp --dport 1935 -j ACCEPT
#-A forward_to_inet -p tcp -m tcp --dport 5222
#-A forward_to_inet -p udp -m udp --dport 5222
#-A forward_to_inet -p tcp -m tcp --dport 5223
#-A forward_to_inet -p udp -m udp --dport 5223
-A forward_to_inet -p tcp -m tcp --dport 53 -j ACCEPT
-A forward_to_inet -p udp -m udp --dport 53 -j ACCEPT
-A forward_to_inet -p tcp -m tcp --dport 143
-A forward_to_inet -p udp -m udp --dport 143
-A forward_to_inet -p tcp -m tcp --dport 995 -j ACCEPT
-A forward_to_inet -p udp -m udp --dport 995 -j ACCEPT
#-A forward_to_inet -p tcp -m tcp --dport 8585 -j ACCEPT
-A forward_to_inet -p icmp -j ACCEPT
#-A forward_to_inet -p tcp -m tcp --dport 10000
-A forward_to_inet -p udp -j DROP
-A icmp_packets -p icmp -m icmp --icmp-type 11 -j ACCEPT
-A icmp_packets -p icmp -m icmp --icmp-type 8 -j ACCEPT
-A tcp_packets_inet -p tcp -m tcp -i eth0 --dport 22 -j allowed
-A tcp_packets_inet -p tcp -j DROP
-A tcp_packets_lan -j ACCEPT
-A forward_to_inet -p tcp -j DROP
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -s 127.0.0.1 -i lo -j ACCEPT
-A INPUT -s 192.168.0.254 -i lo -j ACCEPT
-A INPUT -s 243.21.129.17 -i lo -j ACCEPT
-A INPUT -p tcp -m tcp -s 192.168.0.0/24 -i eth0:1 -j tcp_packets_lan
-A INPUT -p tcp -m tcp -i eth2 -j tcp_packets_inet
-A INPUT -p udp -m udp -s 192.168.0.0/24 -i eth0:1 -j ACCEPT
-A INPUT -p icmp -j icmp_packets
COMMIT

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

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

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

iptables -L , что кажет?

Шеловский скрипт судя по первым строкам трет все предыдущие записи в iptables

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

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

Логично, система она такая, работает по правилам.

Не знаю, кто и зачем сделал всё это, но это неправильно. Ни первый файл, который работает вхолостую так как потом iptables-save всё перетирает, ни редактирование руками второго конфига iptables. Правила нужно создавать командой iptables в консоли, а потом, если всё работает, сохранять в файл в формате iptables-save.

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

Кому как удобнее.

Мне например удобнее держать шеловский скрипт в init.d Все правила в нем подробно коментированы. Не приходится напрягать мозг создавая (вспоминая) похожие правила. ИНогда нужно забанить кучу IP (почтовик) и тут bash очень кстати.

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

Здравствуйте, я не понимаю, зачем Вы задаете разрешения для отдельных портов, если у Вас везде политики по умолчанию (iptables -P) accept?

По поводу проброса порта:

iptables -t nat -A PREROUTING -p tcp -i $INET_IF -d $INET_IP --dport 123 -j DNAT --to 192.168.40.80:123

Здесь $INET_IP - Ваш внешний IP-адрес, а $INET_IF - его интерфейс.

Вторую задачу не понял - Вы хотите, чтобы соединения с 123.123.123.123:123 перебрасывались на 192.168.40.80:123?

В этом случае Вам нужен для начала туннель между Вашей машиной и 123.123.123.123 (если, конечно, это не Ваш внешний IP).

в общем, я бы на Вашем месте начал с разбора бардака с iptables. Грохнул бы оба файла и написал то, что нужно на самом деле. Иначе разбираться в этой каше очень сложно...

Ну и Вам уже написали, алиасы интерфейсов тут не подходят. Хотите несколько логических интерфейсов на одном физическом, поднимайте vlans.

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

При срабатывании правила iptables

#!/bin/bash
iptables -F
iptables -F -t nat
iptables -F -t mangle
iptables -F -t raw

#iptables -P FORWARD DROP
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

#iptables -P INPUT DROP
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -P OUTPUT ACCEPT
iptables -A INPUT -i lo -j ACCEPT
#iptables -A INPUT -p icmp --icmp-type fragmentation-needed -j ACCEPT
iptables -A INPUT -p icmp -j ACCEPT
iptables -A INPUT -p tcp -i eth0 --dport 22 -j ACCEPT
iptables -A INPUT -p udp -i eth0 --dport 53 -j ACCEPT
iptables -A INPUT -p tcp -i eth0 --dport 53 -j ACCEPT
iptables -A INPUT -p tcp -i eth0 --dport 80 -j ACCEPT


iptables -A OUTPUT -p tcp -m tcp --dport 143 -j ACCEPT
iptables -A OUTPUT -p tcp -m tcp --dport 995 -j ACCEPT
iptables -A OUTPUT -p tcp -m tcp --dport 53 -j ACCEPT
iptables -A OUTPUT -p udp -m udp --dport 53 -j ACCEPT



iptables -A FORWARD -s 192.168.40.0/24 ! -d 192.168.40.0/24 -j ACCEPT
iptables -t nat -A PREROUTING -p tcp -m tcp -s 192.168.40.0/24 ! -d 192.168.40.0/24 --dport 80 -j REDIRECT --to-ports 3128

iptables -t nat -A POSTROUTING -s 192.168.40.0/24 -o eth0:1 -j MASQUERADE
iptables -t nat -A POSTROUTING -s 192.168.40.0/24 -o eth2 -j MASQUERADE


#inet_ertel - full inet
#inet_rt    - need mark and output (second route table)
трафик с порта 80 не переходит на 3128, в логах сквида нет ничего, но остальное все работает, соответственно если если скрипт не запускать, то трафик идет через сквид, остальные порты закрыты, как сделать чтобы трафик перенаправлялся на 3128 и порты модно было открывать и закрывать

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

у меня два провайдера, пользователи разделены на 2 группы в ад, одни идут в ртелеком другие ростелеком

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

Вам уже, вроде, советовали, показывать реальный набор правил, ИМХО, лучше вывод ″iptables-save -c″, а не скрипт, и не отредактированный конфиг. Не обязательно выкладывать выхлоп на ЛОР, может на pastebin лучше, но iptables-save покажет реальные правила в том порядке, как они есть в таблицах, а не как их разбросали по скрипту. И в ваших же интересах описать что за сетевые интерфейсы у сервера, какой куда смотрит и что делает.

Я не знаю, как у вас трафик попадает на squid, к 3128 в одном случае относится только:

-t nat -A PREROUTING -p tcp -m tcp  -d 192.168.40.0/24 --dport 80 -j REDIRECT --to-ports 3128
в другом случае
iptables -t nat -A PREROUTING -p tcp -m tcp -s 192.168.40.0/24 ! -d 192.168.40.0/24 --dport 80 -j REDIRECT --to-ports 3128
Разница между правилами очевидна, но мне непонятна.

И не понятен комментарий: #need if not using autoconf proxy, у вас там что, автоконфигурирование прокси в браузерах и файл автоконфигурации выдаётся через squid?

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

Согласен. В скрипте удобнее. Но ведь логично в конце скрипта вызывать iptables-save. А при запуске системы уже правила будут восстанавливаться с помощью iptables-restore.

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

у меня два провайдела eth0 локалка, eth0:1-дом.ру, eth2-ростелеком. две группы пользователей в домене.первая группа по дефолту шлюз ростелеком, у второй подставляется шлюз дом.ру. настройки iptables

iptables-save -c
# Generated by iptables-save v1.4.21 on Mon Nov 13 12:06:08 2017
*raw
:PREROUTING ACCEPT [5713226:5048902066]
:OUTPUT ACCEPT [5622060:5041025652]
COMMIT
# Completed on Mon Nov 13 12:06:08 2017
# Generated by iptables-save v1.4.21 on Mon Nov 13 12:06:08 2017
*mangle
:PREROUTING ACCEPT [5713228:5048902170]
:INPUT ACCEPT [5572728:5038016401]
:FORWARD ACCEPT [130590:10327359]
:OUTPUT ACCEPT [5622071:5041026820]
:POSTROUTING ACCEPT [5747451:5050908846]
COMMIT
# Completed on Mon Nov 13 12:06:08 2017
# Generated by iptables-save v1.4.21 on Mon Nov 13 12:06:08 2017
*nat
:PREROUTING ACCEPT [225557:13529735]
:INPUT ACCEPT [230338:13474210]
:OUTPUT ACCEPT [158549:32344937]
:POSTROUTING ACCEPT [183648:33882616]
[39788:2040452] -A PREROUTING -s 192.168.40.0/24 ! -d 192.168.40.0/24 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 3128
[0:0] -A POSTROUTING -s 192.168.40.0/24 -o eth0:1 -j MASQUERADE
[0:0] -A POSTROUTING -s 192.168.40.0/24 -o eth2 -j MASQUERADE
COMMIT
# Completed on Mon Nov 13 12:06:08 2017
# Generated by iptables-save v1.4.21 on Mon Nov 13 12:06:08 2017
*filter
:INPUT ACCEPT [7713:423613]
:FORWARD ACCEPT [5255:354171]
:OUTPUT ACCEPT [174336:133396387]
[5326490:5023351029] -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
[1459:66670] -A INPUT -i lo -j ACCEPT
[190:177754] -A INPUT -p icmp -j ACCEPT
[1:52] -A INPUT -i eth0 -p tcp -m tcp --dport 22 -j ACCEPT
[36440:2818097] -A INPUT -i eth0 -p udp -m udp --dport 53 -j ACCEPT
[0:0] -A INPUT -i eth0 -p tcp -m tcp --dport 53 -j ACCEPT
[2611:134454] -A INPUT -i eth0 -p tcp -m tcp --dport 80 -j ACCEPT
[8886:1956487] -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
[2:88] -A OUTPUT -p tcp -m tcp --dport 143 -j ACCEPT
[2:88] -A OUTPUT -p tcp -m tcp --dport 995 -j ACCEPT
[76:4545] -A OUTPUT -p tcp -m tcp --dport 53 -j ACCEPT
[78899:5638792] -A OUTPUT -p udp -m udp --dport 53 -j ACCEPT
COMMIT
# Completed on Mon Nov 13 12:06:08 2017


Если поменять правило
iptables -t nat -A POSTROUTING -s 192.168.40.0/24 -o eth0:1 -j MASQUERADE
iptables -t nat -A POSTROUTING -s 192.168.40.0/24 -o eth2 -j MASQUERADE
на
iptables -A POSTROUTING -t nat  -s 192.168.40.0/24 -j MASQUERADE
то трафик сбрасывается из локалки в инте и все работает, но не открываются сайты http в сквиде пустой лог если применить iptables то сквид работает, но весь остальной софт не прокидывается в инет (network time, skype) и т.д

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

автоматически настройки клиенты получаею через wpad через веб-сервер на шлюзе

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

При замене правила

iptables -t nat -A PREROUTING -p tcp -m tcp -s 192.168.40.0/24 ! -d 192.168.40.0/24 --dport 80 -j REDIRECT --to-ports 3128
на
-t nat -A PREROUTING -p tcp -m tcp  -d 192.168.40.0/24 --dport 80 -j REDIRECT --to-ports 3128
авторизация не проходит

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

замени /dev/brain 11 дней пробросить порты не можешь.

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

Вы противоречите сами себе. Сначала вы приводите вывод ″iptables-save -c″ с правилом:

[39788:2040452] -A PREROUTING -s 192.168.40.0/24 ! -d 192.168.40.0/24 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 3128
и пишете, что «не открываются сайты http в сквиде пустой лог, если применить iptables то сквид работает» и в конфиге iptables у вас:
-A PREROUTING -p tcp -m tcp  -d 192.168.40.0/24 --dport 80 -j REDIRECT --to-ports 3128

А постом ниже пишите «При замене правила ... авторизация не проходит». При этом заменяете правило с ″-s 192.168.40.0/24 ! -d 192.168.40.0/24″ на ″-d 192.168.40.0/24″.

Что касается правила:

iptables -t nat -A POSTROUTING -s 192.168.40.0/24 -o eth0:1 -j MASQUERADE
то, если eth0:1 это алиас, то правило бесполезно, потому что алиасы есть только на уровне команды ″ifconfig″. Если у вас там локалка и ДОМ.ру физически один интерфейс, наверное, вам нужно писать SNAT правило, а не MASQUERADE.

mky ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.