Antworten:
Für einen einfachen Router müssen nur zwei Schritte ausgeführt werden.
Der erste Schritt besteht darin, das Routing im Kernel zu aktivieren. Standardmäßig verwirft der Kernel Pakete, die er nicht erkennt. Sobald Sie das Routing aktivieren, werden sie weitergeleitet. Sie müssen beim Booten des Computers einen dieser beiden Befehle ausführen:
sysctl -w net.ipv4.ip_forward=1
echo 1 >/proc/sys/net/ipv4/ip_forward
Viele Distributionen haben eine Datei namens /etc/sysctl.conf
, in der Sie die Zeile net.ipv4.ip_forward=1
einfügen können, um diesen Befehl beim Booten des Computers auszuführen. Wenn es ein Verzeichnis gibt /etc/sysctl.d
, können Sie eine Datei in diesem Verzeichnis hinzufügen, anstatt sie zu bearbeiten /etc/sysctl.conf
. Rufen Sie die Datei auf something.conf
.
Für IPv6 ist die entsprechende Einstellung net.ipv6.conf.all.forwarding
oder /proc/sys/net/ipv6/conf/all/forwarding
. Sie können auch net.ipv4.conf.all.forwarding
oder /proc/sys/net/ipv4/conf/all/forwarding
für IPv4 verwenden.
Der zweite Schritt besteht darin, Routing-Tabellen festzulegen. Dies kann einfach oder kompliziert sein, je nachdem, wie viel Sie tun müssen. Konfigurieren Sie für einfache Zwecke die Adresse und die Netzmaske jeder Netzwerkschnittstelle und fügen Sie mit dem route
Befehl die erforderliche zusätzliche Route hinzu .
Wenn Sie Pakete neu schreiben müssen, lautet der grundlegende Befehl iptables
( ip6tables
für IPv6). ("Netfilter" ist der Name der Kernel-Paketverarbeitungsfunktion und "iptables", wenn der Name des Programms, das ihn steuert.) Hier wird nach Filterung, NAT und mehr gesucht.
Informationen zu komplexen Setups finden Sie im ip
Befehl aus dem iproute2- Paket.
iptables --table nat --append POSTROUTING --out-interface eth0 -j MASQUERADE
und iptables --append FORWARD --in-interface eth1 -j ACCEPT
. Ich habe die IP meines Client-Computers auf 192.168.30.10 festgelegt. Mein Client-Computer ist über eth1 mit dem Linux-Server verbunden. Ok, wenn ich 192.168.30.1 anpinge, ist es in Ordnung, aber ich kann keine Verbindung zum Internet herstellen. (kann google.com oder eine andere Webadresse nicht anpingen). Ich habe auch mein gültiges DNS in die Datei /etc/resolv.conf geschrieben. Kannst du mir dabei helfen? Vielen Dank.
8.8.8.8
? Wenn ja, haben Sie ein DNS-Problem. Wenn nicht, liegt ein IP-Konnektivitätsproblem vor. copy-paste die Ausgabe von ifconfig
, route -n
, iptables -nvL
und iptables -t nat -nvL
.
Schließen Sie zuerst die IPs des Netzwerks an, für das Sie als Router fungieren möchten. Holen Sie sich entweder mehrere Netzwerkkarten oder konfigurieren Sie eine virtuelle Schnittstelle.
Sie müssen die Paketweiterleitung von aktivieren /etc/sysctl.conf
und dann iptables für NAT konfigurieren. Hier ist ein kurzes Tutorial dafür.