вторник, 27 октября 2009 г.

Ubuntu server IPTABLES

Для того чтобы весь трафик пере направлялся с интерфейса ppp0 (подключение к Интернету) на интерфейс eth1 (локальная сеть, прокси сервер) нужно:

1. Установим dnsmasq. DNS Форвардер и DHCP сервер
 sudo aptitude install dnsmasq
 Для того чтобы он нормально работал надо в конфиге прописать диапазон ip адресов которые будет раздавать строенный DHCP сервер:
sudo nano /etc/dnsmasq.conf

Найдем, отредактируем и раскомментируем следующую строку:
dhcp-range=192.168.0.50,192.168.0.100,255.255.255.0,12h

2. Теперь необходимо создать скрипт, который будет задавать правила IPTABLES. (Пусть он будет располагаться в /etc/fw.config) :

#!/bin/sh
iptables -F INPUT
iptables -F FORWARD
iptables -F OUTPUT
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
echo "1" > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A PREROUTING -i eth1 -d ! 192.168.0.0/24 -p tcp -m multiport --dport 80,8080 -j DNAT --to 192.168.1.2:3128
(Здесь: 192.168.0.0/24 - диапазон ip адресов нашей локальной сети
ppp0 - интерфейс соединенный с Интернет
192.168.1.2:3128 - адрес и порт нашего прокси.)
Если вы хотите пропускать весь трафик и не перенаправлять его на прокси, тогда скрипт должен выглядеть следующим образом:
#!/bin/sh
iptables -F INPUT
iptables -F FORWARD
iptables -F OUTPUT
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
echo "1" > /proc/sys/net/ipv4/ip_forward
 iptables -A FORWARD -i ppp0 -o eth1 -s 192.168.0.0/24 -m conntrack --ctstate NEW -j ACCEPT
iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A POSTROUTING -t nat -j MASQUERADE
 

3. Создать скрипт, который будет удалять все правила IPTABLES (Пусть он будет располагаться в /etc/fwstop.config) :

#!/bin/sh
iptables -F INPUT
iptables -F FORWARD
iptables -F OUTPUT
iptables -t nat -F PREROUTING
iptables -t nat -F POSTROUTING

4. Если вы еще не настроили соединение ADSL, тогда нужно выполнить команду:

sudo pppoeconf

Следуя подсказкам настроить соединение.После этого в файле настройки сети (/etc/network/interfaces) появится наше pppoe соединение.

5.Теперь нам необходимо добавить наши скрипты в автозагрузку при установке Интернет соединения. Отредактируем файл /etc/network/interfaces так чтобы при активности ppp0 запускался скрипт добавляющий правила IPTABLES, а при нарушении активности все правила очищались. Для этого сделаем следующее:

sudo nano /etc/network/interfaces

после строк с ADSL подключением надо написать следующее:

pre-up /etc/fw.config #IPTABLES start
post-down /etc/fwstop.config #IPTABLES stop

В итоге должно получится что-то вроде этого:

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface & DSL interface
auto eth0
iface eth0 inet static
address 192.168.1.2
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255
gateway 192.168.1.1
dns-nameservers 192.168.1.1
post-up iptables-restore < /etc/iptables.up.rules

# dns-* options are implemented by the resolvconf package, if installed

# The secondary network interface
auto eth1
iface eth1 inet static
address 192.168.0.1
netmask 255.255.255.0

# PPP0 DSL Interface
auto dsl-provider
iface dsl-provider inet ppp
pre-up /sbin/ifconfig eth0 up # line maintained by pppoeconf
provider dsl-provider
pre-up /etc/fw.config #IPTABLES start
post-down /etc/fwstop.config #IPTABLES stop

Комментариев нет:

Отправить комментарий