LinuxForum.Fans
Тема

Iptables + port forwarding

Автор: GLADIATOR13 51 сообщений 14851 просмотров
#193916

Пока не запускал, на больничном, как запущу отпишусь)

#194385

После запуска скрипта ничего не изменилось. Совсем :(

Конфиг тэйблсов после перезапуска системы. Изменений ноль.

text

# Generated by iptables-save v1.4.9 on Wed Sep 21 10:55:25 2011
*nat
:PREROUTING ACCEPT [1301:89180]
:OUTPUT ACCEPT [1395:87293]
:POSTROUTING ACCEPT [20:3653]
-A PREROUTING -i eth1 -p tcp -m tcp --dport 80 -j DNAT --to-destination 192.168.10.1:3128 
-A PREROUTING -i eth0 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 3128 
-A PREROUTING -i eth1 -p tcp -m tcp --dport 8080 -j DNAT --to-destination 192.168.10.1:3128 
-A PREROUTING -i eth0 -p tcp -m tcp --dport 8080 -j REDIRECT --to-ports 3128 
-A POSTROUTING -o eth0 -j MASQUERADE 
-A POSTROUTING -s 192.168.10.1/32 ! -d 192.168.10.79/32 -p tcp -m tcp --dport 3553 -j SNAT --to-source 188.128.2.58 
-A POSTROUTING -s 192.168.10.1/32 -d 192.168.10.79/32 -p tcp -m tcp --dport 3553 -j SNAT --to-source 188.128.2.58 
-A POSTROUTING -s 192.168.10.79/32 -d 192.168.10.0/24 -p tcp -m tcp --dport 3553 -j SNAT --to-source 188.128.2.58 
COMMIT
# Completed on Wed Sep 21 10:55:25 2011
# Generated by iptables-save v1.4.9 on Wed Sep 21 10:55:25 2011
*filter
:INPUT ACCEPT [26140:12899087]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [29668:13919984]
-A FORWARD -i eth0 -o eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT 
-A FORWARD -i eth1 -o eth0 -j ACCEPT 
-A OUTPUT -o eth0 -p tcp -m tcp --dport 3553 -j ACCEPT 
-A OUTPUT -o eth1 -p tcp -m tcp --dport 3553 -j ACCEPT 
COMMIT
# Completed on Wed Sep 21 10:55:25 2011

При попытки открыть файл в ручную консоль пишет следующее:

text

[root@Gateway ~]# '/etc/firewall.sh' 
-bash: /etc/firewall.sh: /bin/bash^M: плохой интерпретатор: Нет такого файла или каталога

Что не так? oO

#194389

А он у Вас вообще запустился?

#194390
GLADIATOR13 написал:
-A POSTROUTING -s 192.168.10.1/32 ! -d 192.168.10.79/32 -p tcp -m tcp --dport 3553 -j SNAT --to-source 188.128.2.58
-A POSTROUTING -s 192.168.10.1/32 -d 192.168.10.79/32 -p tcp -m tcp --dport 3553 -j SNAT --to-source 188.128.2.58
-A POSTROUTING -s 192.168.10.79/32 -d 192.168.10.0/24 -p tcp -m tcp --dport 3553 -j SNAT --to-source 188.128.2.58

А смысла этих строк я вообще не понимаю

#194393

Это старый конфиг, остатки после эксперементов и лишнее доказательство тому что скрипт не запустился.

Кстати Hrafn при вводе вашей команды через консоль пишется ошибка:

text

[root@Gateway ~]# iptables -A PREROUTING -i eth0 -p tcp -m tcp --dport 3553 -j DNAT --to-destination 192.168.10.70:3553
iptables: No chain/target/match by that name.
#194402

И всёже после запуска скрипта полная неразбериха *(

text

: Нет такого файла или каталога/sys/net/ipv4/ip_forward
: Нет такого файла или каталога/sys/net/ipv4/ip_dynaddr
 not found.le iptable_nat
 not found.le ip_conntrack_ftp
 not found.le ip_nat_ftp
: команда не найденаne 8: 
: команда не найденаne 11: 
: команда не найденаne 14: 
: команда не найденаne 18: 
: команда не найденаne 20: iptables
: команда не найденаne 21: iptables
: команда не найденаne 22: iptables
: команда не найденаne 23: iptables
: команда не найденаne 24: iptables
: команда не найденаne 25: iptables
: команда не найденаne 26: 
: команда не найденаne 28: iptables
: команда не найденаne 29: iptables
: команда не найденаne 30: iptables
: команда не найденаne 31: 
: команда не найденаne 33: iptables
: команда не найденаne 34: iptables
: команда не найденаne 35: iptables
: команда не найденаne 36: iptables
: команда не найденаne 37: 
: команда не найденаne 40: iptables
: команда не найденаne 41: 
: команда не найденаne 43: iptables
: команда не найденаne 44: 
: команда не найденаne 47: iptables
: команда не найденаne 48: 
: команда не найденаne 50: iptables
: команда не найденаne 51: 
: команда не найденаne 54: iptables
: команда не найденаne 55: iptables
: команда не найденаne 56: 
: команда не найденаne 59: iptables
: команда не найденаne 60: iptables
: команда не найденаne 61: 
: команда не найденаne 63: iptables
: команда не найденаne 64: 
: команда не найденаne 66: iptables
: команда не найденаne 67: 
: команда не найденаne 69: iptables
: команда не найденаne 70: 
: команда не найденаne 72: iptables
: команда не найденаne 73: iptables
: команда не найденаne 74: iptables
: команда не найденаne 75: iptables
: команда не найденаne 76: 
: команда не найденаne 78: iptables
: команда не найденаne 79: 
: команда не найденаne 80: 
: команда не найденаne 84: iptables
: команда не найденаne 85: 
: команда не найденаne 87: iptables
: команда не найденаne 88: 
: команда не найденаne 90: iptables
: команда не найденаne 91: 
: команда не найденаne 93: iptables
: команда не найденаne 94: iptables
: команда не найденаne 95: 
: команда не найденаne 97: 
»oute: неверный ключ -- «
Usage: route [-nNvee] [-FC] [<AF>]           List kernel routing tables
       route [-v] [-FC] {add|del|flush} ...  Modify routing table for AF.

route {-h|--help} [<AF>] Detailed usage syntax for specified AF. route {-V|--version} Display version/author and exit.

-v, --verbose be verbose -n, --numeric don't resolve names -e, --extend display other/more information -F, --fib display Forwarding Information Base (default) -C, --cache display routing cache instead of FIB

<AF>=Use '-A <af>' or '--<af>'; default: inet List of possible address families (which support routing): inet (DARPA Internet) inet6 (IPv6) ax25 (AMPR AX.25) netrom (AMPR NET/ROM) ipx (Novell IPX) ddp (Appletalk DDP) x25 (CCITT X.25) : команда не найденаne 100: iptables : команда не найденаne 101: iptables : команда не найденаne 102: iptables

#194403
text
iptables -t nat -A PREROUTING -i eth0 -p tcp -m tcp --dport 3553 -j DNAT --to-destination 192.168.10.70:3553

Вы забыли указать таблицу -t nat

#194404
GLADIATOR13 написал:
И всёже после запуска скрипта полная неразбериха *(
text

: Нет такого файла или каталога/sys/net/ipv4/ip_forward
: Нет такого файла или каталога/sys/net/ipv4/ip_dynaddr
 not found.le iptable_nat
 not found.le ip_conntrack_ftp
 not found.le ip_nat_ftp
: команда не найденаne 8: 
: команда не найденаne 11: 
: команда не найденаne 14: 
: команда не найденаne 18: 
: команда не найденаne 20: iptables
: команда не найденаne 21: iptables
: команда не найденаne 22: iptables
: команда не найденаne 23: iptables
: команда не найденаne 24: iptables
: команда не найденаne 25: iptables
: команда не найденаne 26: 
: команда не найденаne 28: iptables
: команда не найденаne 29: iptables
: команда не найденаne 30: iptables
: команда не найденаne 31: 
: команда не найденаne 33: iptables
: команда не найденаne 34: iptables
: команда не найденаne 35: iptables
: команда не найденаne 36: iptables
: команда не найденаne 37: 
: команда не найденаne 40: iptables
: команда не найденаne 41: 
: команда не найденаne 43: iptables
: команда не найденаne 44: 
: команда не найденаne 47: iptables
: команда не найденаne 48: 
: команда не найденаne 50: iptables
: команда не найденаne 51: 
: команда не найденаne 54: iptables
: команда не найденаne 55: iptables
: команда не найденаne 56: 
: команда не найденаne 59: iptables
: команда не найденаne 60: iptables
: команда не найденаne 61: 
: команда не найденаne 63: iptables
: команда не найденаne 64: 
: команда не найденаne 66: iptables
: команда не найденаne 67: 
: команда не найденаne 69: iptables
: команда не найденаne 70: 
: команда не найденаne 72: iptables
: команда не найденаne 73: iptables
: команда не найденаne 74: iptables
: команда не найденаne 75: iptables
: команда не найденаne 76: 
: команда не найденаne 78: iptables
: команда не найденаne 79: 
: команда не найденаne 80: 
: команда не найденаne 84: iptables
: команда не найденаne 85: 
: команда не найденаne 87: iptables
: команда не найденаne 88: 
: команда не найденаne 90: iptables
: команда не найденаne 91: 
: команда не найденаne 93: iptables
: команда не найденаne 94: iptables
: команда не найденаne 95: 
: команда не найденаne 97: 
»oute: неверный ключ -- «
Usage: route [-nNvee] [-FC] [<AF>]           List kernel routing tables
       route [-v] [-FC] {add|del|flush} ...  Modify routing table for AF.

route {-h|--help} [<AF>] Detailed usage syntax for specified AF. route {-V|--version} Display version/author and exit.

-v, --verbose be verbose -n, --numeric don't resolve names -e, --extend display other/more information -F, --fib display Forwarding Information Base (default) -C, --cache display routing cache instead of FIB

<AF>=Use '-A <af>' or '--<af>'; default: inet List of possible address families (which support routing): inet (DARPA Internet) inet6 (IPv6) ax25 (AMPR AX.25) netrom (AMPR NET/ROM) ipx (Novell IPX) ddp (Appletalk DDP) x25 (CCITT X.25) : команда не найденаne 100: iptables : команда не найденаne 101: iptables : команда не найденаne 102: iptables

Покажите ваш нынешний скрипт, целиком

#194405

Я потому и говорил, что лучше использовать дистрибутиво-специфичные способы настройки iptables, дабы проблем не было ненужных

#194488

"дистрибутиво-специфичные способы настройки" Честно говоря я даже незнаю что это и сем едят :(

Это нынешний конфиг iptables:

text

# Generated by iptables-save v1.4.9 on Wed Sep 21 11:31:06 2011
*nat
:PREROUTING ACCEPT [607:53479]
:OUTPUT ACCEPT [638:41859]
:POSTROUTING ACCEPT [3:3439]
-A PREROUTING -i eth1 -p tcp -m tcp --dport 80 -j DNAT --to-destination 192.168.10.1:3128 
-A PREROUTING -i eth0 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 3128 
-A PREROUTING -i eth1 -p tcp -m tcp --dport 8080 -j DNAT --to-destination 192.168.10.1:3128 
-A PREROUTING -i eth0 -p tcp -m tcp --dport 8080 -j REDIRECT --to-ports 3128 
-A POSTROUTING -o eth0 -j MASQUERADE 
-A POSTROUTING -s 192.168.10.1/32 ! -d 192.168.10.79/32 -p tcp -m tcp --dport 3553 -j SNAT --to-source 188.128.2.58 
-A POSTROUTING -s 192.168.10.1/32 -d 192.168.10.79/32 -p tcp -m tcp --dport 3553 -j SNAT --to-source 188.128.2.58 
-A POSTROUTING -s 192.168.10.79/32 -d 192.168.10.0/24 -p tcp -m tcp --dport 3553 -j SNAT --to-source 188.128.2.58 
COMMIT
# Completed on Wed Sep 21 11:31:06 2011
# Generated by iptables-save v1.4.9 on Wed Sep 21 11:31:06 2011
*filter
:INPUT ACCEPT [8021:4083934]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [9139:4175547]
-A FORWARD -i eth0 -o eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT 
-A FORWARD -i eth1 -o eth0 -j ACCEPT 
-A OUTPUT -o eth0 -p tcp -m tcp --dport 3553 -j ACCEPT 
-A OUTPUT -o eth1 -p tcp -m tcp --dport 3553 -j ACCEPT 
COMMIT
# Completed on Wed Sep 21 11:31:06 2011

Это скрипт Firewall.sh

text

#!/bin/bash
# Тут в принципе может и не надо этого всего но не помеха
# вдруг какой модуль не подгружен или форвардинг не включен
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

# Объявление переменных export IPT="iptables"

# Интерфейс который смотрит в интернет export WAN=eth0

# Локальная сеть export LAN=eth1 export LAN_IP_RANGE=192.168.10.0/24

# Очистка всех цепочек iptables $IPT -F $IPT -F -t nat $IPT -F -t mangle $IPT -X $IPT -t nat -X $IPT -t mangle -X

# Закрываем изначально ВСЁ (т.е. изначально все что не разрешено - запрещено): $IPT -P INPUT DROP $IPT -P OUTPUT DROP $IPT -P FORWARD DROP

# разрешаем локальный траффик для loopback и внутренней сети $IPT -A INPUT -i lo -j ACCEPT $IPT -A INPUT -i $LAN -j ACCEPT $IPT -A OUTPUT -o lo -j ACCEPT $IPT -A OUTPUT -o $LAN -j ACCEPT

# Состояние ESTABLISHED говорит о том, что это не первый пакет в соединении. # Пропускать все уже инициированные соединения, а также дочерние от них $IPT -A INPUT -p all -m state --state ESTABLISHED,RELATED -j ACCEPT

# Пропускать новые, а так же уже инициированные и их дочерние соединения $IPT -A OUTPUT -p all -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT

# Разрешить форвардинг для новых, а так же уже инициированных # и их дочерних соединений $IPT -A FORWARD -p all -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT

# Включаем фрагментацию пакетов. Необходимо из за разных значений MTU $IPT -I FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu

# Отбрасывать все пакеты, которые не могут быть идентифицированы # и поэтому не могут иметь определенного статуса. $IPT -A INPUT -m state --state INVALID -j DROP $IPT -A FORWARD -m state --state INVALID -j DROP

# Приводит к связыванию системных ресурсов, так что реальный # обмен данными становится не возможным. $IPT -A INPUT -p tcp ! --syn -m state --state NEW -j DROP $IPT -A OUTPUT -p tcp ! --syn -m state --state NEW -j DROP

# Разрешаем доступ из внутренней сети наружу $IPT -A FORWARD -i $LAN -o $WAN -j ACCEPT

# Запрещаем доступ снаружи во внутреннюю сеть $IPT -A FORWARD -i $WAN -o $LAN -j REJECT

# Маскарадинг $IPT -t nat -A POSTROUTING -o $WAN -s $LAN_IP_RANGE -j MASQUERADE

#Заворот трафика на SQUID $IPT -A PREROUTING -i $LAN -p tcp -m tcp --dport 80 -j DNAT --to-destination 192.168.10.1:3128 $IPT -A PREROUTING -i $WAN -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 3128 $IPT -A PREROUTING -i $LAN -p tcp -m tcp --dport 8080 -j DNAT --to-destination 192.168.10.1:3128 $IPT -A PREROUTING -i $WAN -p tcp -m tcp --dport 8080 -j REDIRECT --to-ports 3128

#Заворот на порт 3553 $IPT -A PREROUTING -i $WAN -p tcp -m tcp --dport 3553 -j DNAT --to-destination 192.168.10.70:3553

# Далее дано как пример открытие портов извне: # ********************************************************************** # Открываем порт для ssh $IPT -A INPUT -i $WAN -p tcp --dport 22 -j ACCEPT

# Открываем порт 3553 $IPT -A INPUT -i $WAN -p tcp --dport 3553 -j ACCEPT

# Открытие 443 порта $IPT -A INPUT -p tcp --dport 443 -j ACCEPT

# Открываем 80 порт для веб сайтов $IPT -A INPUT -i $WAN -p tcp --dport 80 -j ACCEPT $IPT -A INPUT -i $WAN -p udp --dport 80 -j ACCEPT

#********************************************************************** # Вывод информации о состоянии таблиц. route -n $IPT -L $IPT -L -v -n $IPT -L -v -n -t nat

Кстати скрипт запускается только без строки "#!/bin/bash"

#194523

GLADIATOR13, если в консоли:
[console]$ iptables[/console]
что происходит?
В скрипте

text
export IPT="iptables"

замени

text
export IPT="/sbin/iptables"

я надеюсь он там есть
или так

text
IPT="/sbin/iptables"

Для того чтобы iptables не "молчал"

text
export IPT="/sbin/iptables -v"
#194525

Если набрать iptables то он скажет что неправельно задан параметр воспользуйтесь командой iptables --help или iptables -h

может я неправельно задал параметр скрипта через chmod ? Хотя пользовался вот этим параметром chmod +x

#194529

Переменные объявляй без export.

text
# Объявление переменных
IPT="/sbin/iptables"

# Интерфейс который смотрит в интернет WAN=ppp0

# Локальная сеть LAN=eth1 LAN_IP_RANGE=192.168.0.0/24

#194550

Кстати на это тоже ругался

text

modprobe iptable_nat
modprobe ip_conntrack_ftp
modprobe ip_nat_ftp
text

: Нет такого файла или каталога/sys/net/ipv4/ip_forward
: Нет такого файла или каталога/sys/net/ipv4/ip_dynaddr
 not found.le iptable_nat
 not found.le ip_conntrack_ftp
 not found.le ip_nat_ftp
#194555

А так?

text
/sbin/modprobe iptable_nat

в принципе перестраховка на случай если модули не подгружены. wink
ы. Это уже спицифика FC.
У меня debian/gentoo что так что так работает.

#194565

ТС, уберите наконец все свои скрипты и пишите правила прямо в /etc/sysconfig/iptables
Как минимум, не придется отвлекаться на лишние вещи

И приведите правила в соответствие с советами, которые Вам уже давались с этой теме. Только после этого можно будет рассуждать о работоспособности или неработоспособности конфига

#194568

Ко всем же остальным, кто отметился в этой теме, кроме ТС...
Большая просьба, если задается конкретный вопрос от кого-либо, будьте добры решать именно запрошенную проблему, а не создавать лишние сложности. Не забывайте, что уровень у посетителей форума очень разный и не все понимают, каким образом работает то или иное в дистрибутивах.
Если же начинаете объяснять что-то, выходящие за пределы темы, заявленной ТС, то будьте добры объяснять как можно более подробно и доступно, дабы многие вопросы отпадали сами.

Надеюсь на понимание. Спасибо.

#194569

Hrafn, специально из-за этого топика поставлю Федору и проверю.

#194574

Что проверять-то? Я писал, что работать будет и из простого bash-скрипта, и из конфига.
Вопрос не в том, как запускать, а в том, что если в дистрибутиве существуют стандартные для него методы настройки, то, я так считаю, их придерживаться и надо. Если не ради самого себя, то ради того, кому этим сервером придется заниматься после тебя.

К тому же, судя по всему, ТС пока не достаточно хорошо разбирается в вопросе и создавать дополнительные трудности - зачем?

Допустим, в красношапочных дистрах я не припомню /sbin/runscript. Встречал такое только в Gentoo.
Переменные в Bash объявляются без export.

#194591
Hrafn написал:
если в дистрибутиве существуют стандартные для него методы настройки, то, я так считаю, их придерживаться и надо.

Ну я спрашивал что есть стандартные методы настройки для FC - ответа не было. Точнее он может и был http://linuxforum.ru/viewtopic.php?pid=212565#p212565 но главное что интересовало, раз уж говорим о специфике дистрибутива - это инструменты для создания правил iptables в Федоре, iptables-save/restore - есть везде.

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