LINUX.ORG.RU
ФорумAdmin

iptables проброс портов


1

2

Не могу настроить проброс портов с внешней сети на машину во внутренней сети по порту 27015. Второй день мучаюсь, помогите плиз.

EXTIF="ppp0" -внешний 
INTIF="eth1" - внутренний

UNPRIPORTS="1024:65535"


	$IPT -F
	$IPT -X
	$IPT -t nat -F PREROUTING
	$IPT -t nat -F POSTROUTING


  	# Политики по умолчанию.
  	$IPT -P INPUT DROP
	$IPT -P FORWARD DROP
    	$IPT -P OUTPUT ACCEPT
	
	# Разрешаем прохождение любого трафика по интерфейсу обратной петли.
	$IPT -A INPUT -i lo -j ACCEPT
	$IPT -A OUTPUT -o lo -j ACCEPT
	
	# Если интерфейс не lo, то запрещаем входить в список его адресов.
	$IPT -A INPUT -s 127.0.0.1/255.0.0.0 ! -i lo -j DROP

     	# Отбрасывать все пакеты, которые не могут быть идентифицированы и поэтому не могут иметь определенного статуса.
	$IPT -A INPUT   -m state --state INVALID -j DROP
   	$IPT -A FORWARD -m state --state INVALID -j DROP
	$IPT -A OUTPUT -m state --state INVALID -j DROP
	
	# Принимать все пакеты, которые инициированы из уже установленного соединения, и имеющим признак ESTABLISHED.
	# Состояние ESTABLISHED говорит о том, что это не первый пакет в соединении. 
	$IPT -A INPUT   -m state --state ESTABLISHED,RELATED -j ACCEPT
	$IPT -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
	$IPT -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
	
		
		    
	# Разрешаем  ping 
	$IPT -A INPUT -p icmp -m icmp -i $EXTIF --icmp-type echo-reply -j ACCEPT
	$IPT -A INPUT -p icmp -i $EXTIF -j ACCEPT

	# Разрешаем передачу пакета - некорректный параметр - используется, если в заголовке пакета содержится недопустимая запись,
	# или если контрольная сумма заголовка не соответствует контрольной сумме, указанной передающим узлом.
	$IPT -A INPUT -p icmp -m icmp -i $EXTIF --icmp-type parameter-problem -j ACCEPT
	$IPT -A OUTPUT -p icmp -m icmp -o $EXTIF --icmp-type parameter-problem -j ACCEPT

	# Запрещаем подключение к X серверу через сетевые интерфейсы.
	$IPT -A INPUT -p tcp -m tcp -i $EXTIF --dport 6000:6063 -j DROP --syn
	
	# Прописываем порты, которые открыты в системе, но которые не должны быть открыты на сетевых интерфейсах:
	# $IPT -A INPUT -p tcp -m tcp -m multiport -i $EXTIF -j DROP --dports #порта
	$IPT -A INPUT -p tcp -m tcp -m multiport -i $EXTIF -j DROP --dports 783
	$IPT -A INPUT -p tcp -m tcp -m multiport -i $EXTIF -j DROP --dports 3310
	$IPT -A INPUT -p tcp -m tcp -m multiport -i $EXTIF -j DROP --dports 10000

	# DNS сервер имен разрешаем.
	$IPT -A INPUT -p udp -m udp -i $EXTIF --dport $UNPRIPORTS --sport 53 -j ACCEPT
	$IPT -A INPUT -p tcp -m tcp -i $EXTIF --dport 1024:65353 --sport 53 -j ACCEPT

	# Разрешаем AUTH-запросы на удаленные сервера, на свой же компьютер - запрещаем.
	#$IPT -A OUTPUT -p tcp -m tcp -o $EXTIF --dport 113 --sport $UNPRIPORTS -j ACCEPT
	$IPT -A INPUT -p tcp -m tcp -i $EXTIF --dport $UNPRIPORTS --sport 113 -j ACCEPT ! --syn
	$IPT -A INPUT -p tcp -m tcp -i $EXTIF --dport 113 -j DROP

	# Открываем некоторые порты:
	
	# SSH клиент (22)
	$IPT -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT

	# Teamspeak
	$IPT -A INPUT -p tcp -m tcp --dport 30033 -j ACCEPT
	$IPT -A INPUT -p tcp -m tcp --dport 10011 -j ACCEPT
	$IPT -A INPUT -p udp -m udp --dport 9987 -j ACCEPT
	
	# Transmission-daemon
	$IPT -A INPUT -p tcp -m tcp --dport 51413 -j ACCEPT
	$IPT -A INPUT -p udp -m udp --dport 51413 -j ACCEPT


	# Разрешаем прохождение DHCP запросов через iptables. Нужно, если IP адрес динамический.
	$IPT -A INPUT -p udp -m udp -i $EXTIF --dport 68 --sport 67 -j ACCEPT

	# Разрешаем все из внутренней сети
	$IPT -A INPUT -i $INTIF -j ACCEPT
	
			
	#NAT
	$IPT -A FORWARD -i $INTIF -j ACCEPT
	$IPT -t nat -A POSTROUTING -s 192.168.1.0/$INTMSK -o $EXTIF -j MASQUERADE

	#ПРОБРОС портов
	
	#Сервер контры на 192.168.1.54 (проброс)
	$IPT -t nat -A PREROUTING -p udp -d $EXTIP/32 --dport 27015  -j DNAT --to-destination 192.168.1.54:27015 #?????
	$IPT -t nat -A POSTROUTING -p udp --dport 27015 -d 192.168.1.54/24 -j SNAT --to-source $EXTIP #??????
