LinuxForum.Fans
Тема

iptables внезапная проблема раздачи сети

Автор: devilfish 20 сообщений 3740 просмотров
#106809

у меня такая проблема. настроил раздачу интернета при помощи iptables, все работало прекрасно, но с недавнего времени наотрез перестало :( возможно это связано с обновлением iptables до версии 1.4.10?
в общем, есть 2 сетевухи eth0 - смотрит на провайдера, eth1 на вторую машину, дистрибутив Arch. использовал вот этот скрипт для настройки:

text

#!/bin/sh
IPTABLES=iptables
DEPMOD=/sbin/depmod
MODPROBE=/sbin/modprobe

EXTIF="eth0" INTIF="eth1"

$DEPMOD -a

$MODPROBE ip_tables $MODPROBE ip_conntrack $MODPROBE ip_conntrack_ftp $MODPROBE ip_conntrack_irc $MODPROBE iptable_nat $MODPROBE ip_nat_ftp $MODPROBE ip_nat_irc

echo "1" > /proc/sys/net/ipv4/ip_forward echo "1" > /proc/sys/net/ipv4/ip_dynaddr

$IPTABLES -P INPUT ACCEPT $IPTABLES -F INPUT $IPTABLES -P OUTPUT ACCEPT $IPTABLES -F OUTPUT $IPTABLES -P FORWARD DROP $IPTABLES -F FORWARD $IPTABLES -t nat -F

$IPTABLES -A FORWARD -i $EXTIF -o $INTIF -m state --state ESTABLISHED,RELATED -j ACCEPT $IPTABLES -A FORWARD -i $INTIF -o $EXTIF -j ACCEPT $IPTABLES -A FORWARD -j LOG

$IPTABLES -t nat -A POSTROUTING -o $EXTIF -j MASQUERADE

echo -e "done.\n"

перенастроил при помощи этого же скрипта заново, но все не работает :( в чем может быть проблема?

#106815

iptables -L -v
iptables -t nat -L -v

#106816

Я бы сделал вот так. Это минималка с которой я начинаю работу и по ходу уже добавляю.

text
# Generated by iptables-save v1.4.5 on Mon Dec 14 00:41:57 2009
*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [840:122351]
-A INPUT —i lo —j ACCEPT 
-A INPUT —p icmp —j ACCEPT 
-A INPUT —p tcp —m tcp ! -tcp-flags FIN,SYN,RST,ACK SYN —m state —state NEW —j DROP 
-A INPUT —f —j DROP 
-A INPUT —m state —state RELATED,ESTABLISHED —j ACCEPT 
-A INPUT —p tcp —m tcp —dport 22 —j ACCEPT 
-A INPUT —p tcp —m tcp —dport 22 —j LOG 
-A INPUT —p tcp —j REJECT —reject-with tcp-reset 
-A INPUT —p udp —j REJECT —reject-with icmp-port-unreachable 
-A INPUT —j REJECT —reject-with icmp-proto-unreachable 
-A FORWARD —s 192.168.1.0/24 —j ACCEPT 
-A FORWARD —d 192.168.1.0/24 —j ACCEPT 
-A OUTPUT —o lo —j ACCEPT 
-A OUTPUT —o ppp0 —j ACCEPT 
COMMIT
# Completed on Mon Dec 14 00:41:58 2009
# Generated by iptables-save v1.4.5 on Mon Dec 14 00:41:58 2009
*nat
:PREROUTING ACCEPT [41952:3041138]
:POSTROUTING ACCEPT [81843:4499251]
:OUTPUT ACCEPT [58690:3593347]
-A POSTROUTING —s 192.168.1.0/24 —j MASQUERADE 
COMMIT
# Completed on Mon Dec 14 00:41:58 2009
#106826

xlin,

text
iptables -L -v

Chain INPUT (policy ACCEPT 82 packets, 13645 bytes) pkts bytes target prot opt in out source destination

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination 0 0 ACCEPT all -- eth0 eth1 anywhere anywhere state RELATED,ESTABLISHED 0 0 ACCEPT all -- eth1 eth0 anywhere anywhere 0 0 LOG all -- any any anywhere anywhere LOG level warning

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

iptables -t nat -L -v

Chain PREROUTING (policy ACCEPT 15 packets, 1819 bytes) pkts bytes target prot opt in out source destination

Chain INPUT (policy ACCEPT 13 packets, 1683 bytes) pkts bytes target prot opt in out source destination

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

Chain POSTROUTING (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination 0 0 MASQUERADE all -- any eth0 anywhere anywhere

в твоих настройках ругается на вот эту строчку -A POSTROUTING —s 192.168.0.0/24 —j MASQUERADE
(ip поменян в соответсвии с настрйоками моей сети)

#106834

$IPTABLES -P FORWARD DROP
Попробуй $IPTABLES -P FORWARD ACCEPT как тест.
или ifconfig сюды.

#106932

Kettler, не помогло

text

 ifconfig
eth0      Link encap:Ethernet  HWaddr 00:11:2F:44:A3:E7  
          inet addr:188.244.21.23  Bcast:188.244.21.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:1626 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1108 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:895660 (874.6 Kb)  TX bytes:97237 (94.9 Kb)
          Interrupt:5 Base address:0x4000 

eth1 Link encap:Ethernet HWaddr 00:14:78:7C:D2:42 inet addr:192.168.0.1 Bcast:192.168.0.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:3 errors:0 dropped:0 overruns:0 frame:0 TX packets:1 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:2988 (2.9 Kb) TX bytes:60 (60.0 b) Interrupt:11 Base address:0x8000

lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)

#106936

Поищи тут на форуме выкладывал готовые скрипты iptables раздачи.
Какая система стоит?
Вводи ручками команды по одной будут ошибки?

#106946

Kettler, система Arch. скриптик, который я использовал, в 1 посте показал. если вводить команды по одной (из моего скрипта), то ошибок нет. из скрипта xlin'a ошибка в строке -A POSTROUTING —s 192.168.0.0/24 —j MASQUERADE. Проблема в том, что iptables долгое время работал без проблем, а в один прекрасный день перстал.

#106953

Твой скрипт если вводить ручками не будет работать! Потому что используешь переменные.
Скрипт xlin это iptables-restore интересно как всё вводил.

#106959

#!/bin/bash
echo "1" > /proc/sys/net/ipv4/ip_forward
echo 1 > /proc/sys/net/ipv4/ip_dynaddr
modprobe iptable_nat
modprobe ip_conntrack_ftp
modprobe ip_nat_ftp
iptables -F
iptables -F -t nat
iptables -F -t mangle

iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT

#Маскардинг в инет и локалку
iptables --table nat --append POSTROUTING --out-interface eth0 -j MASQUERADE
iptables -I FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu

Пробуй вести построчно.

#106960

Kettler, ясный перец, что переменные меняются на конкретные имена сетевых интерфейсов. а из nxlin-новского копировал опять же меняя имена интерфесов %)

#106963

Kettler, ввел твой построчно. все без ошибок, но все еще не работает :( теоретически, iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE должно хватить для раздачи сети и, собственно, до сих пор хватло. переустанавливал iptables, так же не помогло. до недавнего времени была версия iptables 1.4.9.1, после обновления 1.4.10

#106964
devilfish написал:
Kettlerа из nxlin-новского копировал опять же меняя имена интерфесов %)

:D не где больше не говори такого.

#106965
devilfish написал:
Kettler, ввел твой построчно. все без ошибок, но все еще не работает :(

По ип пингуй от клиентов. Будут ответы?

#106967

iptables -L
route -n
ping 80.252.130.250 (от клиента)
Всё сюды

#106969
text
iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain FORWARD (policy ACCEPT) target prot opt source destination TCPMSS tcp -- anywhere anywhere tcp flags:SYN,RST/SYN TCPMSS clamp to PMTU

Chain OUTPUT (policy ACCEPT) target prot opt source destination

route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1 188.244.21.0 0.0.0.0 255.255.255.0 U 202 0 0 eth0 0.0.0.0 188.244.21.1 0.0.0.0 UG 202 0 0 eth0

машины друг друга пингуют
80.252.130.250 не пингуется

#107038

Да вроде всё норм. Это лучше на arch форум идти.
P. S. Не когда не поставлю arch на сервер больше под декстоп.
Мой совет debian (stable).

#107054

Вот может поможет:

text

#!/bin/sh
# rm -rfv /proc/sys/net/ipv4/ip_forward
# echo 1 > /proc/sys/net/ipv4/ip_forward
# /etc/sysctl.conf:
# net.ipv4.ip_forward = 1
# sysctl -p /etc/sysctl.conf
# RESET
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
# reset the default policies in the nat table.
iptables -t nat -P PREROUTING ACCEPT
iptables -t nat -P POSTROUTING ACCEPT
iptables -t nat -P OUTPUT ACCEPT
# reset the default policies in the mangle table.
iptables -t mangle -P PREROUTING ACCEPT
iptables -t mangle -P OUTPUT ACCEPT
# flush all the rules in the filter and nat tables.
iptables -F
iptables -t nat -F
iptables -t mangle -F
# erase all chains that's not default in filter and nat table.
iptables -X
iptables -t nat -X
iptables -t mangle -X
# Let's go
iptables -v -P INPUT DROP
iptables -v -P OUTPUT DROP
iptables -v -P FORWARD DROP

iptables -v -A INPUT -i lo -j ACCEPT iptables -v -A INPUT -i tap0 -j ACCEPT

iptables -v -A OUTPUT -o lo -j ACCEPT iptables -v -A OUTPUT -o tap0 -j ACCEPT

iptables -v -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT iptables -v -A OUTPUT -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT

iptables -v -A FORWARD -o tap0 -m state --state RELATED,ESTABLISHED -j ACCEPT iptables -v -A FORWARD -i tap0 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT

# В интернет iptables -v -t nat -A POSTROUTING -o ppp0 -j MASQUERADE iptables -v -t nat -A POSTROUTING -o eth0 -j MASQUERADE # Внутренний # iptables -t nat -A POSTROUTING -d tap0 -j MASQUERADE # iptables -v -t nat -A POSTROUTING -d 192.168.0.0/24 -j MASQUERADE

iptables -v -t nat -A POSTROUTING -s 192.168.0.0/24 -j MASQUERADE

Дропы можно поубирать, на маскарад по идее последней строчки должно хватить, и tap0 заменить на eth1/

#107096

Kettler, да там тоже никто не знает ;)
newzenon, тоже не помогает, видимо проблема в том, что что-то где-то криво стоит... будем думать! :)

#107109

Не когда с арчем не было проблем. Предположу самое не вероятное.

/etc/rc.d/iptables status что скажет?

в /proc/sys/net/ipv4/ip_forward точно стоит 1?

в cat /etc/sysctl.conf тоже стоит 1

text
# Controls IP packet forwarding
net.ipv4.ip_forward = 1
Войдите или зарегистрируйтесь, чтобы ответить.