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

Linux секция за начинаещи => Настройка на програми => Темата е започната от: milkonoj в Jun 25, 2009, 14:52



Титла: Малко помощ с iptables
Публикувано от: milkonoj в Jun 25, 2009, 14:52
Код
GeSHi (Bash):
  1. #!/bin/bash
  2. ifconfig=/sbin/ifconfig
  3. route=/sbin/route
  4. iptables=/sbin/iptables
  5. int=eth1
  6. ext=eth0
  7.  
  8. $ifconfig eth0 192.168.1.2 netmask 255.255.255.0
  9. $route add default gw 192.168.1.1
  10.  
  11. $iptables -F
  12. $iptables -t nat -F
  13. $iptables -A FORWARD -i $int  -j ACCEPT
  14. $iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o $ext -j SNAT --to-source 192.168.1.2
  15. $iptables -A FORWARD -i $ext -j ACCEPT
  16. $iptables -t nat -A POSTROUTING -s #outerip# -o $int -j SNAT --to-source #innerip#    
  17. /bin/cat /root/adsl-dns > /etc/resolv.conf
  18. iptables-save > /etc/sysconfig/iptables-adsl
  19.  
  20.  

Та въпроса ми е, как да го направя така набор от определени външни ip-та да имат достъп само до определен хост от вътрешната мрежа.
15 и 16 ред сам ги добавял днес с идеята, че може да тръгне по тоя начин. Така, че моля помогнете, нов съм в тези неща и ако може да по-обясните повечко, каква е цялата далавера.


Титла: Re: Малко помощ с iptables
Публикувано от: Iron_steel в Jun 25, 2009, 15:42
Здравей.Аз също съм новак ,но ще се опитам да ти помогна.

Код:
/sbin/iptables -P INPUT DROP
/sbin/iptables -t nat -A PREROUTING -p tcp -i eth0 --dport  8888  -j DNAT --to $intip:80
/sbin/iptables -A FORWARD -p tcp -i $ext -d $intip --dport 80 -j ACCEPT
/sbin/iptables -A INPUT -s $allowedhosts -d $extip -p tcp --dport  8888 -j ACCEPT

С първата команда спираш входящия трафик.Със следващите две си правиш
portforwarding-а към кой вътрешен хост да препраща.
Със последната указва  кой хост може да се свърже към вътрешния ти хост.
Дано ме разбереш.Ако греша казвайте,и Аз съм нов.


Титла: Re: Малко помощ с iptables
Публикувано от: VladSun в Jun 25, 2009, 22:53
Здравей.Аз също съм новак ,но ще се опитам да ти помогна.

Код:
/sbin/iptables -P INPUT DROP
/sbin/iptables -t nat -A PREROUTING -p tcp -i eth0 --dport  8888  -j DNAT --to $intip:80
/sbin/iptables -A FORWARD -p tcp -i $ext -d $intip --dport 80 -j ACCEPT
/sbin/iptables -A INPUT -s $allowedhosts -d $extip -p tcp --dport  8888 -j ACCEPT

С първата команда спираш входящия трафик.Със следващите две си правиш
portforwarding-а към кой вътрешен хост да препраща.
Със последната указва  кой хост може да се свърже към вътрешния ти хост.
Дано ме разбереш.Ако греша казвайте,и Аз съм нов.

Пакетите в INPUT веригата нямат нищо общо с пакетите във FORWARD веригата:

(http://www.linuxhomenetworking.com/wiki/images/f/f0/Iptables.gif)


Титла: Re: Малко помощ с iptables
Публикувано от: petar258 в Jun 26, 2009, 10:45
input веригата е над nat и forward, така че ако там няма глобална забрана(INPUT DROP) съчетана с разрешение за минаване на определени пакети, няма да постигнеш целта си - просто няма какво да спре пакетите да минат по който и да е друг път
хубаво си дал схемата, но е добре да прочетеш обясненията към програмката iptables за да не я тълкуваш грешно


Титла: Re: Малко помощ с iptables
Публикувано от: VladSun в Jun 26, 2009, 10:57
А сега ми кажи къде се намира PREROUTING (*НЕЗАВИСИМО* коя таблица) и къде INPUT ;)


Титла: Re: Малко помощ с iptables
Публикувано от: VladSun в Jun 26, 2009, 10:59
input веригата е над nat и forward

nat е таблица, INPUT и FORWARD са вериги ...


Титла: Re: Малко помощ с iptables
Публикувано от: VladSun в Jun 26, 2009, 11:04
Значи идеята е следната:
1) идва пакет към ИП:порт на който ще му правим port forward (DNAT)
2) в PREROUTING/nat го препращаме към съответния host:port
- по този начин решението за маршрутизиране се променя от INPUT към FORWARD веригата
- следствие : във FORWARD веригата трябва да е разрешено преминаването на този пакет
3) пакетът отива през FORWARD веригата до съответния host:port

....

т.е. пакетът НИКОГА не се "допира" дори до INPUT веригата ;)


Титла: Re: Малко помощ с iptables
Публикувано от: gat3way в Jun 26, 2009, 11:18
Какво общо има INPUT?


Титла: Re: Малко помощ с iptables
Публикувано от: milkonoj в Jun 26, 2009, 11:44
И аз това не разбрах. След изпълнението на Bash-а ми да дава multiple -d flags not allowed. Със IPtables 1.2.6a съм. Та пак да повторя искам да го направя така, че определено IP да има достъп само до един определен хост във вътрешната мрежа и достъпа да става през telnet и ftp.


Титла: Re: Малко помощ с iptables
Публикувано от: VladSun в Jun 26, 2009, 11:50
1. МНОГО ти е стар iptables
2. Варанти много - ето ти един от тях:
Код
GeSHi (Bash):
  1. $iptables -t nat -A PREROUTING -p tcp -i $ext -s ИП1-което-има-достъп -d IP-то-на-вънпния-интетрфейс --dport  8888  -j DNAT --to ИП-то-на-машината-от-локалната-мрежа:80
  2. $iptables -t nat -A PREROUTING -p tcp -i $ext -s ИП2-което-има-достъп -d IP-то-на-вънпния-интетрфейс --dport  8888  -j DNAT --to ИП-то-на-машината-от-локалната-мрежа:80


Титла: Re: Малко помощ с iptables
Публикувано от: milkonoj в Jun 26, 2009, 11:54
И сменям порт 80 с 23?
Той е ми е почти набор тоя компютър, нормално е.