# Generated by iptables-save v1.4.8 on Tue Nov 15 21:29:34 2011
*filter
:INPUT DROP [1353:81407]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [12:1040]
-A INPUT -i lo -j ACCEPT
-A INPUT -s 127.0.0.0/8 ! -i lo -j DROP
-A INPUT -m state --state INVALID -j DROP
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -i ppp0 -p icmp -m icmp --icmp-type 0 -j ACCEPT
-A INPUT -i ppp0 -p icmp -j ACCEPT
-A INPUT -i ppp0 -p icmp -m icmp --icmp-type 12 -j ACCEPT
-A INPUT -i ppp0 -p tcp -m tcp --dport 6000:6063 --tcp-flags FIN,SYN,RST,ACK SYN -j DROP
-A INPUT -i ppp0 -p tcp -m tcp -m multiport --dports 783 -j DROP
-A INPUT -i ppp0 -p tcp -m tcp -m multiport --dports 3310 -j DROP
-A INPUT -i ppp0 -p tcp -m tcp -m multiport --dports 10000 -j DROP
-A INPUT -i ppp0 -p udp -m udp --sport 53 --dport 1024:65535 -j ACCEPT
-A INPUT -i ppp0 -p tcp -m tcp --sport 53 --dport 1024:65353 -j ACCEPT
-A INPUT -i ppp0 -p tcp -m tcp --sport 113 --dport 1024:65535 ! --tcp-flags FIN,SYN,RST,ACK SYN -j ACCEPT
-A INPUT -i ppp0 -p tcp -m tcp --dport 113 -j DROP
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 30033 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 10011 -j ACCEPT
-A INPUT -p udp -m udp --dport 9987 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 51413 -j ACCEPT
-A INPUT -p udp -m udp --dport 51413 -j ACCEPT
-A INPUT -i ppp0 -p udp -m udp --sport 67 --dport 68 -j ACCEPT
-A INPUT -i eth1 -j ACCEPT
-A FORWARD -m state --state INVALID -j DROP
-A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -i eth1 -j ACCEPT
-A FORWARD -d 192.168.1.0/24 -p udp -m udp --dport 27015 -j ACCEPT
-A OUTPUT -o lo -j ACCEPT
-A OUTPUT -m state --state INVALID -j DROP
-A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A OUTPUT -o ppp0 -p icmp -m icmp --icmp-type 12 -j ACCEPT
COMMIT
# Completed on Tue Nov 15 21:29:34 2011
# Generated by iptables-save v1.4.8 on Tue Nov 15 21:29:34 2011
*nat
:PREROUTING ACCEPT [1838:126861]
:POSTROUTING ACCEPT [13:1075]
:OUTPUT ACCEPT [13:1075]
-A PREROUTING -d 95.220.236.147/32 -p udp -m udp --dport 27015 -j DNAT --to-destination 192.168.1.54:27015
-A POSTROUTING -s 192.168.1.0/24 -o ppp0 -j MASQUERADE
COMMIT
# Completed on Tue Nov 15 21:29:34 2011
# Generated by iptables-save v1.4.8 on Tue Nov 15 21:29:34 2011
*mangle
:PREROUTING ACCEPT [2073310:1755263914]
:INPUT ACCEPT [129631:10112509]
:FORWARD ACCEPT [1943596:1745100737]
:OUTPUT ACCEPT [28682:4678269]
:POSTROUTING ACCEPT [1972010:1749696598]
-A FORWARD -o ppp0 -p tcp -m tcp --tcp-flags SYN,RST SYN -m tcpmss --mss 1400:65495 -j TCPMSS --clamp-mss-to-pmtu
COMMIT
# Completed on Tue Nov 15 21:29:34 2011

