Plnohodnotné testování Ronja-spoje na jednom PC: Porovnání verzí
m (Stránka Plnohodnotné testovánà Ronja-spoje na jednom PC přemístěna na stránku Plnohodnotné testování Ronja-spoje na jednom PC) |
|||
(Nejsou zobrazeny 2 mezilehlé verze od 2 dalších uživatelů.) | |||
Řádek 9: | Řádek 9: | ||
== Skript == | == Skript == | ||
− | + | ||
− | + | <bash>#!/bin/sh | |
− | + | ||
− | + | # a shell script to test two network iterfaces through external | |
− | + | # cross-cable loop or switch a whatever ;-) | |
− | + | # | |
− | + | # Author: Pavel Kriz | |
− | + | # http://www.gybon.cz/~pavkriz | |
− | + | # Thx to: Jezz | |
− | + | # Developed by hkfree.org | |
− | + | ||
− | + | ETH0=eth0 | |
− | + | ETH1=eth1 | |
− | + | ||
− | + | ####################### | |
− | + | ||
− | + | MAC0=`ifconfig $ETH0 | awk "/HWad/ {print \\\$5}"` | |
− | + | MAC1=`ifconfig $ETH1 | awk "/HWad/ {print \\\$5}"` | |
− | + | ||
− | + | # ETH0 | |
− | + | ifconfig $ETH0 192.168.0.1 | |
− | + | echo 0 >/proc/sys/net/ipv4/conf/$ETH0/rp_filter | |
− | + | route add -host 192.168.11.1 dev $ETH0 | |
− | + | arp -s 192.168.11.1 $MAC1 dev $ETH0 | |
− | + | iptables -t nat -A PREROUTING -i $ETH0 -j DNAT -d 192.168.10.1 --to 192.168.0.1 | |
− | + | iptables -t nat -A POSTROUTING -o $ETH0 -j SNAT -s 192.168.0.1 --to 192.168.10.1 | |
− | + | ||
− | + | # ETH1 | |
− | + | ifconfig $ETH1 192.168.1.1 | |
− | + | echo 0 >/proc/sys/net/ipv4/conf/$ETH1/rp_filter | |
− | + | route add -host 192.168.10.1 dev $ETH1 | |
− | + | arp -s 192.168.10.1 $MAC0 dev $ETH1 | |
− | + | iptables -t nat -A PREROUTING -i $ETH1 -j DNAT -d 192.168.11.1 --to 192.168.1.1 | |
− | + | iptables -t nat -A POSTROUTING -o $ETH1 -j SNAT -s 192.168.1.1 --to 192.168.11.1 | |
− | + | ||
− | + | # ETH0 - IP 192.168.10.1 through external cable loop | |
+ | # ETH1 - IP 192.168.11.1 through external cable loop | ||
+ | </bash> | ||
== Známé chyby == | == Známé chyby == |
Aktuální verze z 17. 1. 2009, 17:42
Idea
Následující skript umožňuje otestování obecně jakéhokoliv ethernetovského propojení dvou síťových karet v tomtéž PC (rovněž může sloužit i pro vlastní otestování této dvojice karet) na Linuxu.
Jelikož oficiální postup testování Ronja-spoje na koberci neobsahuje (neobsahoval) plnohodnotný test (tj. možnost otestovat FTP přenosem a podobně) pro jedno PC s dvěma kartami, rozhodl jsem se vytvořit tento skript.
Skript používá interfacy eth0 a eth1 a umožňuje např. pingnout na eth1 tak aby packet prošel kabelem (nebo čímkoliv dalším co karty propojuje) z eth0 a odpověč rovněž kabelem zase opačným směrem.
Pokud by se nepoužil tento skript, jádro by neodeslalo packet kabelem ale použilo by loopback, pokud se loopback zakáže, odpověč nepřijde vůbec.
Skript
<bash>#!/bin/sh
- a shell script to test two network iterfaces through external
- cross-cable loop or switch a whatever ;-)
- Author: Pavel Kriz
- http://www.gybon.cz/~pavkriz
- Thx to: Jezz
- Developed by hkfree.org
ETH0=eth0 ETH1=eth1
MAC0=`ifconfig $ETH0 | awk "/HWad/ {print \\\$5}"` MAC1=`ifconfig $ETH1 | awk "/HWad/ {print \\\$5}"`
- ETH0
ifconfig $ETH0 192.168.0.1 echo 0 >/proc/sys/net/ipv4/conf/$ETH0/rp_filter route add -host 192.168.11.1 dev $ETH0 arp -s 192.168.11.1 $MAC1 dev $ETH0 iptables -t nat -A PREROUTING -i $ETH0 -j DNAT -d 192.168.10.1 --to 192.168.0.1 iptables -t nat -A POSTROUTING -o $ETH0 -j SNAT -s 192.168.0.1 --to 192.168.10.1
- ETH1
ifconfig $ETH1 192.168.1.1 echo 0 >/proc/sys/net/ipv4/conf/$ETH1/rp_filter route add -host 192.168.10.1 dev $ETH1 arp -s 192.168.10.1 $MAC0 dev $ETH1 iptables -t nat -A PREROUTING -i $ETH1 -j DNAT -d 192.168.11.1 --to 192.168.1.1 iptables -t nat -A POSTROUTING -o $ETH1 -j SNAT -s 192.168.1.1 --to 192.168.11.1
- ETH0 - IP 192.168.10.1 through external cable loop
- ETH1 - IP 192.168.11.1 through external cable loop
</bash>
Známé chyby
Existuje vícero verzí ifconfigu s různým formátem výstupu. Řádky s awk mají za úkol vyparsovat z výstupu ifconfigu MAC adresu síťové karty, pokud skript selže je možné, že formát ifconfigu je jiný než jaký skript předpokládá. Pohrajte si s číslem parametru (zde $5).
Je možné že skript lze vylepšit, zjednodušit, klidně tvořte (tohle je vlastně první verze co mi fungovala).
Další možnost je místo skriptu použít jaderný modul (není standardně v Linuxu), který pozmění použití loopbacku. Nicméně pro tento účel je to zbytečně težký kalibr.