Автор | 
		Сообщение | 
	
		 
		serg1982 Форумчанин
    | 
		
			
				
			 
			 
				
  | 
			 
			
				
 
	  | 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 раза вылезать. | 
	 
 
 
в первой строчке не --to а --to-destination наде делать.... | 
			 
		  | 
	
	 
		   | 
		 | 
	
	 
		  | 
	
		 
		serg1982 Форумчанин
    | 
		
			
				
			 
			 
				
  | 
			 
			
				
 
	  | 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 раза вылезать. | 
	 
 
 
Во еще -t NAT пропущен и у --to-destination всетаки дипозон 192.168.0.0-192.168.0.20 задается в конечном итоге вот так должно быть
 
COMP="192.168.0.0-192.168.0.20"
 
$IPTABLES -t NAT -A PREROUTING -s $MODEM -d $LINUX_OUTER -i eth0 -p tcp --dport 1234 -j DNAT --to-destination $COMP | 
			 
		  | 
	
	 
		   | 
		 | 
	
	 
		  | 
	
		 
		ProFfeSsoRr Гуру
    | 
		
			
				
			 
			 
				
  | 
			 
			
				| Так, 
 ему неизвестно, говорит неверный аргумент (указываю один комп), если задаю диапазоном, то говорит что не найден такой хост/сетка. | 
			 
		  | 
	
	 
		   | 
		 | 
	
	 
		  | 
	
		 
		serg1982 Форумчанин
    | 
		
			
				
			 
			 
				
  | 
			 
			
				
 
	  | ProFfeSsoRr писал(а): | 
	 
	
	  | Так, 
 ему неизвестно, говорит неверный аргумент (указываю один комп), если задаю диапазоном, то говорит что не найден такой хост/сетка. | 
	 
 
 
еще и -t nat мелкими буквами надо...
 
COMP="192.168.0.0-192.168.0.20"
 
iptables -t nat -A PREROUTING -s $MODEM -d $LINUX_OUTER -i eth0 -p tcp --dport 1234 -j DNAT --to-destination $COMP
 
вот после этого iptables-save
 
# Generated by iptables-save v1.4.0 on Thu Jul 17 20:41:28 2008
 
*mangle
 
:PREROUTING ACCEPT [21:4952]
 
:INPUT ACCEPT [21:4952]
 
:FORWARD ACCEPT [0:0]
 
:OUTPUT ACCEPT [14:4582]
 
:POSTROUTING ACCEPT [16:4646]
 
COMMIT
 
# Completed on Thu Jul 17 20:41:28 2008
 
# Generated by iptables-save v1.4.0 on Thu Jul 17 20:41:28 2008
 
*filter
 
:INPUT ACCEPT [21:4952]
 
:FORWARD ACCEPT [0:0]
 
:OUTPUT ACCEPT [14:4582]
 
COMMIT
 
# Completed on Thu Jul 17 20:41:28 2008
 
# Generated by iptables-save v1.4.0 on Thu Jul 17 20:41:28 2008
 
*nat
 
:PREROUTING ACCEPT [8:492]
 
:POSTROUTING ACCEPT [3:280]
 
:OUTPUT ACCEPT [3:280]
 
-A PREROUTING -s 90.189.1.1/32 -d 192.168.1.2/32 -i eth0 -p tcp -m tcp --dport 1234 -j DNAT --to-destination 192.168.0.0-192.168.0.20
 
COMMIT
 
# Completed on Thu Jul 17 20:41:28 2008 | 
			 
		  | 
	
	 
		   | 
		 | 
	
	 
		  | 
	
		 
		serg1982 Форумчанин
    | 
		
			
				
			 
			 
				
  | 
			 
			
				ну и sudo modprobe iptable_nat
 
перед этим надо естественно... | 
			 
		  | 
	
	 
		   | 
		 | 
	
	 
		  | 
	
		 
		ProFfeSsoRr Гуру
    | 
		
			
				
			 
			 
				
  | 
			 
			
				
 происходит вот что:
 
 
	  | Цитата: | 
	 
	
	  HomeServer init.d # /etc/rc.firewall
 
iptables v1.3.8: host/network `192.168.0.1-192.168.0.20' not found
 
Try `iptables -h' or 'iptables --help' for more information.
 
iptables v1.3.8: host/network `192.168.0.1-192.168.0.20' not found
 
Try `iptables -h' or 'iptables --help' for more information.
 
