Настройка Linux роутера на базе дистрибутива Debian GNU/Linux
Настройка Linux роутера на базе дистрибутива Debian GNU/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 компьютеров.
Создаем скрипт чтобы каждый раз не писать все заново, и сохраним его в /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
При копировании материалов ссылка на сайт обязательна