Настройка Linux роутера на базе дистрибутива Debian GNU/Linux

Дата: 11/01/2011
Тема: Linux

1.Настройка PPPOE
1.1 Устанавливаем необходимые пакеты: #apt-get install pppoe pppd ifupdown
1.2 Настраиваем файл /etc/network/interfaces:
 
#The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug eth0
iface eth0 inet dhcp

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

#The pppoe network interface
auto nameprovider # имя вашего интернет провайдера
iface nameprovider inet ppp
provider nameprovider 

1.3 Создаем в директории /etc/ppp/peers/ файл nameprovider :


user логин #вместо слова логин пишем свой который дал провайдер
pty "/usr/sbin/pppoe -I eth0 -T 80 -m 1452"
noipdefault
usepeerdns
defaultroute
replacedefaultroute
hide-password
lcp-echo-interval 20
lcp-echo-failure 3
connect /bin/true
noauth
persist
maxfail 5
mtu 1492
noaccomp
default-asyncmap
 
1.4 Вписываем в файл /etc/ppp/chap-secrets:

# Secrets for authentication using CHAP
# client             server          secret        IP addresses
 логин                *             пароль              *
 
1.5 Поднимаем интернет: #ifup nameprovider 
      Проверяем соединение: #ifconfig ppp0
 
2.Настрока шлюза
2.1 Устанавливаем необходимые пакеты: #apt-get install dnsmasq rinetd
Dnsmasq это DHCP и DNS сервера в одной программе. Она может быть использована для создания подключения к интернету с возможностью автоматической выдачи IP адреса и одновременным кэшированием соответствия доменов их IP адресам (DNS-кэширование). Это кэширование дает отличный прирост скорости работы с интернетом, т.к. не нужно постоянно обращаться за IP адресом к DNS-серверу - он держит эти параметры у себя в кэше. Dnsmasq легковесное приложение, разработанное для персонального использования, или как DHCP сервер для сети, в которой не более 50 компьютеров.
https://wiki.archlinux.org/index.php/Dnsmasq
2.2 Настройка iptables
   Создаем скрипт чтобы каждый раз не писать все заново, и сохраним его в /etc/rc.router :
  
#!/bin/bash

/sbin/modprobe ip_conntrack
/sbin/modprobe iptable_nat
/sbin/modprobe ip_nat_ftp

#Описываем переменные
IPTS="/sbin/iptables"
LAN="eth1"
WAN="ppp0"

#Чистим правила
$IPTS -F
$IPTS -t nat -F

#Политики по умолчанию для трафика, не соответствующего ни одному из правил
$IPTS -P INPUT ACCEPT
$IPTS -P OUTPUT ACCEPT
$IPTS -P FORWARD DROP

#Теперь закроем наши сервисы так, чтобы они могли работать только для LAN
$IPTS -I INPUT 1 -i $LAN -j ACCEPT
$IPTS -I INPUT 1 -i lo -j ACCEPT
$IPTS -A INPUT -p UDP --dport bootps -i ! $LAN -j REJECT
$IPTS -A INPUT -p UDP --dport domain -i ! $LAN -j REJECT

#Отбросим все TCP/UDP-пакеты, обращающиеся к привилегированным портам
$IPTS -A INPUT -p TCP -i ! $LAN -d 0/0 --dport 0:1023 -j DROP
$IPTS -A INPUT -p UDP -i ! $LAN -d 0/0 --dport 0:1023 -j DROP

#Сообщаем ядру, что ip-форвардинг разрешен
echo "1" > /proc/sys/net/ipv4/ip_forward

#Добавляем правила для NAT
$IPTS -I FORWARD -i $LAN -d 192.168.0.0/255.255.255.0 -j DROP
$IPTS -A FORWARD -i $LAN -s 192.168.0.0/255.255.255.0 -j ACCEPT
$IPTS -A FORWARD -i $WAN -d 192.168.0.0/255.255.255.0 -j ACCEPT
$IPTS -t nat -A POSTROUTING -o $WAN -j MASQUERADE

#время жизни пакета данных в протоколе IP
$IPTS -t mangle -A OUTPUT -o $WAN -j TTL --ttl-set 64

#запрещаем пинг
$IPTS -A INPUT -i eth0 -p icmp --icmp-type 8 -j DROP
$IPTS -A INPUT -i $WAN -p icmp --icmp-type 8 -j DROP