iptables v1.3.8: Unknown arg `--to-destination'
 
Try `iptables -h' or 'iptables --help' for more information.
 
iptables v1.3.8: Unknown arg `--to-destination'
 
Try `iptables -h' or 'iptables --help' for more information.
 
  | 
	 
 
 | 
			 
		  | 
	
	 
		   | 
		 | 
	
	 
		  | 
	
		 
		serg1982 Форумчанин
    | 
		
			
				
			 
			 
				
  | 
			 
			
				
 
	  | ProFfeSsoRr писал(а): | 
	 
	
	  
 происходит вот что:
 
 
	  | Цитата: | 
	 
	
	  HomeServer init.d # /etc/rc.firewall
 
iptables v1.3.8: host/network `192.168.0.1-192.168.0.20' not found
 
Try `iptables -h' or 'iptables --help' for more information.
 
iptables v1.3.8: host/network `192.168.0.1-192.168.0.20' not found
 
Try `iptables -h' or 'iptables --help' for more information.
 
iptables v1.3.8: Unknown arg `--to-destination'
 
Try `iptables -h' or 'iptables --help' for more information.
 
iptables v1.3.8: Unknown arg `--to-destination'
 
Try `iptables -h' or 'iptables --help' for more information.
 
  | 
	 
 
 | 
	 
 
 
закментируй все строчки кроме первой и добейся что б она работала... у меня iptables поновее но я сомневаюсь что проблема в этом... еще можеш вывод iptables-save который я выше писал сохранить в файл и загрузить его iptables-restore < file | 
			 
		  | 
	
	 
		   | 
		 | 
	
	 
		  | 
	
		 
		ProFfeSsoRr Гуру
    | 
		
			
				
			 
			 
				
  | 
			 
			
				
 
	  | Цитата: | 
	 
	
	  $IPTABLES -t nat -A PREROUTING -s $MODEM -d $LINUX_OUTER -i eth0 -p tcp --dport 1234 -j DNAT --to-destination $COMP
 
$IPTABLES -t nat -A PREROUTING -s $MODEM -d $LINUX_OUTER -i eth0 -p udp  --dport 1235 -j DNAT --to-destination $COMP  | 
	 
 
 работает (то бишь первые 2 строчки), а вот остальные 6 ругаются на $COMP, что неправильный диапазон. Я вот думаю - а где-нибудь можно тут заменить явное $COMP просто на интерфейс, с которого идут пакеты? Вообще, где обязательно надо указывать -s и -d, а где вместо них можно прописать -i и -o ?
 
 
Update:
 
 
	  | Цитата: | 
	 
	
	  $IPTABLES -t nat -A PREROUTING -s $MODEM -d $LINUX_OUTER -i eth0 -p tcp --dport 1234 -j DNAT --to-destination $COMP
 
$IPTABLES -t nat -A PREROUTING -s $MODEM -d $LINUX_OUTER -i eth0 -p udp  --dport 1235 -j DNAT --to-destination $COMP
 
$IPTABLES -A FORWARD -i eth0 -p tcp --dport 1234 -d 192.168.0.0/24 -j ACCEPT
 
$IPTABLES -A FORWARD -i eth0 -p udp --dport 1235 -d 192.168.0.0/24 -j ACCEPT 
 
$IPTABLES -t nat -A POSTROUTING -s $COMP -d $LINUX_INNER -o eth1 -p tcp --dport $PORT_TCP -j SNAT --to-source $MODEM
 
$IPTABLES -t nat -A POSTROUTING -s $COMP -d $LINUX_INNER -o eth1 -p udp --dport  $PORT_UDP -j SNAT --to-source $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  | 
	 
 
 
-s $COMP в 5 и 6 строчках не нравятся, то бишь опять ругается на "невозможно найти хост/сеть". Надо как-то это заменять. Остальное пашет. | 
			 
		  | 
	
	 
		   | 
		 | 
	
	 
		  | 
	
		 
		serg1982 Форумчанин
    | 
		
			
				
			 
			 
				
  | 
			 
			
				
 
	  | ProFfeSsoRr писал(а): | 
	 
	
	  
 
	  | Цитата: | 
	 
	
	  $IPTABLES -t nat -A PREROUTING -s $MODEM -d $LINUX_OUTER -i eth0 -p tcp --dport 1234 -j DNAT --to-destination $COMP
 
