NAT. Раздача интернета в Linux с использованием iptables

февраля
18
2012
Метки: linux nat

Для раздачи интернета по сети, создайте файл .sh. Например, iptables.sh.


touch iptables.sh

Этот файл должен содержать следующее:


#!/bin/sh
iptables -t nat -F

#Setup default policies to handle unmatched traffic
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP

#Copy and paste these examples ...
export LAN=eth1
export WAN=ppp0
export WAN2=eth0

#Then we lock our services so they only work from the LAN
iptables -I INPUT 1 -i ${LAN} -j ACCEPT
iptables -I INPUT 1 -i lo -j ACCEPT
iptables -A INPUT -p UDP --dport bootps ! -i ${LAN} -j REJECT
iptables -A INPUT -p UDP --dport domain ! -i ${LAN} -j REJECT

#(Optional) Allow access to our ssh server from the WAN
iptables -A INPUT -p TCP --dport ssh -i ${WAN} -j ACCEPT
iptables -A INPUT -p TCP --dport ssh -i ${WAN2} -j ACCEPT

#Drop TCP / UDP packets to privileged ports
iptables -A INPUT -p TCP ! -i ${LAN} -d 0/0 --dport 0:1023 -j DROP
iptables -A INPUT -p UDP ! -i ${LAN} -d 0/0 --dport 0:1023 -j DROP

#allow bittorent incoming client request
iptables -A INPUT -p tcp --destination-port 6881:6999 -j ACCEPT
iptables -A FORWARD -d 192.168.0.10 -p tcp --dport 6881 -j ACCEPT
iptables -t nat -A PREROUTING -i ${WAN2} -p tcp --dport 6881 -j DNAT --to-destination 192.168.0.10
iptables -t nat -A PREROUTING -i ${WAN} -p tcp --dport 6881 -j DNAT --to-destination 192.168.0.10

#Finally we add the rules for NAT
iptables -I FORWARD -i ${LAN} -d 192.168.0.0/255.255.0.0 -j DROP
iptables -A FORWARD -i ${LAN} -s 192.168.0.0/255.255.0.0 -j ACCEPT
iptables -A FORWARD -i ${WAN2} -d 192.168.0.0/255.255.0.0 -j ACCEPT
iptables -A FORWARD -i ${WAN} -d 192.168.0.0/255.255.0.0 -j ACCEPT
iptables -t nat -A POSTROUTING -o ${WAN2} -j MASQUERADE
iptables -t nat -A POSTROUTING -o ${WAN} -j MASQUERADE

iptables -t nat -A POSTROUTING -s 192.168.0.1/24 -j MASQUERADE

iptables -t nat -A POSTROUTING -s 192.168.0.1/24 -j MASQUERADE

iptables -I FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu

/etc/init.d/iptables save

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

В вышеописанной конфигурации использовалось два интерфейса для выхода в интернет: eth0 - предоставляет локальные ресурсы и ppp0 - собственно интернет. Если Вам не нужны локальные ресурсы, то достаточно удалить все строки, в которых встречается конструкция ${WAN2}

Чтобы раздача интернета включалась автоматически при запуске системы, открываем файл /etc/sysctl.conf:


nano -w /etc/sysctl.conf
или
mcedit /etc/sysctl.conf

находим строки


# Disables packet forwarding
net.ipv4.ip_forward = 0

и изменяем на:


# Disables packet forwarding
net.ipv4.ip_forward = 1

Запускаем файл iptables.sh и получаем интернет на всех машинах подсети:


sh iptables.sh

Машины должны быть в той же подсети, а шлюз по умолчанию - IP-адрес машины, которая раздает интернет. В даном случае - это IP-адрес интерфейса eth1.

Напишите первое сообщение!

Вы должны войти под своим аккаунтом чтобы оставлять комментарии