NAT и iptables (Как раздать интернет через вторую сетевую карту)
Дано:
Сетевая карточка eth0 подключенная с помощью PPPoE к интернету и
eth1 подключенная к сети с адресом 192.168.0.1 к которой подключена
сеть с адресами 192.168.0.* в которой нужно раздать интернет.
Для начала включим форвардинг:
echo 1 > /proc/sys/net/ipv4/ip_forward
Чтобы форвардинг автоматически включался при запуске системы
Открываем файл:
sudo nano /etc/sysctl.conf
и добавляем в него строчку:
net.ipv4.ip_forward = 1
Затем включаем NAT
iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
Где ppp0 название вашего интерфейса через который выходите в интернет.
Чтобы NAT работал после перезагрузки делаем следующее:
сохраняем настройки iptables в файл
sudo iptables-save > /etc/iptables.up.rules
И добавляем в конец файла:
sudo nano /etc/networks/interfaces
эту строчку, для автоматической подгрузке правил
pre-up iptables-restore < /etc/iptables.up.rules
Так же в этот файл добавляем правила роутинга:
up route add -net 192.168.0.0 netmask 255.255.255.0 dev eth1
up route add -net 0.0.0.0 netmask 255.255.255.255 dev eth0
ну если еще и ррр0...
тогда так
#!/bin/sh
PATH=/usr/sbin:/sbin:/bin:/usr/bin
#
# delete all existing rules.
#
iptables -F
iptables -t nat -F
iptables -t mangle -F
iptables -X
# Always accept loopback traffic
iptables -A INPUT -i lo -j ACCEPT
# Allow established connections, and those not coming from the outside
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -m state --state NEW -i ! ppp0 -j ACCEPT
iptables -A FORWARD -i ppp0 -o eth1 -m state --state ESTABLISHED,RELATED -j ACCEPT
# Allow outgoing connections from the LAN side.
iptables -A FORWARD -i eth1 -o ppp0 -j ACCEPT
# Masquerade.
iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
# Don't forward from the outside to the inside.
iptables -A FORWARD -i ppp0 -o ppp0 -j REJECT
iptables -A FORWARD -i eth0 -o ppp0 -j REJECT
# Enable routing.
echo 1 > /proc/sys/net/ipv4/ip_forward