Linux за българи: Форуми

Linux секция за напреднали => Хардуерни и софтуерни проблеми => Темата е започната от: proxye в Mar 20, 2007, 09:08



Титла: прост въпрос относно рутиране
Публикувано от: proxye в Mar 20, 2007, 09:08
Машината е Slackware 10.1.0 която рутира нет на няколко машини. Проблема е че искам да разреша нет само на две машини от една мрежа но не знам как. Моля за нужното правило посредством iptables. На рутера към машините
ip-192.168.1.1 mask-255.255.255.0. Машините които искам да имат нет са 192.168.1.10 и 192.168.1.20. Всички останали не трябва да получават нет. В момента системата работи но за цялата група.
Надявам че сте ме разбрали какво искам!
Благодаря предварително!


Титла: прост въпрос относно рутиране
Публикувано от: Hapkoc в Mar 20, 2007, 10:21
Преполагам имаш някакво ей такова правило:

iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -j SNAT --to-source X.X.X.X

Смени го ей така:

iptables -t nat -A POSTROUTING -s 192.168.1.10 -j SNAT --to-source X.X.X.X
iptables -t nat -A POSTROUTING -s 192.168.1.20 -j SNAT --to-source X.X.X.X

М/у другото нямаше да е лошо да си пуснеш цялата защитна тук, по-лесно се помага като знаеш какво е положението...





Титла: прост въпрос относно рутиране
Публикувано от: laskov в Mar 20, 2007, 11:38
... ако пък имаш
Цитат
EXTERNAL=интерфейс навън
INTERNAL=интерфейс навътре
iptables -A FORWARD -o $EXTERNAL -i $INTERNAL -j ACCEPT
направи
Цитат
iptables -A FORWARD -o $EXTERNAL -i $INTERNAL -p tcp -s 192.168.1.10 -j ACCEPT
iptables -A FORWARD -o $EXTERNAL -i $INTERNAL -p tcp -s 192.168.1.20 -j ACCEPT
Така ще разрешиш само техните заявки към навън. Трябва да имаш и
Цитат
iptables -P FORWARD DROP
за да спираш всички останали.


Титла: прост въпрос относно рутиране
Публикувано от: proxye в Mar 20, 2007, 11:57
Благодаря че се отзовахте.
#!/bin/bash

export PTH=/proc/sys/net/ipv4
iptables -F
iptables -F -t nat
iptables --table nat --append POSTROUTING --out-interface eth0 -j MASQUERADE
iptables -P FORWARD ACCEPT
iptables -P INPUT DROP
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -s 127.0.0.0/8 -d 127.0.0.0/8 -i lo -j ACCEPT
iptables -A INPUT -p icmp -j ACCEPT
iptables -A INPUT -s 192.168.1.0/24 -j ACCEPT
echo 1 > $PTH/ip_forward
echo 1 > $PTH/tcp_syncookies

Това ми е конфига и не ми се иска да го променям много. Какво трябва да добавя в този случай?


Титла: прост въпрос относно рутиране
Публикувано от: Hapkoc в Mar 20, 2007, 12:36
Не си много защитен така м/у другото....


Примерен код

#!/bin/bash

export PTH=/proc/sys/net/ipv4
iptables -F
iptables -F -t nat

iptables -P INPUT DROP
iptables -P FORWARD DROP

iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -s 127.0.0.0/8 -d 127.0.0.0/8 -i lo -j ACCEPT
iptables -A INPUT -p icmp -j ACCEPT
iptables -A INPUT -s 192.168.1.0/24 -j ACCEPT

iptables -A FORWARD -s 192.168.1.10 -d ! 192.168.1.0/24 -j ACCEPT
iptables -A FORWARD -s 192.168.1.20 -d ! 192.168.1.0/24 -j ACCEPT
iptables -A FORWARD -i eth0 -o eth1 -m state --state ESTABLISHED,RELATED -j ACCEPT

iptables -t nat -А POSTROUTING --out-interface eth0 -s 192.168.1.10 -j MASQUERADE
iptables -t nat -А POSTROUTING --out-interface eth0 -s 192.168.1.20 -j MASQUERADE

echo 1 > $PTH/ip_forward
echo 1 > $PTH/tcp_syncookies



много набързо е това


Титла: прост въпрос относно рутиране
Публикувано от: proxye в Mar 20, 2007, 13:34
#!/bin/bash

export PTH=/proc/sys/net/ipv4
iptables -F
iptables -F -t nat

iptables -P INPUT DROP
iptables -P FORWARD DROP

iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -s 127.0.0.0/8 -d 127.0.0.0/8 -i lo -j ACCEPT
iptables -A INPUT -p icmp -j ACCEPT
iptables -A INPUT -s 192.168.1.0/24 -j ACCEPT
iptables -A INPUT -s 80.80.130.0/22 -j ACCEPT

iptables -A FORWARD -s 192.168.1.10 -d ! 192.168.1.0/24 -j ACCEPT
iptables -A FORWARD -s 192.168.1.20 -d ! 192.168.1.0/24 -j ACCEPT
iptables -A FORWARD -i eth0 -o eth1 -m state --state ESTABLISHED,RELATED -j ACCEPT

iptables -t nat -А POSTROUTING --out-interface eth0 -s 192.168.1.10 -j MASQUERADE
iptables -t nat -А POSTROUTING --out-interface eth0 -s 192.168.1.20 -j MASQUERADE

echo 1 > $PTH/ip_forward
echo 1 > $PTH/tcp_syncookies

Така дотук добре но ако реша да рутирам още една мрежа например 80.80.130.0/22 като добавя още едно Ip на интерфейса към клиентите достатъчно ли е да добавя само "iptables -A INPUT -s 80.80.130/22 -j ACCEPT" ,както съм дописал по горе?
Това ако искам клиентите от тази мрежа да имат всички интернет.


Титла: прост въпрос относно рутиране
Публикувано от: Hapkoc в Mar 20, 2007, 13:57
Не. INPUT веригата е за пакети, които са до машината, която маршрутизира. Пакетите, които се препращат (т.е. от някой си от вътрешната мрежа до някой си в интернет) минават през FORWARD (също и през nat таблицата - PREROUTING/POSTROUTING веригите).

Малко подозрително ми се вижда това как ще закачиш 192.168.1.0/24 и 80.80.130.0/22 за един интерфейс... Не че не може, но дали е това което искаш да направиш...


Титла: прост въпрос относно рутиране
Публикувано от: proxye в Mar 20, 2007, 14:44
Ако съм решил все пак да направя това тогава какво друго трябва да допиша в конфига за да се рутира и всичко от допълнителната(80.80.130.0/22) мрежа?


Титла: прост въпрос относно рутиране
Публикувано от: Hapkoc в Mar 20, 2007, 15:03
Мда. Трябват правила във FORWARD веригата. В PRE/POSTROUTING няма нужда, т.к. предполагам не ти е целта да маскираш адресите от 80.80.130.0.


Титла: прост въпрос относно рутиране
Публикувано от: proxye в Mar 20, 2007, 15:21
80.80.130.0/22 беше само примерна мрежа да не те подвежда че са публични ip адреси. Да адресите искам да са маскирани. Съжелявам ако съм те объркал коригирам се мрежата да е примерно 10.10.10.0/24.