$IPT -t nat -A POSTROUTING -p udp --dport 27015 -d 192.168.1.54/24 -j SNAT --to-source $EXTIP #??????

уже не нужен если есть... 

$IPT -t nat -A POSTROUTING -s 192.168.1.0/$INTMSK -o $EXTIF -j MASQUERADE

ещё в

$IPT -t nat -A POSTROUTING -s 192.168.1.0/$INTMSK -o $EXTIF -j MASQUERADE
убери -o eth1 поскольку ты тогда сам не сможешь играть в контру с локальной сети соединяясь по белому айпи =) а ещё лучше если у тебя белый айпи статикой заменить MASQUERADE на SNAT ...

и покаж iptables -t nat -L -vn

Tok ★★ ()

-A PREROUTING -p tcp -m tcp (may be udp) -s «source-ip» -d «destination ip» -i ethx --dport «port» -j DNAT --to-destination «ip-address:destination-port»

Lynyrd ()
Ответ на: комментарий от Lynyrd

Вот уже исправленные по вашим советам коды:

EXTIF="ppp0"
INTIF="eth1"


UNPRIPORTS="1024:65535"

$IPT -F
	$IPT -X
	$IPT -t nat -F PREROUTING
	$IPT -t nat -F POSTROUTING


  	# Политики по умолчанию.
  	$IPT -P INPUT DROP
	$IPT -P FORWARD DROP
    	$IPT -P OUTPUT ACCEPT
	
	# Разрешаем прохождение любого трафика по интерфейсу обратной петли.
	$IPT -A INPUT -i lo -j ACCEPT
	$IPT -A OUTPUT -o lo -j ACCEPT
	
	# Если интерфейс не lo, то запрещаем входить в список его адресов.
	$IPT -A INPUT -s 127.0.0.1/255.0.0.0 ! -i lo -j DROP

     	# Отбрасывать все пакеты, которые не могут быть идентифицированы и поэтому не могут иметь определенного статуса.
	$IPT -A INPUT   -m state --state INVALID -j DROP
   	$IPT -A FORWARD -m state --state INVALID -j DROP
	$IPT -A OUTPUT -m state --state INVALID -j DROP
	
	# Принимать все пакеты, которые инициированы из уже установленного соединения, и имеющим признак ESTABLISHED.
	# Состояние ESTABLISHED говорит о том, что это не первый пакет в соединении. 
	$IPT -A INPUT   -m state --state ESTABLISHED,RELATED -j ACCEPT
	$IPT -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
	$IPT -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
	
		
		    
	# Разрешаем  ping 
	$IPT -A INPUT -p icmp -m icmp -i $EXTIF --icmp-type echo-reply -j ACCEPT
	$IPT -A INPUT -p icmp -i $EXTIF -j ACCEPT

	# Разрешаем передачу пакета - некорректный параметр - используется, если в заголовке пакета содержится недопустимая запись,
	# или если контрольная сумма заголовка не соответствует контрольной сумме, указанной передающим узлом.
	$IPT -A INPUT -p icmp -m icmp -i $EXTIF --icmp-type parameter-problem -j ACCEPT
	$IPT -A OUTPUT -p icmp -m icmp -o $EXTIF --icmp-type parameter-problem -j ACCEPT

	# Запрещаем подключение к X серверу через сетевые интерфейсы.
	$IPT -A INPUT -p tcp -m tcp -i $EXTIF --dport 6000:6063 -j DROP --syn
	
	# Прописываем порты, которые открыты в системе, но которые не должны быть открыты на сетевых интерфейсах:
	# $IPT -A INPUT -p tcp -m tcp -m multiport -i $EXTIF -j DROP --dports #порта
	$IPT -A INPUT -p tcp -m tcp -m multiport -i $EXTIF -j DROP --dports 783
	$IPT -A INPUT -p tcp -m tcp -m multiport -i $EXTIF -j DROP --dports 3310
	$IPT -A INPUT -p tcp -m tcp -m multiport -i $EXTIF -j DROP --dports 10000

	# DNS сервер имен разрешаем.
	$IPT -A INPUT -p udp -m udp -i $EXTIF --dport $UNPRIPORTS --sport 53 -j ACCEPT
	$IPT -A INPUT -p tcp -m tcp -i $EXTIF --dport 1024:65353 --sport 53 -j ACCEPT

	# Разрешаем AUTH-запросы на удаленные сервера, на свой же компьютер - запрещаем.
	#$IPT -A OUTPUT -p tcp -m tcp -o $EXTIF --dport 113 --sport $UNPRIPORTS -j ACCEPT
	$IPT -A INPUT -p tcp -m tcp -i $EXTIF --dport $UNPRIPORTS --sport 113 -j ACCEPT ! --syn
	$IPT -A INPUT -p tcp -m tcp -i $EXTIF --dport 113 -j DROP

	# Открываем некоторые порты:
	
	# SSH клиент (22)
	$IPT -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT

	# Teamspeak
	$IPT -A INPUT -p tcp -m tcp --dport 30033 -j ACCEPT
	$IPT -A INPUT -p tcp -m tcp --dport 10011 -j ACCEPT
	$IPT -A INPUT -p udp -m udp --dport 9987 -j ACCEPT
	
	# Transmission-daemon
	$IPT -A INPUT -p tcp -m tcp --dport 51413 -j ACCEPT
	$IPT -A INPUT -p udp -m udp --dport 51413 -j ACCEPT


	# Разрешаем прохождение DHCP запросов через iptables. Нужно, если IP адрес динамический.
	$IPT -A INPUT -p udp -m udp -i $EXTIF --dport 68 --sport 67 -j ACCEPT

	# Разрешаем все из внутренней сети
	$IPT -A INPUT -i $INTIF -j ACCEPT
	
			
	#NAT
	$IPT -A FORWARD -i $INTIF -j ACCEPT
	$IPT -t nat -A POSTROUTING -s 192.168.1.0/24 -j MASQUERADE

	#ПРОБРОС портов
	
	#Сервер контры на 192.168.1.54 (проброс)
	$IPT -t nat -A PREROUTING -p udp -m udp -d $EXTIP/32 -i $EXTIF --dport 27015 -j DNAT --to-destination 192.168.1.54:27015 

