Оглавление:
Статья последний раз была обновлена 02.07.2024
Возникла необходимость настроить заново роутер используя Linux. В качестве sandbox’a была взята достаточно мощная под эти нужды машинка: Celeron 2.3 Ghz, 512 DDR2 RAM, 110 GB HDD.
uname -a
— вывод —
Linux minxdrav.ru 2.6.18-194.17.4.el5 #1 SMP Mon Oct 25 15:51:07 EDT 2010 i686 i686 i386 GNU/Linux
Задача: необходимо раздавать интернеты. Учета нам не надо, по крайней мере сейчас. Если надо будет смотреть нагрузку — поставлю Nagios. Необходимо просто организовать сервер, который имел бы на борту dhcp, apache для работы/учебы/собственных проектов, samba и igmpproxy для смотрения IP-TV. IP-адрес мы получаем напрямую от провайдера — никаких VPN, L2TP и прочее здесь рассматриваться не будет.
Буду учитывать, что у вас уже стоит RPM подобная ОС (например CentOS или RHL), и исходя из этого, пути до некоторых скриптов могут различаться. Я выбрала CentOS, как одну из самых защищенных ОС (не ради холивара сказано). Итак. Сначала настроим dhcpd, чтобы он раздавал ip адреса всем устройствам подключенным к роутеру. Конфиг dhcpd:
cat /etc/dhcpd.conf
— вывод —
ddns-update-style interim; not authoritative; option domain-name-servers 8.8.8.8; option subnet-mask 255.255.255.0; option ntp-servers 195.189.239.2; subnet 192.168.0.0 netmask 255.255.255.0 { authoritative; range 192.168.0.100 192.168.0.254; option routers 192.168.0.15; allow unknown-clients; allow booting; allow bootp; next-server 192.168.0.15; filename "pxelinux.0"; host workstation { option host-name "workstation"; hardware ethernet 00:12:04:20:4F:DC; fixed-address 192.168.0.100; } }
Если хотите сделать dhcp lease (выдавать всегда один и тот же IP-адрес), то создайте каждому из привязанных компьютеров отдельную директиву host. Роутер у меня в lan смотрит с IP-адресом 192.168.0.15. В wan с ipv4 адресом, который выдается провайдером и статичен.
eth0 Link encap:Ethernet HWaddr 00:E1:4F:8A:F3:52 inet addr:192.168.0.15 Bcast:192.168.0.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:76412860 errors:0 dropped:0 overruns:0 frame:0 TX packets:87997501 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:878317362 (837.6 MiB) TX bytes:3277225758 (3.0 GiB) Interrupt:169 Base address:0x2000 eth1 Link encap:Ethernet HWaddr 00:AD:F1:4F:12:11 inet addr:172.20.21.43 Bcast:172.20.21.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:111604876 errors:1918 dropped:652 overruns:346 frame:0 TX packets:102192491 errors:0 dropped:0 overruns:1 carrier:0 collisions:0 txqueuelen:1000 RX bytes:3253943371 (3.0 GiB) TX bytes:742431041 (708.0 MiB) Interrupt:201 Base address:0x2000
- eth1 — внешний (wan) интерфейс
- eth0 — внутренний (lan) интерфейс
Исходя из этого настройки для eth1 такие:
cat /etc/sysconfig/network-scripts/ifcfg-eth1
— вывод —
# Realtek Semiconductor Co., Ltd. RTL-8139/8139C/8139C+ DEVICE=eth1 BOOTPROTO=dhcp HWADDR=00:AD:F1:4F:12:11 ONBOOT=yes
А для eth0 статичные:
cat /etc/sysconfig/network-scripts/ifcfg-eth0
— вывод —
# Realtek Semiconductor Co., Ltd. RTL-8139/8139C/8139C+ DEVICE=eth0 BOOTPROTO=static IPADDR=192.168.0.15 NETMASK=255.255.255.0 HWADDR=00:E1:4F:8A:F3:52 ONBOOT=yes
Можем попробовать стартануть dhcpd:
service dhcpd start
Если все в порядке всем подключенным устройствам, которые получают IP-адреса по dhcp должны выдаться айпишники.
Потом можем включить запуск dhcpd при старте системы.
chkconfig --level 345 dhcpd on chkconfig --list | grep dhcp
— вывод —
dhcpd 0:выкл 1:выкл 2:выкл 3:вкл 4:вкл 5:вкл 6:выкл
Настройка iptables
Итак, переходим к самому главному — настройке iptables. Весь трафик будет направляться с помощью него. Так же мы реализуем защиту от некоторых типов атак. Для того, чтобы не мудрить ничего со скриптами, я пишу все вручную сразу же в файл правил iptables, который можно найти по пути /etc/sysconfig/iptables.
cat /etc/sysconfig/iptables
— вывод —
# Generated by iptables-save v1.3.5 on Sat Feb 12 22:33:45 2011 *mangle :PREROUTING ACCEPT [16227109:13393411926] :INPUT ACCEPT [2831999:1288367909] :FORWARD ACCEPT [13381890:12101945321] :OUTPUT ACCEPT [4421349:5811697252] :POSTROUTING ACCEPT [17809930:17913843359] -A PREROUTING -d 224.0.0.0/240.0.0.0 -p udp -j TTL --ttl-inc 1 COMMIT # Completed on Sat Feb 12 22:33:45 2011 # Generated by iptables-save v1.3.5 on Sat Feb 12 22:33:45 2011 *filter :INPUT ACCEPT [2675290:1156848403] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [4421234:5811684759] :RH-Firewall-1-INPUT - [0:0] -A INPUT -i eth1 -p gre -m state --state RELATED,ESTABLISHED -j ACCEPT -A INPUT -d 172.20.21.43 -p tcp -m tcp --dport 21 -j ACCEPT -A INPUT -d 172.20.21.43 -p tcp -m tcp --dport 22 -j ACCEPT -A INPUT -d 172.20.21.43 -p tcp -m tcp --dport 80 -j ACCEPT -A INPUT -d 172.20.21.43 -p tcp -m tcp --dport 3306 -j ACCEPT -A INPUT -d 172.20.21.43 -p gre -j ACCEPT -A INPUT -d 224.0.0.0/240.0.0.0 -i eth1 -j ACCEPT -A INPUT -s 224.0.0.0/240.0.0.0 -i eth1 -j ACCEPT -A INPUT -i eth1 -p gre -j ACCEPT -A INPUT -i eth1 -p tcp -m tcp --dport 1723 -j ACCEPT -A FORWARD -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -m limit --limit 1/sec -j ACCEPT -A FORWARD -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK RST -m limit --limit 1/sec -j ACCEPT -A FORWARD -p icmp -m icmp --icmp-type 8 -m limit --limit 1/sec -j ACCEPT -A FORWARD -d 224.0.0.0/240.0.0.0 -j ACCEPT -A FORWARD -s 224.0.0.0/240.0.0.0 -j ACCEPT -A FORWARD -j ACCEPT -A OUTPUT -o eth0 -p gre -j ACCEPT -A OUTPUT -o eth0 -p tcp -m tcp --dport 1723 -j ACCEPT COMMIT # Completed on Sat Feb 12 22:33:45 2011 # Generated by iptables-save v1.3.5 on Sat Feb 12 22:33:45 2011 *nat :PREROUTING ACCEPT [102290:13380449] :POSTROUTING ACCEPT [0:0] :OUTPUT ACCEPT [4360:349447] -A PREROUTING -d 172.20.21.43 -p tcp -m tcp --dport 3389 -j DNAT --to-destination 192.168.0.100 -A PREROUTING -d 172.20.21.43 -p tcp -m tcp --dport 30001 -j DNAT --to-destination 192.168.0.100 -A PREROUTING -d 172.20.21.43 -p udp -m udp --dport 30002 -j DNAT --to-destination 192.168.0.100 -A PREROUTING -d 172.20.21.43 -p udp -m udp --dport 5070 -j DNAT --to-destination 192.168.0.100 -A PREROUTING -d 172.20.21.43 -p tcp -m tcp --dport 8000 -j DNAT --to-destination 192.168.0.100 -A PREROUTING -d 172.20.21.43 -p tcp -m tcp --dport 31337 -j DNAT --to-destination 192.168.0.100 -A PREROUTING -d 172.20.21.43 -p udp -m udp --dport 31337 -j DNAT --to-destination 192.168.0.100 -A PREROUTING -d 172.20.21.43 -p tcp -m tcp --dport 8333 -j DNAT --to-destination 192.168.0.100 -A POSTROUTING -j MASQUERADE COMMIT # Completed on Sat Feb 12 22:33:45 2011
В данной настройки с помощью PREROUTING я сделала «проброс портов» на свою рабочую станцию. Все порты, которые перечисленны мной используются для различных программ и прочего. Так же здесь реализован пропуск протокола GRE, который необходим если с LAN машин вы собрались работать через VPN (бывает необходимость залезть в офисную сеть). Также не забываем, в этом случае открыть порт 1723, который используется VPN.
Еще я сделала для себя правило для multicast, который у нас используется для вещания IP-TV. У меня на рабочей станции есть телефония, которая работает через SIP протокол. По умолчанию работать не хотело, но после подключения модулей nf_conntrack_sip и nf_nat_sip все заработало. Подключаются модули следующим образом:
modprobe nf_conntrack_sip modprobe nf_nat_sip
Правило -A PREROUTING -d 224.0.0.0/240.0.0.0 -p udp -j TTL —ttl-inc 1 выставляет правильные TTL для пакетов мультикаста. По умолчанию IP-TV работать не хотело, даже когда я настроила igmpproxy. После установки этого правила все заработало.
Настройка igmpproxy
Итак, переходим к последнему пункту — настройке igmpproxy.
Тут все пошагово. Подключим необходимые репозитории для i386 архитектуры:
1. Устанавливаем EPEL репозиторий.
rpm -ihv http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-4.noarch.rpm
2. Устанавливаем CentALT репозиторий.
rpm -ihv http://centos.alt.ru/repository/centos/5/i386/centalt-release-5-3.noarch.rpm
Теперь для x86_64 архитектуры:
1. Устанавливаем EPEL репозиторий.
rpm -ihv http://download.fedora.redhat.com/pub/epel/5/x86_64/epel-release-5-4.noarch.rpm
2. Устанавливаем CentALT репозиторий.
rpm -ihv http://centos.alt.ru/repository/centos/5/x86_64/centalt-release-5-3.noarch.rpm
Установим igmpproxy:
yum install igmpproxy
Конфиг igmpproxy:
cat /etc/igmpproxy.conf
— вывод —
phyint eth0 downstream ratelimit 0 threshold 1 altnet 192.168.0.0/24 phyint eth1 upstream ratelimit 0 threshold 1 altnet 239.1.0.0/16 altnet 10.245.0.0/16 altnet 239.255.255.0/24
Запускаем imgpproxy и смотрим IP-TV.
Все, на данном настройка сервера закончена!
- Переадресация домена на другой домен - 08.08.2023
- Как установить и удалить GNOME? - 31.07.2023
- Как узнать, какие поисковые запросы ведут на конкретную страницу сайта? - 29.06.2023