Написал такой скрипт:
#!/bin/sh
LAN="eth1"
LANNET="10.10.1.0/24"
LANIP="10.10.1.77"
WAN="eth2"
WANIP=X.X.X.X"
IPTABLES="/sbin/iptables"
$IPTABLES -F INPUT
$IPTABLES -F FORWARD
$IPTABLES -F OUTPUT
$IPTABLES -t nat -F PREROUTING
$IPTABLES -t nat -F PPOSTROUTING
$IPTABLES -t mangle -F
$IPTABLES -P INPUT DROP
$IPTABLES -P FORWARD DROP
$IPTABLES -P OUTPUT DROP
#------------------------------------------------------------------------------
$IPTABLES -A INPUT -s $LANNET -p tcp -d $LANIP -m multiport --dport 22,80,403,443,3128,8080,8081 -j ACCEPT
$IPTABLES -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 3128
$IPTABLES -t nat -A PREROUTING -p tcp --dport 8080 -j REDIRECT --to-ports 3128
$IPTABLES -t nat -A PREROUTING -p tcp --dport 443 -j REDIRECT --to-ports 3128
$IPTABLES -t nat -A PREROUTING -p tcp --dport 403 -j REDIRECT --to-ports 3128
$IPTABLES -t nat -A PREROUTING -p tcp --dport 8081 -j REDIRECT --to-ports 3128
$IPTABLES -t nat -A PREROUTING -p tcp --dport 2802 -j REDIRECT --to-ports 3128
$IPTABLES -t nat -A PREROUTING -p tcp --dport 1578 -j REDIRECT --to-ports 3128
$IPTABLES -t nat -A POSTROUTING -o $WAN -j MASQUERADE
$IPTABLES -t nat -A POSTROUTING -o $WAN -j SNAT --to-source $WANIP
echo "1" > /proc/sys/net/ipv4/ip_forward
При выполнении пишет:
iptables: No chain/target/math by that name.
Скрипт пробный и уже на этом шаге столкнулся с проблемой.
От руки все нормально вводится и при iptables -L показываются таблицы с введенными правилами.
Ос. Debian 4.
Нужные модули ядра загружены.
Понимаю, что ситуация простая, но я в Линуксе новичек. Помогите, если не сложно.
Debian/Ubuntu - Народ. Помотиге разобраться с iptables
-
BuGfiX
Re: Debian/Ubuntu - Народ. Помотиге разобраться с iptables
Цитата RFox:
$IPTABLES -t nat -F PPOSTROUTING
Опечатка
$IPTABLES -t nat -F PPOSTROUTING
Debian/Ubuntu - Народ. Помотиге разобраться с iptables
Опечатка
-
Аlchemist
Re: Debian/Ubuntu - Народ. Помотиге разобраться с iptables
При выполении данного скрипта на моей машине были выявлены следующие ошибки (заранее приношу извинения гуру данного сайта за то что буду говорить о мелочах, которые многим и так понятны. моя цель - найти и исправить ошибку):
1. Если просто скопировать этот скрипт из браузера в текстовый файл, а потом посмотреть в текстовом редакторе, то в каждой строке перед переносом строки стоит символ ^M - его нужно убрать.
2. Ошибка в том что у меня не было интерпретатора /bin/sh, но был /bin/bash
3. После первой строки #!/bin/bash должно быть 2 enter'а:
#!/bin/bash
(можно посмотреть в любом редакторе, к примеру Edit у Midnight Commander'а - там для этой строки будет чёрный фон)
4. В строке
WANIP=X.X.X.X"
не хватает открывающейся кавычки
5. Как уже было сказано выше в строке:
$IPTABLES -t nat -F PPOSTROUTING
опечатка: PPOSTROUTING
Примечание: данный ответ (iptables: No chain/target/math by that name.) показывался до того как я поставил открывающуюся кавычку на своё место.
Надеюсь это поможет
1. Если просто скопировать этот скрипт из браузера в текстовый файл, а потом посмотреть в текстовом редакторе, то в каждой строке перед переносом строки стоит символ ^M - его нужно убрать.
2. Ошибка в том что у меня не было интерпретатора /bin/sh, но был /bin/bash
3. После первой строки #!/bin/bash должно быть 2 enter'а:
#!/bin/bash
(можно посмотреть в любом редакторе, к примеру Edit у Midnight Commander'а - там для этой строки будет чёрный фон)
4. В строке
WANIP=X.X.X.X"
не хватает открывающейся кавычки
5. Как уже было сказано выше в строке:
$IPTABLES -t nat -F PPOSTROUTING
опечатка: PPOSTROUTING
Примечание: данный ответ (iptables: No chain/target/math by that name.) показывался до того как я поставил открывающуюся кавычку на своё место.
Надеюсь это поможет

-
TimurNS
Re: Debian/Ubuntu - Народ. Помотиге разобраться с iptables
Да, кавычку не заметил 
Цитата TimurNS:
2. Ошибка в том что у меня не было интерпретатора /bin/sh, но был /bin/bash
Обычно /bin/sh является символической ссылкой на /bin/bash (или другой интерпретатор).
Цитата TimurNS:
3. После первой строки #!/bin/bash должно быть 2 enter'а:
Это вовсе не обязательно.
Использование редакторов с подсветкой синтаксиса является хорошим способом выявления таких ошибок, и я бы посоветовал Вам научиться использовать vim, т.к. в нем с этим намного лучше чем в mc.

Цитата TimurNS:
2. Ошибка в том что у меня не было интерпретатора /bin/sh, но был /bin/bash
Debian/Ubuntu - Народ. Помотиге разобраться с iptables
Обычно /bin/sh является символической ссылкой на /bin/bash (или другой интерпретатор).
Цитата TimurNS:
3. После первой строки #!/bin/bash должно быть 2 enter'а:
Debian/Ubuntu - Народ. Помотиге разобраться с iptables
Это вовсе не обязательно.
Использование редакторов с подсветкой синтаксиса является хорошим способом выявления таких ошибок, и я бы посоветовал Вам научиться использовать vim, т.к. в нем с этим намного лучше чем в mc.
-
BuGfiX
Re: Debian/Ubuntu - Народ. Помотиге разобраться с iptables
Спасибо всем. Действительно опечатку не заметил. Ну и пункт 3 из ответа TimurNS.
-
RFox
Re: Debian/Ubuntu - Народ. Помотиге разобраться с iptables
Спасибо всем. Действительно опечатку не заметил. Ну и пункт 3 из ответа TimurNS.
-
RFox
Re: Debian/Ubuntu - Народ. Помотиге разобраться с iptables
2BuGfiX:
Дело в том, что проверял на Kubuntu Gutsy.
О том, что /bin/sh зачастую является ссылкой на /bin/bash знаю, но видимо в моём случае это не так.
Ещё раз подчёркиваю, что целью моего исследования было не ещё раз разобраться к концепциях, используемых в OS Linux, а решить проблему со скриптом.
Кроме того в самом начале было написано, но прошу не воспринимать всерьёз мелочи, которых буду касаться.
Про vi и vim знаю - работал не раз. Какое-то время мне это даже нравилось.
А вы, BuGfiX, собирали Linux из LFS?
Дело в том, что проверял на Kubuntu Gutsy.
О том, что /bin/sh зачастую является ссылкой на /bin/bash знаю, но видимо в моём случае это не так.
Ещё раз подчёркиваю, что целью моего исследования было не ещё раз разобраться к концепциях, используемых в OS Linux, а решить проблему со скриптом.
Кроме того в самом начале было написано, но прошу не воспринимать всерьёз мелочи, которых буду касаться.
Про vi и vim знаю - работал не раз. Какое-то время мне это даже нравилось.
А вы, BuGfiX, собирали Linux из LFS?
-
BuGfiX
Re: Debian/Ubuntu - Народ. Помотиге разобраться с iptables
Нет, не собирал, но в курсе что например, такие вещи как симлинки, существующие "из коробки" в большистве дистрибутивов , там могут отсутствовать. Думаю проблема решена, и если есть желание поговорить про LFS - охотно поговорю в другой теме 
-
RFox
Re: Debian/Ubuntu - Народ. Помотиге разобраться с iptables
Ответтьте здесь еще на один вопрс.
#!/bin/sh
LAN="eth1"
LANNET="10.10.1.0/24"
LANIP="10.10.1.77"
IPTABLES="/sbin/iptables"
$IPTABLES -F INPUT
$IPTABLES -F FORWARD
$IPTABLES -F OUTPUT
$IPTABLES -t nat -F PREROUTING
$IPTABLES -t nat -F PPOSTROUTING
$IPTABLES -t mangle -F
$IPTABLES -P INPUT DROP
$IPTABLES -P FORWARD DROP
$IPTABLES -P OUTPUT DROP
#------------------------------------------------------------------------------
$IPTABLES -A INPUT -s $LANNET -p tcp -d $LANIP --dport 22 -j ACCEPT
Почему не соединяется по ssh?
iptables -L выводит:
Chain INPUT (policy DROP)
target prot opt source destination
ACCEPT tcp -- 10.10.1.0/24 10.10.1.1 tcp dpt:ssh
Chain FORWARD (policy DROP)
target prot opt source destination
Chain OUTPUT (policy DROP)
target prot opt source destination
По логам идет обращение на 22 порт.
#!/bin/sh
LAN="eth1"
LANNET="10.10.1.0/24"
LANIP="10.10.1.77"
IPTABLES="/sbin/iptables"
$IPTABLES -F INPUT
$IPTABLES -F FORWARD
$IPTABLES -F OUTPUT
$IPTABLES -t nat -F PREROUTING
$IPTABLES -t nat -F PPOSTROUTING
$IPTABLES -t mangle -F
$IPTABLES -P INPUT DROP
$IPTABLES -P FORWARD DROP
$IPTABLES -P OUTPUT DROP
#------------------------------------------------------------------------------
$IPTABLES -A INPUT -s $LANNET -p tcp -d $LANIP --dport 22 -j ACCEPT
Почему не соединяется по ssh?
iptables -L выводит:
Chain INPUT (policy DROP)
target prot opt source destination
ACCEPT tcp -- 10.10.1.0/24 10.10.1.1 tcp dpt:ssh
Chain FORWARD (policy DROP)
target prot opt source destination
Chain OUTPUT (policy DROP)
target prot opt source destination
По логам идет обращение на 22 порт.
-
BuGfiX
Re: Debian/Ubuntu - Народ. Помотиге разобраться с iptables
У Вас разрешены только входящие пакеты на 22-й порт, нужно разрешить еще и исходящие.
Нужно добавить правило в OUTPUT:
$IPTABLES -A OUTPUT -s $LANIP -p tcp -d $LANNET --sport 22 -j ACCEPT
либо
$IPTABLES -A OUTPUT -s $LANIP -p tcp -d $LANNET -m state --state RELATED,ESTABLISHED -j ACCEPT
Нужно добавить правило в OUTPUT:
$IPTABLES -A OUTPUT -s $LANIP -p tcp -d $LANNET --sport 22 -j ACCEPT
либо
$IPTABLES -A OUTPUT -s $LANIP -p tcp -d $LANNET -m state --state RELATED,ESTABLISHED -j ACCEPT