iptables-save:

# Generated by iptables-save v1.4.8 on Tue Nov 15 23:32:30 2011
*filter
:INPUT DROP [1516:88886]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [11:1010]
-A INPUT -i lo -j ACCEPT
-A INPUT -s 127.0.0.0/8 ! -i lo -j DROP
-A INPUT -m state --state INVALID -j DROP
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -i ppp0 -p icmp -m icmp --icmp-type 0 -j ACCEPT
-A INPUT -i ppp0 -p icmp -j ACCEPT
-A INPUT -i ppp0 -p icmp -m icmp --icmp-type 12 -j ACCEPT
-A INPUT -i ppp0 -p tcp -m tcp --dport 6000:6063 --tcp-flags FIN,SYN,RST,ACK SYN -j DROP
-A INPUT -i ppp0 -p tcp -m tcp -m multiport --dports 783 -j DROP
-A INPUT -i ppp0 -p tcp -m tcp -m multiport --dports 3310 -j DROP
-A INPUT -i ppp0 -p tcp -m tcp -m multiport --dports 10000 -j DROP
-A INPUT -i ppp0 -p udp -m udp --sport 53 --dport 1024:65535 -j ACCEPT
-A INPUT -i ppp0 -p tcp -m tcp --sport 53 --dport 1024:65353 -j ACCEPT
-A INPUT -i ppp0 -p tcp -m tcp --sport 113 --dport 1024:65535 ! --tcp-flags FIN,SYN,RST,ACK SYN -j ACCEPT
-A INPUT -i ppp0 -p tcp -m tcp --dport 113 -j DROP
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 30033 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 10011 -j ACCEPT
-A INPUT -p udp -m udp --dport 9987 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 51413 -j ACCEPT
-A INPUT -p udp -m udp --dport 51413 -j ACCEPT
-A INPUT -i ppp0 -p udp -m udp --sport 67 --dport 68 -j ACCEPT
-A INPUT -i eth1 -j ACCEPT
-A FORWARD -m state --state INVALID -j DROP
-A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -i eth1 -j ACCEPT
-A OUTPUT -o lo -j ACCEPT
-A OUTPUT -m state --state INVALID -j DROP
-A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A OUTPUT -o ppp0 -p icmp -m icmp --icmp-type 12 -j ACCEPT
COMMIT
# Completed on Tue Nov 15 23:32:30 2011
# Generated by iptables-save v1.4.8 on Tue Nov 15 23:32:30 2011
*nat
:PREROUTING ACCEPT [2008:123317]
:POSTROUTING ACCEPT [12:1075]
:OUTPUT ACCEPT [12:1075]
-A PREROUTING -d 95.220.236.147/32 -i ppp0 -p udp -m udp --dport 27015 -j DNAT --to-destination 192.168.1.54:27015
-A POSTROUTING -s 192.168.1.0/24 -j MASQUERADE
COMMIT
# Completed on Tue Nov 15 23:32:30 2011
# Generated by iptables-save v1.4.8 on Tue Nov 15 23:32:30 2011
*mangle
:PREROUTING ACCEPT [11071621:9629865699]
:INPUT ACCEPT [449836:32614199]
:FORWARD ACCEPT [10621468:9597014923]
:OUTPUT ACCEPT [55167:7787794]
:POSTROUTING ACCEPT [10676130:9604654380]
-A FORWARD -o ppp0 -p tcp -m tcp --tcp-flags SYN,RST SYN -m tcpmss --mss 1400:65495 -j TCPMSS --clamp-mss-to-pmtu
COMMIT
# Completed on Tue Nov 15 23:32:30 2011

