Автор |
Сообщение |
ProFfeSsoRr Гуру |
|
Ну вот и добрался я до настройки iptables. Где бы доступным языком про него прочитать? А то никаких его конфигов в /etc/ я не обнаружил, и беглое чтение интернета показало, что как-то его настройки хитро хранятся. Так что прошу помощи - ссылок на руководства, от простых и понятных до полных и сложных. |
|
|
|
|
dlnsk Гуру |
|
Мне инет помог когда надо было...
...монструозная это штука - iptables, но крутая... |
|
|
|
|
ProFfeSsoRr Гуру |
|
Че-то пошарил я гуглом, и запутался еще больше. Руководств достаточно много, но все какие-то однобокие, и ничего не объясняют. Мне вот пока что надо добавить в iptables только одну штуку: проброс портов для DC, но вот такого руководства я не нашел. Везде делают огромные конфиги на все сразу, причем еще и не все в них понятно |
|
|
|
|
David Гуру |
|
|
|
|
ProFfeSsoRr Гуру |
|
Цитата: |
http://www.opennet.ru/docs/RUS/iptables/index.html |
ох нифига се... Целый учебник! Он ведь наверняка в печатном виде существует? |
|
|
|
|
dlnsk Гуру |
|
Подробненько...
ip_tables.rar |
Описание: |
|
Скачать |
Имя файла: |
ip_tables.rar |
Размер файла: |
338.34 KB |
Скачано: |
346 раз(а) |
|
|
|
|
|
ProFfeSsoRr Гуру |
|
Спасибо за руководства - вчера поразбирался с этим со всем этим хозяйством, вроде понял... Буду сегодня список правил составлять |
|
|
|
|
ProFfeSsoRr Гуру |
|
Что-то не могу я понять, попробовал сделать правила, а не канают. Скиньте пожалуйста для примера команды, мапящие порты для DC (один TCPшный и один UPDшный).
Блин! Вообще, поделитесь кто-нить примером своего конфига! Нифига не могу понять! Читал-читал учебник, вроде все элементарно, сделал правило, а не пашет! Уже срочняк надо DC настроить чтоб работал, остальное-то пофиг, разберусь по примерам, а вот DC надо уже прям позарез |
|
|
|
|
David Гуру |
|
ProFfeSsoRr
нарисуй структуру сети |
|
|
|
|
Vlad Гуру Предупреждений : 4
|
|
Как я понял это что-то вроде
в-рот-мне-ноги ---> linuxx ---------> мудем -------> EVIL
192.168.0.3 ____ 192.168.0.2 ___ 192.168.0.1
или даже проще:
в-рот-мне-ноги ---> мудем -------> EVIL
192.168.0.2 ____ 192.168.0.1
З.Ы. Может тебе NAT нужен?
Цитата: |
Сам только что пропарился с пробросом портов... Вот вычитал в инете
ptables -t nat -A PREROUTING -s $FROM -d $GATE_IP -i eth1 -p tcp -m tcp --sport 1024:65535 --dport 3389 -j DNAT --to-destination $W2K_SERVER
iptables -t nat -A POSTROUTING -d $W2K_SERVER -o eth0 -p tcp -m tcp --dport 3389 -j SNAT --to-source $GATE_INNER_IP
iptables -A INPUT -s $FROM -d $GATE_IP -i eth1 -p tcp -m tcp --dport 3389 -j ACCEPT
iptables -A FORWARD -s $FROM -i eth1 -p tcp -m tcp --dport 3389 -j ACCEPT
iptables -A FORWARD -s $W2K_SERVER -d $FROM -i eth0 -p tcp -m tcp --sport 3389 -j ACCEPT
где
$FROM - кому разрешено ломиться к внутреннему серверу
$GATE_IP - внешний ip-адрес шлюза
$GATE_INNER_IP - внутренний ip-адрес шлюза
$W2K_SERVER - ну это понятно |
ЗЫЫ: http://wiki.auditory.ru/Iptables |
|
|
|
|
ProFfeSsoRr Гуру |
|
Цитата: |
нарисуй структуру сети |
ppp0 - модем бриджа, eth0 - сеть, в которой модем, eth1 - моя локалка. Мапить надо с ppp0 на eth1, все элементарно в общем-то.
Цитата: |
Может тебе NAT нужен |
ога, нужен. Спасибо за пример, ща попробую под себя переделать. |
|
|
|
|
David Гуру |
|
если не ошибся нигде, то вроде должно быть так:
вход:
(все что пришло с модема на внешний интерфейс прокси на порт tcp 1234 и udp 1235, пробрасывается на комп по заданным портам)
Код: |
A PREROUTING -s $MODEM -d $LINUX_OUTER -i eth0 -p tcp --dport 1234 -j DNAT --to $COMP:$PORT_TCP
A PREROUTING -s $MODEM -d $LINUX_OUTER -i eth0 -p udp --dport 1235 -j DNAT --to $COMP:$PORT_UDP
A FORWARD -i eth0 -p tcp --dport 1234 -d $COMP -j ACCEPT
A FORWARD -i eth0 -p udp --dport 1235 -d $COMP -j ACCEPT
|
(все что пытается уйти с компа на внутренний интерфейс прокси на заданные порты, пробрасывается на внешку по tcp 1234 и udp 1235 портам)
выход:
Код: |
A POSTROUTING -s $COMP -d $LINUX_INNER -o eth1 -p tcp --dport $PORT_TCP -j SNAT --to $MODEM:1234
A POSTROUTING -s $COMP -d $LINUX_INNER -o eth1 -p udp --dport $PORT_UDP -j SNAT --to $MODEM:1235
A FORWARD -o eth1 -p tcp --dport 1234 -d $MODEM -j ACCEPT
A FORWARD -o eth1 -p udp --dport 1235 -d $MODEM -j ACCEPT |
где
$MODEM - внешний ip адрес
$LINUX_OUTER - ip linux-а на eth0 (в модем)
$LINUX_INNER - ip linux-а на eth1 (в локалку)
$COMP - комп в сети eth1
$PORT_TCP - нужный tcp порт на компе $COMP
$PORT_UDP - нужный udp порт на компе $COMP |
|
|
|
|
ProFfeSsoRr Гуру |
|
David спасибо большое. Только все равно какая-то ерунда. Походу, я чего-то элементарного не могу понять. Итак:
1) сделал /etc/rc.firewall, права доступа полные, файл исполняемый. Содержимое:
Нажмите сюда, чтобы просмотреть текст
#!/bin/sh
IPTABLES="/sbin/iptables"
MODEM="90.189.х.х"
LINUX_OUTER="192.168.1.2"
LINUX_INNER="192.168.0.1"
COMP="192.168.0.3-192.168.0.20"
PORT_TCP="1234"
PORT_UDP="1235"
$IPTABLES -A PREROUTING -s $MODEM -d $LINUX_OUTER -i eth0 -p tcp --dport 1234 -j DNAT --to $COMP:$PORT_TCP
$IPTABLES -A PREROUTING -s $MODEM -d $LINUX_OUTER -i eth0 -p udp --dport 1235 -j DNAT --to $COMP:$PORT_UDP
$IPTABLES -A FORWARD -i eth0 -p tcp --dport 1234 -d $COMP -j ACCEPT
$IPTABLES -A FORWARD -i eth0 -p udp --dport 1235 -d $COMP -j ACCEPT
$IPTABLES -A POSTROUTING -s $COMP -d $LINUX_INNER -o eth1 -p tcp --dport $PORT_TCP -j SNAT --to $MODEM:1234
$IPTABLES -A POSTROUTING -s $COMP -d $LINUX_INNER -o eth1 -p udp --dport $PORT_UDP -j SNAT --to $MODEM:1235
$IPTABLES -A FORWARD -o eth1 -p tcp --dport 1234 -d $MODEM -j ACCEPT
$IPTABLES -A FORWARD -o eth1 -p udp --dport 1235 -d $MODEM -j ACCEPT
|
2) Открываю рутовую консоль, делаю в ней cat /etc/rc.firewall | iptables-restore -n и получаю ошибку:
Цитата: |
iptables-restore:line 2 failed |
|
|
|
|
|
serg1982 Форумчанин |
|
ProFfeSsoRr писал(а): |
David спасибо большое. Только все равно какая-то ерунда. Походу, я чего-то элементарного не могу понять. Итак:
1) сделал /etc/rc.firewall, права доступа полные, файл исполняемый. Содержимое:
Нажмите сюда, чтобы просмотреть текст
#!/bin/sh
IPTABLES="/sbin/iptables"
MODEM="90.189.х.х"
LINUX_OUTER="192.168.1.2"
LINUX_INNER="192.168.0.1"
COMP="192.168.0.3-192.168.0.20"
PORT_TCP="1234"
PORT_UDP="1235"
$IPTABLES -A PREROUTING -s $MODEM -d $LINUX_OUTER -i eth0 -p tcp --dport 1234 -j DNAT --to $COMP:$PORT_TCP
$IPTABLES -A PREROUTING -s $MODEM -d $LINUX_OUTER -i eth0 -p udp --dport 1235 -j DNAT --to $COMP:$PORT_UDP
$IPTABLES -A FORWARD -i eth0 -p tcp --dport 1234 -d $COMP -j ACCEPT
$IPTABLES -A FORWARD -i eth0 -p udp --dport 1235 -d $COMP -j ACCEPT
$IPTABLES -A POSTROUTING -s $COMP -d $LINUX_INNER -o eth1 -p tcp --dport $PORT_TCP -j SNAT --to $MODEM:1234
$IPTABLES -A POSTROUTING -s $COMP -d $LINUX_INNER -o eth1 -p udp --dport $PORT_UDP -j SNAT --to $MODEM:1235
$IPTABLES -A FORWARD -o eth1 -p tcp --dport 1234 -d $MODEM -j ACCEPT
$IPTABLES -A FORWARD -o eth1 -p udp --dport 1235 -d $MODEM -j ACCEPT
|
2) Открываю рутовую консоль, делаю в ней cat /etc/rc.firewall | iptables-restore -n и получаю ошибку:
Цитата: |
iptables-restore:line 2 failed |
|
/etc/rc.firewall это просто скрипт который надо запускать sh /etc/rc.firewall, если хотите именно сохранять и загружать правила, то после того как запустите этот скрипт, напрмер, при шутдауне надо сделать iptables-save > /etc/iptables, а при загрузке системы iptables-restore < /etc/iptables. |
|
|
|
|
ProFfeSsoRr Гуру |
|
Хорошо, запустил, ругается теперь на то, что " host/network 192.168.0.3-192.168.0.20 not found" |
|
|
|
|
serg1982 Форумчанин |
|
ProFfeSsoRr писал(а): |
Хорошо, запустил, ругается теперь на то, что " host/network 192.168.0.3-192.168.0.20 not found" |
-s, --source [!] address[/mask]
Source specification. Address can be either a network name, a hostname (please note that specifying any name to be resolved with a
remote query such as DNS is a really bad idea), a network IP address (with /mask), or a plain IP address. The mask can be either a
network mask or a plain number, specifying the number of 1’s at the left side of the network mask. Thus, a mask of 24 is equivalent
to 255.255.255.0. A "!" argument before the address specification inverts the sense of the address. The flag --src is an alias for
this option.
-d, --destination [!] address[/mask]
Destination specification. See the description of the -s (source) flag for a detailed description of the syntax. The flag --dst is
an alias for this option.
тоесть, в таком виде задавать нельзя (192.168.0.3-192.168.0.20) а надо примерно так 192.168.0.0/28 это 192.168.0.1-192.168.0.14... |
|
|
|
|
serg1982 Форумчанин |
|
Если хочется задавать именно диапазоны портов или адресов пречисляя черезя запятую или через тире - то надо использовать MATCH EXTENSIONS и тогда можно делать так:
iprange
This matches on a given arbitrary range of IPv4 addresses
[!]--src-range ip-ip
Match source IP in the specified range.
[!]--dst-range ip-ip
Match destination IP in the specified range.
multiport
This module matches a set of source or destination ports. Up to 15 ports can be specified. A port range (port:port) counts as two ports.
It can only be used in conjunction with -p tcp or -p udp.
--source-ports [!] port[,port[,port:port...]]
Match if the source port is one of the given ports. The flag --sports is a convenient alias for this option.
--destination-ports [!] port[,port[,port:port...]]
Match if the destination port is one of the given ports. The flag --dports is a convenient alias for this option.
--ports [!] port[,port[,port:port...]]
Match if either the source or destination ports are equal to one of the given ports. |
|
|
|
|
ProFfeSsoRr Гуру |
|
Цитата: |
а надо примерно так 192.168.0.0/28 это 192.168.0.1-192.168.0.14 |
э... не понял немножко. 192.168.0.0/24 вроде пишут когда задают диапазон 192.168.0.0-255, а у тебя /28 - и это всего-то 192.168.0.1-14. Как тогда это число после слэша выбирается?Последний раз редактировалось: ProFfeSsoRr (Чт 17-07-08 : 15-46), всего редактировалось 1 раз |
|
|
|
|
serg1982 Форумчанин |
|
ProFfeSsoRr писал(а): |
Цитата: |
а надо примерно так 192.168.0.0/28 это 192.168.0.1-192.168.0.14 |
э... не понял немножко. 192.168.0.0/24 вроде пишут когда задают диапазон 192.168.0.0-255, а у тебя /28 - и это всего-то 192.168.0.1-28. Как тогда это число после слэша выбирается? |
Чем больше цифра после слеша тем меньше диапозон получается для /24 - 255 узлов для /28 - 14 узлов.
посмотри вот тут калькулятор ipcalc.dewil.ru |
|
|
|
|
ProFfeSsoRr Гуру |
|
Цитата: |
Чем больше цифра после слеша тем меньше диапозон получается |
блин, хитро... Тек, сейчас попробовал сделать вот так:
Нажмите сюда, чтобы просмотреть текст
IPTABLES="/sbin/iptables"
MODEM="90.189.х.х"
LINUX_OUTER="192.168.1.2"
LINUX_INNER="192.168.0.1"
COMP="192.168.0.0/24"
PORT_TCP="1234"
PORT_UDP="1235"
$IPTABLES -A PREROUTING -s $MODEM -d $LINUX_OUTER -i eth0 -p tcp --dport 1234 -j DNAT --to $COMP
$IPTABLES -A PREROUTING -s $MODEM -d $LINUX_OUTER -i eth0 -p udp --dport 1235 -j DNAT --to $COMP
$IPTABLES -A FORWARD -i eth0 -p tcp --dport 1234 -d $COMP -j ACCEPT
$IPTABLES -A FORWARD -i eth0 -p udp --dport 1235 -d $COMP -j ACCEPT
$IPTABLES -A POSTROUTING -s $COMP -d $LINUX_INNER -o eth1 -p tcp --dport $PORT_TCP -j SNAT --to $MODEM
$IPTABLES -A POSTROUTING -s $COMP -d $LINUX_INNER -o eth1 -p udp --dport $PORT_UDP -j SNAT --to $MODEM
$IPTABLES -A FORWARD -o eth1 -p tcp --dport 1234 -d $MODEM -j ACCEPT
$IPTABLES -A FORWARD -o eth1 -p udp --dport 1235 -d $MODEM -j ACCEPT
|
так ругается Bad IP adress 192.168.0.0/24
А если адрес какого-нить одного компа в локалке вставить, то будет "No chain/target/match by that name" 4 раза вылезать. |
|
|
|
|
|