в общем:
есть инет - ppp0
есть модем, через который выход в инет - eth0
есть сеть - eth1
нужно настроить nat пользователю 192.168.10.130
вот все мои правила в iptables:
ipt="iptables"
inet="ppp0"
local="eth1"
modem="eth0"
ports="1025:65535"
echo 1 > /proc/sys/net/ipv4/ip_forward
$ipt -F
$ipt -X
$ipt -t nat -F
$ipt -t mangle -F
$ipt -P INPUT DROP
$ipt -P OUTPUT ACCEPT
$ipt -P FORWARD ACCEPT
$ipt -A INPUT -i lo -j ACCEPT
$ipt -A INPUT -i $modem -j ACCEPT
$ipt -A INPUT -m state --state INVALID -j DROP
$ipt -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
$ipt -A INPUT -p tcp -m tcp -i $inet --dport $ports -j ACCEPT $ipt -A INPUT -p tcp -m tcp -i $local --dport $ports -j ACCEPT
$ipt -A INPUT -p icmp --icmp-type echo-request -i $inet -j DROP
$ipt -A INPUT -p icmp --icmp-type echo-request -i $local -j DROP
$ipt -A INPUT -p icmp --icmp-type echo-request -m limit --limit 1/s -j RETURN
$ipt -A INPUT -p icmp -j ACCEPT
$ipt -A INPUT -p udp -m udp -i $inet --sport 53 -j ACCEPT
$ipt -A INPUT -p tcp -m tcp -i $inet --sport 53 -j ACCEPT
$ipt -A INPUT -p udp -m udp -i $local --sport 53 -j ACCEPT
$ipt -A INPUT -p tcp -m tcp -i $local --sport 53 -j ACCEPT
iptables -t nat -A POSTROUTING -s 192.168.10.130 -o ppp0 -j MASQUERADE
нат не работает, tcpdump пишет, что все пакеты, якобы, доходят до адресата, но сам адресат не получает. было что-то странное - дошел один пакет во время пинга, только один. странно. где косяк?