$IPTABLES -t nat -A PREROUTING -s $MODEM -d $LINUX_OUTER -i eth0 -p udp  --dport 1235 -j DNAT --to-destination $COMP  | 
	 
 
 работает (то бишь первые 2 строчки), а вот остальные 6 ругаются на $COMP, что неправильный диапазон. Я вот думаю - а где-нибудь можно тут заменить явное $COMP просто на интерфейс, с которого идут пакеты? Вообще, где обязательно надо указывать -s и -d, а где вместо них можно прописать -i и -o ? | 
	 
 
 
как раз наоборот -i -o -p можно пропускать вот -s -d в данном случае нельзя...
 
для следующих строчек где FORWARD там -t filter
 
где построутинг там -t nat и в конце --to-source
 
ну и дальше смотреть... | 
			 
		  | 
	
	 
		   | 
		 | 
	
	 
		  | 
	
		 
		ProFfeSsoRr Гуру
    | 
		
			
				
			 
			 
				
  | 
			 
			
				Ура, заменил $COMP в 5 и 6 строчках на 192.168.0.0/24 и скрипт заработал!!!!
 
 
serg1982 Огромнейшее спасибо за помощь в правке скрипта, David также огромнейшее спасибо за исходник! Правда не знаю, как бы справился без вашей помощи!  )  )  )   | 
			 
		  | 
	
	 
		   | 
		 | 
	
	 
		  | 
	
		 
		ProFfeSsoRr Гуру
    | 
		
			
				
			 
			 
				
  | 
			 
			
				Хм, скрипт-то работает, а DC порты все равно не видит. И дело видимо в том, что -d стоит модем, а вот назначение у пакета - сервак какой-нибудь в интернете! Попробовал убрать -d вообще - скрипт применяется, но тем не менее порты закрыты.
 
 
P.S. понимаю что замучал, но видимо я не все еще понял в настройке iptables   | 
			 
		  | 
	
	 
		   | 
		 | 
	
	 
		  | 
	
		 
		serg1982 Форумчанин
    | 
		
			
				
			 
			 
				
  | 
			 
			
				
 
	  | ProFfeSsoRr писал(а): | 
	 
	
	  Хм, скрипт-то работает, а DC порты все равно не видит. И дело видимо в том, что -d стоит модем, а вот назначение у пакета - сервак какой-нибудь в интернете! Попробовал убрать -d вообще - скрипт применяется, но тем не менее порты закрыты.
 
 
P.S. понимаю что замучал, но видимо я не все еще понял в настройке iptables   | 
	 
 
 
 
echo 1 > /proc/sys/net/ipv4/ip_forward
 
говорил ?
 
модно еще ACCEPT на LOG заменить и посмотреть чего он там вываливать будет... | 
			 
		  | 
	
	 
		   | 
		 | 
	
	 
		  | 
	
		 
		serg1982 Форумчанин
    | 
		
			
				
			 
			 
				
  | 
			 
			
				еще может стоит добавить
 
iptables -t nat -A POSTROUTING -j MASQUERADE | 
			 
		  | 
	
	 
		   | 
		 | 
	
	 
		  | 
	
		 
		serg1982 Форумчанин
    | 
		
			
				
			 
			 
				
  | 
			 
			
				| блин что то неправильно во всей конструкции надо подумать... | 
			 
		  | 
	
	 
		   | 
		 | 
	
	 
		  | 
	
		 
		ProFfeSsoRr Гуру
    | 
		
			
				
			 
			 
				
  | 
			 
			
				
 
	  | Цитата: | 
	 
	
	  echo 1 > /proc/sys/net/ipv4/ip_forward   | 
	 
 
 а что это даст можешь пояснить?
 
 
	  | Цитата: | 
	 
	
	  еще может стоит добавить
 
iptables -t nat -A POSTROUTING -j MASQUERADE  | 
	 
 
 бестолку. | 
			 
		  | 
	
	 
		   | 
		 | 
	
	 
		  | 
	
		 
		serg1982 Форумчанин
    | 
		
			
				
			 
			 
				
  | 
			 
			
				[quote="ProFfeSsoRr"]
 
	  | Цитата: | 
	 
	
	  echo 1 > /proc/sys/net/ipv4/ip_forward   | 
	 
 
 а что это даст можешь пояснить?
 
без этого форвард пакетов запрещен... | 
			 
		  | 
	
	 
		   | 
		 | 
	
	 
		  | 
	
		 
		ProFfeSsoRr Гуру
    | 
		
			
				
			 
			 
				
  | 
			 
			
				Сделал. Просто в консоли ничего не высветилось при этой команде. Порты все равно не проходят.
 
 