iptables -t nat -L -vn:

Chain PREROUTING (policy ACCEPT 3579 packets, 219K bytes)
 pkts bytes target     prot opt in     out     source               destination
    0     0 DNAT       udp  --  ppp0   *       0.0.0.0/0            95.220.236.147      udp dpt:27015 to:192.168.1.54:27015

Chain POSTROUTING (policy ACCEPT 20 packets, 1705 bytes)
 pkts bytes target     prot opt in     out     source               destination
  753 47544 MASQUERADE  all  --  *      *       192.168.1.0/24       0.0.0.0/0

Chain OUTPUT (policy ACCEPT 20 packets, 1705 bytes)
 pkts bytes target     prot opt in     out     source               destination

walter1991 ()
Ответ на: комментарий от walter1991
  0     0 DNAT       udp  --  ppp0   *       0.0.0.0/0            95.220.236.147      udp dpt:27015 to:192.168.1.54:27015

Как видишь пакеты не попадали под правило... После того как поминял побывал подключится к контре ?

Tok ★★ ()
Ответ на: комментарий от walter1991
-A PREROUTING -d 95.220.236.147/32 -i ppp0 -p udp -m udp --dport 27015 -j DNAT --to-destination 192.168.1.54:27015

-i ppp0 убери.. а то пакеты с твоей локальной сети не будут попадать под правило и в контру ты не сможешь погамать ..

Tok ★★ ()
Ответ на: комментарий от Tok

не коннектит.

не могу даже с локалки по внешнему айпи подлючиться, не знаю почему в правило не попадают пакеты, может надо куда нибудь его повыше поставить?

а как можно посмотреть, по каким правилам проходит пакет?

walter1991 ()
Ответ на: комментарий от walter1991
 iptables -t nat -L -vn:

Chain PREROUTING (policy ACCEPT 9948 packets, 644K bytes)
 pkts bytes target     prot opt in     out     source               destination
    1    51 DNAT       udp  --  *      *       0.0.0.0/0            95.220.236.147      udp dpt:27015 to:192.168.1.54:27015

Chain POSTROUTING (policy ACCEPT 80 packets, 7188 bytes)
 pkts bytes target     prot opt in     out     source               destination
 2596  193K SNAT       all  --  *      ppp0    192.168.1.0/24       0.0.0.0/0           to:95.220.236.147

Chain OUTPUT (policy ACCEPT 77 packets, 6923 bytes)
 pkts bytes target     prot opt in     out     source               destination

walter1991 ()
Ответ на: комментарий от walter1991

А куда в новом выводе Iptables-save подевался

 -A FORWARD -d 192.168.1.0/24 -p udp -m udp --dport 27015 -j ACCEPT
?

Самый простой в твоём случие способ сбросить все правила iptables -F для всех цепей.. выставить им везде -P ACCEPT и добавить только правила ДНАТ и МАСКАРАД\СНАТ Можешь ещё попробовать поснефрить пакеты и посмотреть чии вообще пакеты доходят до тебя на нужный порт или нет...

 tcpdump -i ppp0 dst host 95.220.236.147 and port 27015

и попытатся подконнектится... если будет пусто.. значит пакеты банально до тебя не долетают... Только подключатся пробуй с интернета на себя ...

Tok ★★ ()

Я не знаю, насколько вопрос ещё актуален. Но у меня у самого недавно была такая проблема. Решение оказалось очень простым. Если интересно, то вот в этой ветке всё сказано: http://unixforum.org/index.php?showtopic=129801

technotrance ()

shorewall

Почему так всем нравится мучиться с iptables. Один раз сделал а потом забыл. Мне кажется более интересно работать с shorewall да и правила туда можно подставлять. http://plutonit.ru/view_post.php?id=87

itaroma ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.