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.

Напишіть перше повідомлення!

Ви повинні увійти під своїм аккаунтом щоб залишати коментарі