
Ich muss ein DHCP-fähiges Netzwerk (192.168.2.) auf einer physischen Ebene konfigurieren, auf der sich ein bereits vorhandenes Netzwerk (192.168.1.) mit statischen IPs befindet. Ich habe einen Debian 7-Server mit zwei Schnittstellen (Server und Schnittstellen sind alle virtuell) und möchte IP als Gateway für mein Netzwerk einrichten. Ich habe eth0 zum Routing von Paketen an das ursprüngliche Netzwerk verwendet (um auf das Internet-Gateway unter 192.168.1.5 zuzugreifen) und eth1 zum Verwalten des Datenverkehrs von/zu meinem Netzwerk.
ifconfig
eth0 Link encap:Ethernet HWaddr 00:0c:29:d4:02:1b
inet addr:192.168.1.110 Bcast:192.168.1.255 Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:fed4:21b/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:21668983 errors:0 dropped:0 overruns:0 frame:0
TX packets:10044848 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:10931368249 (10.1 GiB) TX bytes:2383839079 (2.2 GiB)
eth1 Link encap:Ethernet HWaddr 00:0c:29:d4:02:25
inet addr:192.168.2.1 Bcast:192.168.2.255 Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:fed4:225/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:14113604 errors:0 dropped:0 overruns:0 frame:0
TX packets:11269734 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:1871598524 (1.7 GiB) TX bytes:10331981618 (9.6 GiB)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:8158 errors:0 dropped:0 overruns:0 frame:0
TX packets:8158 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:629690 (614.9 KiB) TX bytes:629690 (614.9 KiB)
Route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
default 192.168.1.5 0.0.0.0 UG 0 0 0 eth0
localnet * 255.255.255.0 U 0 0 0 eth0
192.168.2.0 * 255.255.255.0 U 0 0 0 eth1
iptables -vL
Chain INPUT (policy ACCEPT 5603K packets, 822M bytes)
pkts bytes target prot opt in out source destination
Chain FORWARD (policy DROP 138K packets, 8597K bytes)
pkts bytes target prot opt in out source destination
14M 9542M ACCEPT all -- any any anywhere anywhere state RELATED,ESTABLISHED
398K 27M ACCEPT all -- eth1 any anywhere anywhere
Chain OUTPUT (policy ACCEPT 2915K packets, 1432M bytes)
pkts bytes target prot opt in out source destination
iptables -tnat -vL
Chain PREROUTING (policy ACCEPT 607K packets, 49M bytes)
pkts bytes target prot opt in out source destination
Chain INPUT (policy ACCEPT 112K packets, 17M bytes)
pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 6893 packets, 977K bytes)
pkts bytes target prot opt in out source destination
Chain POSTROUTING (policy ACCEPT 2391 packets, 374K bytes)
pkts bytes target prot opt in out source destination
363K 24M MASQUERADE all -- any eth0 anywhere anywhere
Danach habe ich einen autoritativen DHCP-Server auf eth1 aktiviert.
Nun zum Problem: Verbindungen zum Server funktionieren immer (ich habe dort eine Samba-Freigabe und einen MySQL-Server), aber manchmal (scheinbar zufällig) können die Clients (hauptsächlich Windows 7 oder XP) für einen unterschiedlich langen Zeitraum keine Verbindung zum Internet herstellen. In diesem Zustand kann ich einen Ping an 192.168.1.110 senden, aber nicht an 192.168.1.5.
Nachtrag
Die Tatsache, dass die FORWARD-Kette Pakete verloren hat, erscheint verdächtig, daher habe ich diese Filterung vorübergehend deaktiviert mit:
iptables -A FORWARD -j ACCEPT
Mit der neuen Regel funktioniert alles. Ich muss allerdings noch klären, was los ist ...
Nachtrag 2
Dies sind die aktuellen iptables-Regeln:
iptables-speichern
# Generated by iptables-save v1.4.14 on Fri Jun 27 20:53:32 2014
*mangle
:PREROUTING ACCEPT [28129147:14012989399]
:INPUT ACCEPT [8479051:1218948772]
:FORWARD ACCEPT [19639349:12792010625]
:OUTPUT ACCEPT [4434912:3183821941]
:POSTROUTING ACCEPT [23940877:15968783924]
COMMIT
# Completed on Fri Jun 27 20:53:32 2014
# Generated by iptables-save v1.4.14 on Fri Jun 27 20:53:32 2014
*nat
:PREROUTING ACCEPT [931027:74896097]
:INPUT ACCEPT [153578:23398245]
:OUTPUT ACCEPT [9169:1292388]
:POSTROUTING ACCEPT [3186:492868]
-A POSTROUTING -o eth0 -j MASQUERADE
COMMIT
# Completed on Fri Jun 27 20:53:32 2014
# Generated by iptables-save v1.4.14 on Fri Jun 27 20:53:32 2014
*filter
:INPUT ACCEPT [2415796:331288771]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [1218435:1654003511]
-A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -i eth1 -j ACCEPT
-A FORWARD -j ACCEPT
COMMIT
# Completed on Fri Jun 27 20:53:32 2014
Antwort1
Um zu diagnostizieren, wo die Pakete durch die iptables-Ketten fließen, können Sie den Parameter -j LOG und ggf. --log-prefix (ein Text zur einfachen Identifizierung des Protokolls in kern.log oder syslog) verwenden. Sie können die standardmäßige Accept-Richtlinie beibehalten und am Ende der FORWARD-Kette eine Deny-All-Regel mit aktivierter Protokollierung hinzufügen, damit Sie besser verstehen, welche Art von Paketen gelöscht werden.
Sie können einen Blick auf diese Schaltpläne werfenhttp://www.linuxnetmag.com/share/issue9/iptables3.jpg, die den grundlegenden Paketfluss innerhalb von Iptables-Ketten zeigen.
Um eine bessere Antwort geben zu können, wäre es interessant, die vollständigen von Ihnen definierten iptable-Regeln zu haben.