NAT with IPTables
Итак, специально для kislo_metal постю сюда тривиальную вещь - простейший метод для поднятия NAT.
Я назвал его iptables.sh и положил в /etc/init.d/
[cc lang="bash"]
#!/bin/bash
INET_IFACE="eth0"
IPTABLES="/sbin/iptables"
echo 1 > /proc/sys/net/ipv4/ip_forward
#Loading modules...
modprobe ip_tables
modprobe ipt_helper
modprobe ip_conntrack
modprobe ip_conntrack_ftp
modprobe ip_conntrack_irc
modprobe iptable_nat
modprobe ip_nat_ftp
modprobe ip_nat_irc
modprobe ip_gre
modprobe ip_nat_pptp
#Adding default actions
$IPTABLES -P INPUT ACCEPT
$IPTABLES -P OUTPUT ACCEPT
$IPTABLES -P FORWARD ACCEPT
#Clear all current rules
$IPTABLES -F
$IPTABLES -X
$IPTABLES -t nat -F
##Creating NAT
#for my PC:
$IPTABLES -t nat -A POSTROUTING -s 10.1.1.2 -d 0/0 -j MASQUERADE
#for virtual machine
$IPTABLES -t nat -A POSTROUTING -s 192.168.0.2 -d 0/0 -j MASQUERADE
[/cc]
Если скрипт не сработал - смотрим iptables-save. Если там хоть где-то есть DROP - то уже разбирайтесь сами, ибо по умолчанию политики стоят в ACCEPT на все.
Чтобы в Debian-based дистрибутивах скрипт подымал NAT автоматом надо сделать
[cc lang="bash"]
sudo ln -s /etc/init.d/iptables.sh /etc/rc2.d/S99iptables.sh
sudo chmod +x /etc/init.d/iptables.sh
[/cc]