Selles kirjatükis kirjeldatu tegemise peamine motivaator on huvi. Jätke see meelde.
Üks kõrts tahtis saada WiFi leviala. Eksperimenteerisin parasjagu WRT54G ruuteriga ja seadmevalik oli seega tehtud. Samuti pidi sellest levialast tulema näiteline leviala tegemine, internetiühendus on jagatud avalikuks ja privaatseks (asutuse enda kasutuseks) samaaegselt. Ütlen kohe ära, et tegemist tuleb linuxi- ja internetivõrgukeskse jutuga, mida ma üritan arusaadavalt kirjutada.
Sama jutu baasil valmis hiljem endatehtud openwrt firmware, mis on kättesaadav selle lingi alt.

PILT1. Sellel pildil on näha WRT54G sisu ja füüsilised ühendused mis kõrtsus tegema pidi. WRT54G'st on näha VLAN'idega (otsi googlest) majandada oskav kuubikujuline switch, mis autommaagiliselt oma porte risti ja otse väänata oskab, et ristkaableid tarvis pole. Teine ümmargune junn seal on protsessor/wifikaart/flash/ram/linux kombinatsioon mida võib kokkuvõtteks sõimata kui router/firewall/bridge/NAT/jms.

PILT2. Sellel pildil on näha WRT54G sisu ja loogilised ühendused mis kõrtsus tegema pidi. Sellist pilti näeb enda jaoks WRT54G's pesitsev linux, eth0 sees käiv on siin eraldi raamitud. Kes ei tea mis asi on vlan, ehk virtual lan kasutab Googlet ja saab teada.
Internet tuleb sisse Elioni ADSL ühendust kasutades. Paketiks oli PPPOE'd kasutav koduADSL vms. Seega selle ühenduse IP on igakord erinev. Ja samuti pole ma välja joonistanud pppX liidest mis jookseb vlan1 sees ja mida pidi tegelikul interneed (meelega) ruuterisse jõuab.
Kogu see ehitus pärineb originaalsest tarkvarast mis WRT54G poest kaasa antakse. PILT1 on näha et eth1 on routeri küljes ja ruuteri tagumised pordid 1,2 (originaalis ka 3,4) on switch'i kyljes. Tavaolukorras hirmus jama, aga linuxil on olemas tarkvaline etherneti sild (bridge). Seega tehakse nii, et interfeisid vlan0 ja eth1 sillatakse kokku etherneti tasemel (Level2) sillaks br0 (vaata PILTI2). Sellele sillale antaksegi LAN ip (192.168.1.1/255.255.255.0). Seega on switchi pordid 1,2 ja wlan eth1 wifi ühes ja samas võrgus. Sellele võrgule on käima pandud DHCP server, firewallist on keelatud ligipääs interfeissidele vlan3(kassa) ja vlan4(korter) ja ülejäänud ühendused NAT'itakse välja pppX kasutades.
Selleks on tehtud switchi (PILT1) eraldi VLAN numbriga 3, millele on antud IP (192.168.3.1/255.255.255.0) ja käima pandud ka DHCP server. Firewallist on keelatud ligi- ja väljapääs interfeissidelt vlan4 ja vlan0 seonduvatelt ip aadressitelt. Väljuvad ühendused suunal vlan1/pppX NAT'itakse.
Selleks on tehtud switchi (PILT1) eraldi VLAN numbriga 4, millele on antud IP (192.168.4.1/255.255.255.0) ja käima pandud ka DHCP server. Firewallist on keelatud ligi- ja väljapääs interfeissidelt vlan3 ja vlan0 seonduvatelt ip aadressitelt. Väljuvad ühendused suunal vlan1/pppX NAT'itakse.
Kirjeldatud on protsess selle lingi all ja sellepärast ma seda kordama ei kavatse hakata.
Oleme jõudnud sinnamaale kus telnetime sisse 192.168.1.1 aadressile ja meile vaatab vastu prompt:
Trying 192.168.1.1...
Connected to 192.168.1.1.
Escape character is '^]'.
BusyBox v1.00-rc2 (2004.09.13-17:38+0000) Built-in shell (ash)
Enter 'help' for a list of built-in commands.
_______ ________ __
| |.-----.-----.-----.| | | |.----.| |_
| - || _ | -__| || | | || _|| _|
|_______|| __|_____|__|__||________||__| |____|
|__| W I R E L E S S F R E E D O M
@OpenWrt:/#
Edaspidi on see peamine ja ainus töövahend.
Meie ainukeseks normaalseks tekstiredaktoriks on vi.
Vi õpetus .
Nagu näha protsessitabelit vaadates, käib meil seal suht palju mõttetut kola.
@OpenWrt:/# ps -ef
PID Uid VmSize Stat Command
1 0 384 S init
2 0 SW [keventd]
3 0 SWN [ksoftirqd_CPU0]
4 0 SW [kswapd]
5 0 SW [bdflush]
6 0 SW [kupdated]
7 0 SW [mtdblockd]
16 0 SWN [jffs2_gcd_mtd4]
30 0 340 S syslogd -C 16
343 0 368 S /usr/sbin/dnsmasq
348 0 364 S /usr/sbin/httpd -p 80 -h /www -r WRT54G Router
353 0 312 S /usr/sbin/telnetd -l /bin/login
358 0 516 S ash --login
364 0 376 S udhcpc -i vlan1 -b -p /tmp/dhcp-wan.pid
394 0 356 R ps -ef
Lähme kataloogi /etc/init.d/, vaatame mis meil seal on, kustutame
ebavajalikud failid. /etc/init.d/ ongi see kataloog kust kõik teenused
käima pannakse.
@OpenWrt:/# cd /etc/init.d/ @OpenWrt:/etc/init.d# ls S10boot S45firewall S50httpd S99done S40network S50dnsmasq S50telnet rcS @OpenWrt:/etc/init.d# rm S50httpd @OpenWrt:/etc/init.d# reboot @OpenWrt:/etc/init.d# Connection closed by foreign host.Et pakke alla tirida peab seadmele külge saama reaalse ip aadressi ja samas ka peab ligipääs olema seadme sisemusele telnetiga. Mina lahendasin omal selle probleemi nii, et lisasin töömasinale lisaip 192.168.1.2 ja panin ruuteri pordid 4 ja INTERNET omavahel patch kaabliga kokku. OpenWrt küsib neitsilikus seisus endale ip'd INTERNET pordist DCHP kasutades. Uuesti telnetiga sisse aadressile 192.168.1.1 ja vaatame kas purk on endale IP ka saanud.
@OpenWrt:/# route Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 10.0.0.0 * 255.255.255.0 U 0 0 0 vlan1 192.168.1.0 * 255.255.255.0 U 0 0 0 br0 default 10.0.0.1 0.0.0.0 UG 0 0 0 vlan1Siit on näha et vlan1 peal on nii IP kui ka default route. Numbrid sõltuvad muidugi DHCP serverist saadavast. Igaks juhuks ka ping.
@OpenWrt:/# ping -c 4 www.ee PING www.ee (212.107.32.146): 56 data bytes 64 bytes from 212.107.32.146: icmp_seq=0 ttl=250 time=5.1 ms 64 bytes from 212.107.32.146: icmp_seq=1 ttl=250 time=5.7 ms 64 bytes from 212.107.32.146: icmp_seq=2 ttl=250 time=6.0 ms 64 bytes from 212.107.32.146: icmp_seq=3 ttl=250 time=5.9 ms --- www.ee ping statistics --- 4 packets transmitted, 4 packets received, 0% packet loss round-trip min/avg/max = 5.1/5.6/6.0 msTore, meil on internet. Edasi ipkg pakkide uuendamine, saadaolevate vaatamine ja mõned vajalikud pakid. Neiks on dropbear ja pppoecd. Tähelepanu ! dropbear küsib parooli, see parool on edaspidi ruuterisse ssh ligipääsu jaoks vajalik, seega jäta meelde.
@OpenWrt:/# ipkg update Downloading http://openwrt.org/ipkg/Packages ... Connecting to openwrt.org[208.185.247.160]:80 Packages 100% |*****************************| 15596 00:00 ETA Done. Updated list of available packages in /usr/lib/ipkg/lists/openwrt @OpenWrt:/# ipkg list admcfg - WRT54G adm configuration kernel module and binary chillispot - a wireless access point controller dhcp-fwd - a DHCP relay agent dropbear - Lightweight SSH client and server system fprobe - a NetFlow probe ip - iproute2 stuff ip6tables - Linux kernel 2.4+ IPv6 packet filter administration tools kismet - Wireless 802.11b monitoring tool kmod-ipt6 - ip6tables kernel modules kmod-ipv6 - Kernel modules for the IPv6 protocol kmod-nfs - NFS kernel modules kmod-ppp-async - PPP async serial channel driver kernel module kmod-ppp-mppe-mppc - Microsoft PPP compression/encryption (MPPC/MPPE) kernel mod ule kmod-sched - Traffic Control (TC) kernel modules kmod-tun - Universal TUN/TAP device driver kernel module libmatrixssl - an embedded SSL implementation libpcap - a low-level packet capture library libpthread - POSIX threads library libssl - OpenSSL libraries used for SSL encryption. ntpclient - utility to setting system time from NTP server oidentd - A nat aware identd daemon/redirector openssh-client - The OpenSSH client. Allows for access to remote systems via the SSH protocol. openssh-client-extras - Various optional OpenSSH client tools. openssh-server - The OpenSSH server daemon. openssh-sftp-client - OpenSSH Secure FTP server. openssh-sftp-server - OpenSSH Secure FTP server. ppp - a Point-to-Point Protocol (PPP) daemon pppoecd - Linksys PPPoE daemon for access to internet using DSL modems ppp-radius-plugin - a RADIUS plugin for the PPP daemon pptp-client - a Point-to-Point Tunneling Protocol (PPTP) client pptp-server - a Point-to-Point Tunneling Protocol (PPTP) server quagga-bgpd - Quagga BGP routing daemon quagga-full - Quagga routing suite (ripd, ripngd, ospfd, ospf6d and bgpd) quagga-ospf6d - Quagga OSPF IPv6 routing daemon quagga-ospfd - Quagga OSPF routing daemon quagga-ripd - Quagga RIP routing daemon quagga-ripngd - Quagga RIPng routing daemon quagga-zebra - Quagga zebra meta-routing daemon radvd - Routing Advertisement Daemon for IPv6 radvd - Routing Advertisement Daemon for IPv6 strace - A system call tracer tc - iproute2 stuff tcpdump - A Tool for network monitoring and data acquisition. BSD licensed. tspc - Provides a Freenet6 TSPC client for IPv6. vsftpd - a fast and secure FTP server wondershaper - Wondershaper qos management zlib - zlib is a library implementing the 'deflate' compression system used by m any programs. @OpenWrt:/# ipkg install dropbear pppoecd Downloading http://openwrt.org/ipkg/./dropbear_0.44test3_mipsel.ipk ... Connecting to openwrt.org[208.185.247.160]:80 dropbear_0.44test3_m 100% |*****************************| 125 KB 00:00 ETA Done. Unpacking dropbear...Done. Configuring dropbear... Will output 1024 bit dss secret key to '/etc/dropbear/dropbear_dss_host_key' Generating key, this may take a while... Public key portion is: ssh-dss AAAAB3NzaC1kc3MAAACBAIxRqV70iTix/jkInmfgpp+O2v77STw6MRnj Fingerprint: md5 53:1a:12:78:ae:58:cf:b4:5e:2c:aa:99:84:cb:e0:88 Changing password for root Enter the new password (minimum of 5, maximum of 8 characters) Please use a combination of upper and lower case letters and numbers. Enter new password: Re-enter new password: Password changed. ========================================== dropbear is now configured to run on boot. ========================================== To start it now, run the following command: /usr/bin/dropbear Done. Downloading http://openwrt.org/ipkg/./pppoecd_1.0_mipsel.ipk ... Connecting to openwrt.org[208.185.247.160]:80 pppoecd_1.0_mipsel.i 100% |*****************************| 54576 00:00 ETA Done. Unpacking pppoecd...Done. Configuring pppoecd...Done. @OpenWrt:/# rebootNii nüüd on meil edaspidiseks turvaliseks haldamiseks olemas SSH ligipääs. Windowsis on selleks programm Putty. Telnet on ka muidugi endiselt alles. Samuti on olemas ka PPPoE programm Elioni ADSL'i kasutamiseks. Alustamegi ADSL'i konfist. Selleks peame muutma mõningaid NVRAM'i parameetreid. Kõigepealt määrame ära interfeisi väljuvaks ühenduseks ja selle tüübi, seejärel sisestame PPPoE parameetrid. Samuti tuleb muuta permanentseks
root@OpenWrt:/# nvram set wan_ifname=vlan1 root@OpenWrt:/# nvram set wan_proto=pppoe root@OpenWrt:/# nvram set wan_hostname=purk root@OpenWrt:/# nvram set ppp_username="KALAKALA" root@OpenWrt:/# nvram set ppp_passwd="KALAKALA" root@OpenWrt:/# nvram set ppp_redialperiod=20 root@OpenWrt:/# nvram set ppp_idletime=2 root@OpenWrt:/# nvram set wan_mtu=1492 root@OpenWrt:/# nvram commit nvram_commit(): start nvram_commit(): end root@OpenWrt:/# reboot root@OpenWrt:/# Connection closed by foreign host.Võtame maha patchkaabli pordi 4 ja INTERNET vahelt. Paneme adsl modemist tuleva kaabli INTERNET porti. Kui kõik on hästi on näha midagi sellist.
root@purk:/# route Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 10.0.0.1 * 255.255.255.255 UH 0 0 0 ppp0 192.168.1.0 * 255.255.255.0 U 0 0 0 br0 default 10.0.0.1 0.0.0.0 UG 0 0 0 ppp0NB! Promptil on muutunud nimi ja et IP aadress ning vaikimisi ruuting on vlan1 pealt kolinud ppp0 interfeisile. ADSL töötab. Tegelikult töötab ka WiFi, essid on "linksys" või see mis sai pandud originaalfirmwarega. Samuti muud parameetrid. Et neid muuta on vaja mudida NVRAM parameetreid. Peale seda laseme wifi korraks maha ja voila, meil on uued seaded ilma bootimata olemas.
root@purk:/etc/init.d# nvram set wl0_ssid="testleviala"
root@purk:/etc/init.d# nvram set wl0_channel=1
root@purk:/etc/init.d# nvram commit
nvram_commit(): start
nvram_commit(): end
root@purk:/etc/init.d# wifi down
root@purk:/etc/init.d# wifi up
root@purk:/etc/init.d# iwconfig eth1
eth1 IEEE 802.11-DSF ESSID:"testleviala"
Mode:Master Channel:1 Access Point: 00:0F:66:51:81:B8
Bit Rate:54Mb/s Tx-Power=15 dBm
Retry limit:0 RTS thr:off Fragment thr:off
Encryption key:off
Link Quality:0/5 Signal level:-160 dBm Noise level:-256 dBm
Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0
Tx excessive retries:0 Invalid misc:0 Missed beacon:0
Siiamaani oleme lihtsalt saanud. Edasi tuleb keerulisem osa.
Nagu öeldud on purgis sees tore võimas riistapuu nimega VLAN'e oskav switch. Seda tulebki nüüd konfida. Vana hea nvram abiks on. Vaatame korraks hetkeseisu.
root@purk:/# nvram show | grep vlan size: 1798 bytes (30970 left) vlan0ports=1 2 3 4 5* vlan1hwname=et0 vlan1ports=0 5 vlan0hwname=et0Siit on näha, et vlan0 portideks on 1 2 3 4 ja 5*. 5* tähendab, et 5 port on tagged, so tema sisse aetakse kõik VLAN'id millest switch midagi teab. Ja see on tähtis, sest 5 port on ühendatud otse eth0 külge linuxi masinas. vlan0hwname=et0 on märksõna vlan0 interfeisi tekitamiseks eth0 külge. Niisamuti on meil olemas vlan1 mille osalised on pordid 0 (INTERNET) ja 5. Tärni ei ole vaja siinkorral korrata.
root@purk:/# nvram set vlan0ports="1 2 5*" root@purk:/# nvram set vlan3ports="3 5" root@purk:/# nvram set vlan4ports="4 5" root@purk:/# nvram set vlan3hwname=et0 root@purk:/# nvram set vlan4hwname=et0 root@purk:/# nvram commit nvram_commit(): start nvram_commit(): end root@purk:/# rebootPeale booti on meil olemas küll ümber konfitud vlan switch aga ei ühtki kasutatavat uut vlan'i linuxi mätta otsast vaadatuna, selle konfiga nüüd me tegelema hakkamegi. esmalt NVRAM. valime nimeks midagi suvalist näiteks lan3 ja sätime ta seotuks vlan3'ga, omistame staatilised ip'd ja hw aadressi mille me saame ülaltpoolt sektsioonist kus on iwconfig eth0. Kuna see on individuaalne iga seadmega tuleb võtta sealt väärtus, näiteks 00:0F:66:51:81:B8 ja liita viimasele HEX'is 1. saame 00:0F:66:51:81:B9. Järgmisele aga on see hoopis 00:0F:66:51:81:BA. Sa arvasid et 00:0F:66:51:81:B10 ? vale :)
root@purk:/# nvram set lan3_ifname=vlan3 root@purk:/# nvram set lan3_ipaddr=192.168.3.1 root@purk:/# nvram set lan3_netmask=255.255.255.0 root@purk:/# nvram set lan3_proto=static root@purk:/# nvram set lan3_hwaddr="00:0F:66:51:81:B9" root@purk:/# nvram set lan4_ifname=vlan4 root@purk:/# nvram set lan4_ipaddr=192.168.4.1 root@purk:/# nvram set lan4_netmask=255.255.255.0 root@purk:/# nvram set lan4_proto=static root@purk:/# nvram set lan4_hwaddr="00:0F:66:51:81:BA" root@purk:/# nvram commit nvram_commit(): start nvram_commit(): end root@purk:/# cd /etc/init.d/ root@purk:/etc/init.d# rm S40network root@purk:/etc/init.d# cp /rom/etc/init.d/S40network .Nii, nüüd tuleb vi'd kasutada :), liigu nooleklahvidega rea wifi up lõppu, vajuta 'a'
root@purk:/etc/init.d# vi S40network
#!/bin/sh
. /etc/functions.sh
case "$1" in
start|restart)
ifup lan
ifup wan
ifup wifi
wifi up
for route in $(nvram get static_route); do {
eval "set $(echo $route | sed 's/:/ /g')"
$DEBUG route add -net $1 netmask $2 gw $3 metric $4 dev $5
} done
;;
esac
Tulemuseks peab selline fail saama.
root@purk:/etc/init.d# cat S40network
#!/bin/sh
. /etc/functions.sh
case "$1" in
start|restart)
ifup lan
ifup wan
ifup wifi
wifi up
ifup lan3
ifup lan4
for route in $(nvram get static_route); do {
eval "set $(echo $route | sed 's/:/ /g')"
$DEBUG route add -net $1 netmask $2 gw $3 metric $4 dev $5
} done
;;
esac
Teeme booti, peale booti vaatame mis sai ifconfig nimelise utiliidiga.
root@purk:/etc/init.d# ifconfig
br0 Link encap:Ethernet HWaddr 00:0F:66:51:81:B6
inet addr:192.168.1.1 Bcast:192.168.1.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
eth0 Link encap:Ethernet HWaddr 00:0F:66:51:81:B6
UP BROADCAST RUNNING PROMISC MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
Interrupt:5 Base address:0x2000
eth1 Link encap:Ethernet HWaddr 00:0F:66:51:81:B8
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
Interrupt:4 Base address:0x1000
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
vlan0 Link encap:Ethernet HWaddr 00:0F:66:51:81:B6
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
vlan3 Link encap:Ethernet HWaddr 00:0F:66:51:81:B9
inet addr:192.168.3.1 Bcast:192.168.3.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
vlan4 Link encap:Ethernet HWaddr 00:0F:66:51:81:BA
inet addr:192.168.4.1 Bcast:192.168.4.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
Kui meil on näha kaks uut tegelast vlan3 ja vlan4, siis on asi õnnestunud.
Selle võib vahele jätta, kui dhcp teenust ei vajata.
Alustame udhcpd hankimisest. See on mu enda krosskompileeritud binaar,
kui ei usalda kompileeri ise.
root@purk:/# cd /tmp/ root@purk:~# wget http://www.bumpclub.ee/~jaanus/wrt54g/ipkg/udhcpd Connecting to www.bumpclub.ee[194.126.106.38]:80 udhcpd 100% |*****************************| 30623 00:00 ETA root@purk:~# mv udhcpd /usr/sbin/ root@purk:~# wget http://www.bumpclub.ee/~jaanus/wrt54g/ipkg/lan3.conf Connecting to www.bumpclub.ee[194.126.106.38]:80 lan3.conf 100% |*****************************| 220 00:00 ETA root@purk:~# wget http://www.bumpclub.ee/~jaanus/wrt54g/ipkg/lan4.conf Connecting to www.bumpclub.ee[194.126.106.38]:80 lan4.conf 100% |*****************************| 220 00:00 ETA root@purk:~# mv lan*.conf /etc/ root@purk:~# chmod +x /usr/sbin/udhcpd root@purk:~# wget http://www.bumpclub.ee/~jaanus/wrt54g/ipkg/S55lan3 Connecting to www.bumpclub.ee[194.126.106.38]:80 S55lan3 100% |*****************************| 33 00:00 ETA root@purk:~# wget http://www.bumpclub.ee/~jaanus/wrt54g/ipkg/S55lan4 Connecting to www.bumpclub.ee[194.126.106.38]:80 S55lan4 100% |*****************************| 33 00:00 ETA root@purk:~# mv S55lan* /etc/init.d/ root@purk:~# chmod +x /etc/init.d/S55lan*Peale booti on siis mõlemal vlanil ka toimiv DHCP server. Kui ei taha kirjuta lihtsalt chmod -x /etc/init.d/S55lan3 ja 3 lani dhcp server on väljas. Kogu tarkus on kirjas /etc/lan3.conf failis.
Teeme vajalikud eeltoimingud ja võtame vi'ga ette S45firewall faili.
root@purk:~# cd /etc/init.d/ root@purk:/etc/init.d# rm S45firewall root@purk:/etc/init.d# cp /rom/etc/init.d/S45firewall . root@purk:/etc/init.d# vi S45firewall #!/bin/sh . /etc/functions.sh WAN=$(nvram get wan_ifname) WAN=ppp0 # MUUDATUS VAJALIK PPPoE KASUTAMISEKS IPT=/usr/sbin/iptables for T in filter nat mangle ; do $IPT -t $T -F $IPT -t $T -X done $IPT -t filter -A INPUT -m state --state INVALID -j DROP $IPT -t filter -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT $IPT -t filter -A INPUT -p icmp -j ACCEPT $IPT -t filter -A INPUT -i $WAN -p tcp -j REJECT --reject-with tcp-reset $IPT -t filter -A INPUT -i $WAN -j REJECT --reject-with icmp-port-unreachable $IPT -t filter -A FORWARD -j DROP -i vlan3 -o vlan4 $IPT -t filter -A FORWARD -j DROP -i vlan4 -o vlan3 $IPT -t filter -A FORWARD -j DROP -i vlan3 -d 192.168.1.0/24 $IPT -t filter -A FORWARD -j DROP -i vlan4 -d 192.168.1.0/24 $IPT -t filter -A FORWARD -j DROP -s 192.168.1.0/24 -o vlan3 $IPT -t filter -A FORWARD -j DROP -s 192.168.1.0/24 -o vlan4 $IPT -t filter -A FORWARD -m state --state INVALID -j DROP $IPT -t filter -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT $IPT -t filter -A FORWARD -i $WAN -m state --state NEW,INVALID -j DROP $IPT -t filter -A FORWARD -o $WAN -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu $IPT -t nat -A POSTROUTING -o $WAN -j MASQUERADEEhk siin on kinni keeratud kogu liiklus vlan3, vlan4 ja br0 vahel 192.168.1.1/255.255.255.0 ja WAN interfeisiks on määratud ppp0 mis on PPPoE interfeiss. Käivitame selle firewalli. Boodi aeg pannakse ta nagunii käima.
root@purk:/etc/init.d# ./S45firewall
Lihtne ja edaspidi ssh root@192.168.1.1
root@purk:/# rm /etc/init.d/S50telnet
Ongi!
tulekul...