$ host www.wikiberd.de
$ host -A www.wikiberd.de
$ host 188.246.6.99
$ nslookup www.wikiberd.de
$ nslookup 188.246.6.99
$ ping www.wikiberd.de
$ ping -I l2tp-vpn1 www.wikiberd.de
Flood Ping erfordert Root-Rechte. Für jedes gesendete Packet wird ein Punkt und für jede Antwort wird ein Backspace ausgegeben. Die Anzahl der Punkt zeigt daher die verlorenen Pakete.
$ sudo ping -I l2tp-vpn1 -f www.wikiberd.de
PING www.wikiberd.de (188.246.6.99) 56(84) bytes of data.
....^C
--- www.wikiberd.de ping statistics ---
13850 packets transmitted, 13846 received, 1% packet loss, time 1958ms
rtt min/avg/max/mdev = 0.123/0.129/0.285/0.013 ms, ipg/ewma 0.141/0.131 ms
-4, -6 | Regel nur für IPv4 oder IPv6 |
-t table | Auswahl einer Tabelle (Default: filter): filter, nat, mangle, raw, rsecurity |
-N chain | Anlage einer neuen Kette in der Tabelle |
-P chain policy | Standardverhalten einer Kette: ACCEPT, REJECT, DROP |
-A chain rule | Anhängen einer neuen Regel ans Ende der Kette |
-D chain rule | Löschen einer Regel in der Kette |
-I chain [nr] rule | Einfügen einer neuen Regel in der Mitte |
-R chain nr rule | Ersetzen einer Regel |
-L [chain] | Ausliften aller Regeln |
-F [chain] | Alle Regeln verwerfen (Flush) |
-X | Alle Benutzerdefinierte Ketten löschen |
-Z | Alle Zähler zurücksetzen |
! | Verneinung der folgenden Option |
-i, -o | INPUT und OUTPUT-Interface |
-p protocol | Protokoll: tcp, udp, imcp, icmpv6, all, ... |
-s ip, -sport nr | Quelladresse, Quellport |
-d ip, -dport nr | Zieladresse, Zielport |
-m module --parameter | Auswahl eines Moduls mit Modulparametern |
-m state --state state | Verbindungsstatus: NEW, ESTABLISHED, RELATED, ... |
-p tcp --tcp-flags X,X,X Y,Y,Y | Prüfe TCP-Flags X,X,X, wenn Y,Y,Y gesetzt sind (Maske) SYN, ACK, FIN, RST, URG, PSH, ALL, NONE |
-j chain | Absprung zu Kette ACCEPT, REJECT, RETURN, ... |
Firewall zurücksetzen:
$ iptables -P INPUT ACCEPT
$ iptables -F INPUT
$ iptables -P OUTPUT ACCEPT
$ iptables -F OUTPUT
$ iptables -P FORWARD DROP
$ iptables -F FORWARD
$ iptables -t nat -F
Einzelne Ports öffnen, ohne NAT:
$ iptables -F INPUT
$ iptables -P INPUT ACCEPT
$ iptables -A INPUT -i lo -j ACCEPT
$ iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
$ iptables -A INPUT -4 -p icmp -m limit --limit 10/second --limit-burst 2 -j ACCEPT
$ iptables -A INPUT -6 -p icmpv6 -m limit --limit 10/second --limit-burst 2 -j ACCEPT
$ iptables -A INPUT -i eth0 -p tcp --dport tinc -m state --state NEW -j ACCEPT
$ iptables -A INPUT -i eth0 -p udp --dport tinc -m state --state NEW -j ACCEPT
$ iptables -A INPUT -i eth0 -p tcp -m multiport --dports http,https -m state --state NEW -j ACCEPT
$ iptables -A INPUT -j LOG --log-prefix "iptables reject (input): " --log-level 4
$ iptables -A INPUT -j REJECT
Destination NAT: Portweiterleitung, Anfragen werden an interne Hosts weitergeleitet
Source NAT: Austausch der Quelladresse für ausgehende Anfragen
IP-Masquerade: Versteckt ein internes Netzwerk hinter einer öffentlichen IP-Adresse
Auf ppp0 ins Internet gehende Verbindungen maskieren:
$ iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
$ iptables -A FORWARD -i eth0 -o ppp0 -j ACCEPT
$ iptables -A FORWARD -i ppp0 -o eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT
Portweiterleitung an einen internen Webserver. Durch die zweite Regel können auch interne Hosts die externe IP aufrufen:
$ iptables -t nat -A PREROUTING -p tcp -d 188.246.6.99 --dport 80 -j DNAT --to 192.168.1.99:80
$ iptables -t nat -A POSTROUTING -p tcp -d 188.246.6.99 --dport 80 -s 192.168.1.0/24 -j SNAT --to 192.168.1.99:80
Wenn die externe IP dynamisch ist, müssen die Firewall-Regeln bei jedem IP-Wechsel neugeladen werden!
xxx
Auflisten der Routing-Tabelle:
$ netstat -r
$ route
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
default router-extern.l 0.0.0.0 UG 0 0 0 eth1
188.246.0.50 router-extern.l 255.255.255.255 UGH 0 0 0 eth1
188.246.4.1 * 255.255.255.255 UH 0 0 0 l2tp-vpn1
192.168.0.0 * 255.255.255.0 U 0 0 0 eth1
192.168.0.0 * 255.255.0.0 U 0 0 0 vpn0
192.168.1.0 * 255.255.255.0 U 0 0 0 br-lan
$ ip route list
default via 192.168.0.1 dev eth1 proto static
188.246.0.50 via 192.168.0.1 dev eth1 proto static
188.246.4.1 dev l2tp-vpn1 proto kernel scope link src 188.246.6.99
192.168.0.0/24 dev eth1 proto kernel scope link src 192.168.0.11
192.168.0.0/16 dev vpn0 proto kernel scope link src 192.168.1.1
192.168.1.0/24 dev br-lan proto kernel scope link src 192.168.1.1
Auflisten einer anderen als der Standard Routing-Tabelle:
$ ip route list table VPN1
xxx
xxx
Unterschied zum Routing: Es werden mehrere Ethernet-Segmente zusammengeschlossen. Daher existiert nur eine IP-Adresse und auch Broadcast- oder ARP-Nachrichten können die Bridge passieren. Auch LAN und WLAN lassen sich bridgen, sofern es der WiFi?-Treiber unterstützt. Die meisten Access Points lehnen aber Frames von unbekannten MAC-Adressen ab. HIerfür müsste dann mit eptables ein "NAT auf Ethernet-Ebene" eingerichtet werden.
$ brctl addbr br0
$ brctl delbr br0
$ brctl show
bridge name bridge id STP enabled interfaces
br-lan 8000.2eb05d93b617? no eth0.1
wlan0
$ brtctl adddif br0 eth0 eth1 eth2
$ brctl delif br0 eth2
$ brctl show br0
Auflistung aller Socketverbindungen (intern und extern):
$ netstat -a
$ netstat -an
Auflistung aller eingehenden Verbindungen:
$ netstat -al
Eingrezung auf TCP oder UDP:
$ netstat -alt
$ netstat -alu
$ netstat -atu
$ netstat -altu
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:ssh 0.0.0.0:* LISTEN
tcp 0 0 localhost.local:privoxy 0.0.0.0:* LISTEN
tcp 0 0 localhost.localdoma:ipp 0.0.0.0:* LISTEN
tcp 0 0 metropolis.lan:33103 snt-re4-8c.sjc.dro:http ESTABLISHED
tcp 1 0 metropolis.lan:44927 6-55-236-85.rev.cu:http CLOSE_WAIT
tcp 0 0 metropolis.lan:39384 router-intern.lan:ssh ESTABLISHED
tcp 32 0 metropolis.lan:37439 6-55-236-85.rev.c:https CLOSE_WAIT
tcp6 0 0 [::]:ssh [::]:* LISTEN
tcp6 0 0 localhost6.localdom:ipp [::]:* LISTEN
Netzwerkverbindungen mit lsof auflisten:
$ lsof -i TCP
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
dropbox 2278 dennis 18u IPv4 95849 0t0 TCP metropolis.lan:33103->snt-re4-8c.sjc.dropbox.com:http (ESTABLISHED)
ssh 7204 dennis 3u IPv4 63858 0t0 TCP metropolis.lan:39384->router-intern.lan:ssh (ESTABLISHED)
Informationen über ein Netzwerkinterface:
$ ifconfig l2tp-vpn1
l2tp-vpn1 Link encap:Point-to-Point Protocol
inet addr:188.246.6.99 P-t-P:188.246.4.1 Mask:255.255.255.255
inet6 addr: fe80::449b:1a7b:df7c:8cb7/10 Scope:Link
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1
RX packets:24697 errors:0 dropped:0 overruns:0 frame:0
TX packets:7 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:3
RX bytes:1557600 (1.4 MiB) TX bytes:234 (234.0 B)
$ ip addr show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 2e:b0:5d:93:b6:17 brd ff:ff:ff:ff:ff:ff
inet6 fe80::2cb0:5dff:fe93:b617/64 scope link
valid_lft forever preferred_lft forever
Auflistung des ARP-Caches:
$ arp -an
? (192.168.1.1) at 2e:b0:5d:93:b6:17 [ether] on p2p1
? (192.168.1.14) at ca:fe:ba:be:00:03 [ether] on p2p1
? (192.168.1.12) at ca:fe:ba:be:00:01 [ether] on p2p1
$ tcpdump -i l2tp-vpn1
$ tcpdump -Xvv -i l2tp-vpn1