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