#Пробрасываем нужные порты
# для ФТП
$IPTS -t nat -A PREROUTING -p tcp --dport ftp-data -i $WAN -j DNAT --to 192.168.0.102
$IPTS -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTS -t nat -A PREROUTING -p tcp --dport 1024 -i $WAN -j DNAT --to 192.168.0.102
$IPTS -t nat -A PREROUTING -p tcp --dport ftp -i $WAN -j DNAT --to 192.168.0.102
$IPTS -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
# для Веб сервера
$IPTS -t nat -A PREROUTING -p tcp --dport 80 -i $WAN -j DNAT --to 192.168.0.101
# для игрового сервера
$IPTS -t nat -A PREROUTING -p tcp --dport 2106 -i $WAN -j DNAT --to 192.168.0.40
$IPTS -t nat -A PREROUTING -p tcp --dport 7777 -i $WAN -j DNAT --to 192.168.0.40
# для ДНС сервера
$IPTS -t nat -A PREROUTING -p tcp --dport 53 -i $WAN -j DNAT --to 192.168.0.103
$IPTS -t nat -A PREROUTING -p udp --dport 53 -i $WAN -j DNAT --to 192.168.0.103
# Почтовый сервер
$IPTS -t nat -A PREROUTING -p udp --dport 110 -i $WAN -j DNAT --to 192.168.0.10
$IPTS -t nat -A PREROUTING -p tcp --dport 25 -i $WAN -j DNAT --to 192.168.0.10
И не забываем дать права на выполнения,  #chmod +x rc.router 
 
2.3 Теперь напишем скрипт чтобы он запускался при каждой загрузке системы и сохраним   в /etc/init.d/iptables

#!/bin/bash

IPTAB="/sbin/iptables"
RUN="/bin/bash"
PATH="/sbin:/bin:/usr/sbin:/usr/bin"
NAME="$0"
N="/etc/init.d/$NAME"

if [ ! -f /etc/rc.router ]; then
   echo "/etc/rc.router does not exist"
   exit 0
fi

case "$1" in
   start|restart)
   echo -n "Starting up iptables...."
   $RUN /etc/rc.router
   echo "DONE."
   ;;
   stop)
   $IPTAB -t filter -F
   $IPTAB -t filter -X
   $IPTAB -t nat -F
  $IPTAB -t nat -X
   $IPTAB -t mangle -F
   $IPTAB -t mangle -X
   echo "DONE."
   exit 0;
   ;;
*)
   echo "Usage: $N {start|restart|stop}">&2
   exit 1
   ;;
esac
exit 0
 И даем права на выполнения, #chmod +x iptables
 
2.4 Теперь создадим символические ссылки для /etc/init.d/iptables
/etc/rc0.d/K20iptables # завершение скрипта при выключении
/etc/rc1.d/S20iptables # запуск при single user mode
/etc/rc2.d/S20iptables # запуск при multi user mode
/etc/rc6.d/K20iptables # завершения скрипта при перезагрузки
 
2.5 Настрока rinetd (port forward)
 
Перейдем в папку «/etc» и найдем там файл «rinetd.conf»
Отредактируем файл таким образом:

#
# this is the configuration file for rinetd, the internet redirection server
#
# you may specify global allow and deny rules here
# only ip addresses are matched, hostnames cannot be specified here
# the wildcards you may use are * and ?
#
# allow 192.168.2.*
# deny 192.168.2.1?


#
# forwarding rules come here
#
# you may specify allow and deny rules after a specific forwarding rule
# to apply to only that forwarding rule
#
# bindadress    bindport connectaddress connectport
# для веб сервера
 188.16.38.55 80       192.168.0.101   80
# для правильной работы ФТП
 188.16.38.55    1024    192.168.0.102   1024
 188.16.38.55     21       192.168.0.102   21
 188.16.38.55     20       192.168.0.102   20
# для игрового сервера
 188.16.38.55    7777     192.168.0.40   7777
 188.16.38.55    2106    192.168.0.40 2106
# для ДНС
 188.16.38.55    53       192.168.0.103   53
   

# logging information
# logfile /var/log/rinetd.log

# uncomment the following line if you want web-server style logfile format
# logcommon
 


Это статья "Домашняя страничка Andy"
https://andy.od.ua

URL этой статьи: https://andy.od.ua/news_17.html

Яндекс.Метрика