Router oparty o iptables, wrzucić do skryptów startowych np do rc.local
#!/bin/bash # Nasza siec LOCALNETWORK='192.168.1.0/255.255.255.0' GREEN=192.168.1.1 # Czyscimy wszystkie reguly: iptables -F iptables -t nat -F # Domyślne zasady dla pakietów nie pasujących do żadnej regułki iptables -P INPUT ACCEPT iptables -P OUTPUT ACCEPT iptables -P FORWARD DROP # Przypisanie kart sieciowych to LAN i WAN export LAN=eth1 export WAN=eth0 # Potem blokujemy usługi tak, aby były dostępne tylko dla sieci 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 # (Opcjonalnie) Pozwalamy na dostęp do naszego serwera SSH z Internetu iptables -A INPUT -p TCP --dport ssh -i ${WAN} -j ACCEPT # Upuszczamy pakiety TCP/UDP dla uprzywilejowanych portów 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 # Ostatecznie dodajemy regułki dla NAT iptables -I FORWARD -i ${LAN} -d $LOCALNETWORK -j DROP iptables -A FORWARD -i ${LAN} -s $LOCALNETWORK -j ACCEPT iptables -A FORWARD -i ${WAN} -d $LOCALNETWORK -j ACCEPT iptables -t nat -A POSTROUTING -o ${WAN} -j MASQUERADE # Informujemy jądro o chęci przekazywania IP echo 1 > /proc/sys/net/ipv4/ip_forward for f in /proc/sys/net/ipv4/conf/*/rp_filter ; do echo 1 > $f ; done # Poniższe polecenia sprawią, że przy każdym uruchomieniu routera # nie będziemy musieli wpisywać ręcznie wszystkich regułek iptables-save rc-update add iptables default # nano /etc/sysctl.conf # Dodajemy przez odkomentowanie następujące linijki: # net.ipv4.ip_forward = 1 # net.ipv4.conf.default.rp_filter = 1 # Osoby bez stałego dostępu do Internetu zapewną zechcą włączyć tę opcję: # net.ipv4.ip_dynaddr = 1 ##################### # Forwarding portów # ##################### # Przekazywanie portu 20022 dla ssh na wewnętrznej stacji roboczej iptables -t nat -A PREROUTING -p tcp --dport 20022 -i ${WAN} -j DNAT --to 192.168.1.2:22 # Przekazywanie FTP na wewnętrzną stację roboczą iptables -t nat -A PREROUTING -p tcp --dport 21 -i ${WAN} -j DNAT --to 192.168.1.56 # Przekazywanie HTTP na wewnętrzną stację roboczą iptables -t nat -A PREROUTING -p tcp --dport 80 -i ${WAN} -j DNAT --to 192.168.1.56 # Przekazywanie VNC na wewnętrzną stację roboczą iptables -t nat -I PREROUTING -p tcp --dport 5900 -i ${WAN} -j DNAT --to 192.168.1.2 iptables -t nat -I PREROUTING -p tcp --dport 5901 -i ${WAN} -j DNAT --to 192.168.1.3:5900 # Aby mieć VNC na 192.168.0.3, należy po prostu dodać ':1' do nazwy routera # Przekazywanie Samba na wewnętrzną stację roboczą (dodatkowe porty potrzebne są do obsługi systemu Windows) iptables -t nat -I PREROUTING -p tcp --dport 135 -i ${WAN} -j DNAT --to 192.168.1.2 iptables -t nat -I PREROUTING -p tcp --dport 139 -i ${WAN} -j DNAT --to 192.168.1.2 iptables -t nat -I PREROUTING -p tcp --dport 445 -i ${WAN} -j DNAT --to 192.168.1.2 iptables -t nat -I PREROUTING -p udp --dport 137:138 -i ${WAN} -j DNAT --to 192.168.1.2 iptables -t nat -I PREROUTING -p udp --dport 445 -i ${WAN} -j DNAT --to 192.168.1.2 # Przekazywanie Bittorrent iptables -t nat -A PREROUTING -p tcp --dport 14828 -i ${WAN} -j DNAT --to 192.168.1.10 # Przekazywanie eDonkey/eMule iptables -t nat -A PREROUTING -p tcp --dport 4662 -i ${WAN} -j DNAT --to 192.168.0.55 ## Poniższe linie dodajemy do rc.local ( poinformuje nas o starcie routera jak ipcop ) ## Wymaga załądowanego modułu obsługującego speaker # /home/grzegorz/admin/router/iptables_router # /usr/bin/beep -f 300.7 -l 100; /usr/bin/beep -f 600.7 -l 100; /usr/bin/beep -f 900.7 -l 100