Кстати, че-то Iptables как-то странно логи ведет... Где посмотреть прям по пакетам статистику - какой пакет когда и почему был принят/отброшен? | 
			 
		  | 
	
	 
		   | 
		 | 
	
	 
		  | 
	
		 
		David Гуру
    | 
		
			
				
			 
			 
				
  | 
			 
			
				
 
	  | ProFfeSsoRr писал(а): | 
	 
	
	  
 
 
	  | Цитата: | 
	 
	
	  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 -t nat -A PREROUTING -s $MODEM -d $LINUX_OUTER -i eth0 -p tcp --dport 1234 -j DNAT --to-destination $COMP
 
$IPTABLES -t nat -A PREROUTING -s $MODEM -d $LINUX_OUTER -i eth0 -p udp  --dport 1235 -j DNAT --to-destination $COMP
 
$IPTABLES -A FORWARD -i eth0 -p tcp --dport 1234 -d 192.168.0.0/24 -j ACCEPT
 
$IPTABLES -A FORWARD -i eth0 -p udp --dport 1235 -d 192.168.0.0/24 -j ACCEPT 
 
$IPTABLES -t nat -A POSTROUTING -s 192.168.0.0/24 -d $LINUX_INNER -o eth1 -p tcp --dport $PORT_TCP -j SNAT --to-source $MODEM
 
$IPTABLES -t nat -A POSTROUTING -s 192.168.0.0/24 -d $LINUX_INNER -o eth1 -p udp --dport  $PORT_UDP -j SNAT --to-source $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  | 
	 
 
 | 
	 
 
 
Итак вроде теперь так.
 
Значит похоже дело в том, что модем то бридж.
 
Получается, что все пакеты насквозь проходят напрямую и в загловках имеют адрес не модема, а источников в инете.
 
Тогда надо так видимо (убрать явные указания о адресах)
 
 
 
	  | Код: | 
	 
	
	  $IPTABLES -t nat -A PREROUTING -d $LINUX_OUTER -i eth0 -p tcp --dport 1234 -j DNAT --to-destination $COMP
 
$IPTABLES -t nat -A PREROUTING -d $LINUX_OUTER -i eth0 -p udp  --dport 1235 -j DNAT --to-destination $COMP
 
$IPTABLES -A FORWARD -i eth0 -p tcp --dport 1234 -d 192.168.0.0/24 -j ACCEPT
 
$IPTABLES -A FORWARD -i eth0 -p udp --dport 1235 -d 192.168.0.0/24 -j ACCEPT 
 
$IPTABLES -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth1 -p tcp --dport $PORT_TCP -j MASQUERADE
 
$IPTABLES -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth1 -p udp --dport  $PORT_UDP -j MASQUERADE
 
$IPTABLES -A FORWARD -o eth1 -p tcp --dport 1234 -j ACCEPT
 
$IPTABLES -A FORWARD -o eth1 -p udp --dport 1235 -j ACCEPT  | 
	 
 
 | 
			 
		  | 
	
	 
		   | 
		 | 
	
	 
		  | 
	
		 
		ProFfeSsoRr Гуру
    | 
		
			
				
			 
			 
				
  | 
			 
			
				| Так, подскажите пожалуйста - как сбросить все правила на те, что грузятся автоматом при старте iptables? А то моих тут уже дофига стало - старые мешаются в логе. | 
			 
		  | 
	
	 
		   | 
		 | 
	
	 
		  | 
	
		 
		ProFfeSsoRr Гуру
    | 
		
			
				
			 
			 
				
  | 
			 
			
				Поправьте если я не понял, но в 
 
	  | Код: | 
	 
	
	  $IPTABLES -t nat -A PREROUTING -d $LINUX_OUTER -i eth0 -p tcp --dport 1234 -j DNAT --to-destination $COMP  | 
	 
 
 -d точно должен указывать на $LINUX_OUTER, а не на $COMP? Ведь по идее дестинейшн пакета - это мой комп в локалке! И вообще тут -d видимо опять не нужен. Но и без него скрипт применяется, только результата нет.
 
 
P.S. То ли я с ума схожу, то ли я отупел... Уже на дофига раз перечитал мануал по iptables, а все не могу понять логику этих правил  (Последний раз редактировалось: ProFfeSsoRr (Чт 17-07-08 : 23-52), всего редактировалось 1 раз | 
			 
		  | 
	
	 
		   | 
		 | 
	
	 
		  | 
	
		
	
	
		 |