# Internetverbindungsfreigabe für Windows Rechner

## flammenflitzer

Hallo

Ich habe zwei Rechner. Beide mit WindowsXP. Einer, mit der Internetanbindung, zusätzlich mit Gentoo.

Ich habe unter Windows ICS eingerichtet. Nun möchte ich, daß der zweite Windows Rechner auch über den Gentoo Rechner ins Internet kommt. Die IP Adressen, Netmask ,Gateway, DNS habe ich wie unter Windows auch unter Gentoo statisch vergeben. 

Kann mir jemand ein Paar Tipps geben? ( Bei Gentoo habe ich für die Versuche die Firewall deaktiviert)

Danke

MfG

 :Question: 

----------

## SnorreDev

Suchmal unter den Schlagworten iptables, howto, nat und forwarding im Internet.

Alternativ gibts glaub ich im Forum www.adsl4linux.de eine ganze Menge von Anleitungen und Tips.

----------

## boris64

du benutzt xdsl, richtig?

als erstes ein

```
adsl-setup
```

alles wie gewohnt angeben, bei

```
The firewall choices are:

0 - NONE: This script will not set any firewall rules.  You are responsible

          for ensuring the security of your machine.  You are STRONGLY

          recommended to use some kind of firewall rules.

1 - STANDALONE: Appropriate for a basic stand-alone web-surfing workstation

2 - MASQUERADE: Appropriate for a machine acting as an Internet gateway

                for a LAN

>>> Choose a type of firewall (0-2):
```

dann "2" wählen.

verbindung erneut starten.

```
adsl-stop && adsl-start
```

nun brauchst du noch einen dns, empfehle da mal dnsmasq (statt bind)

(megaeinfach zu konfigurieren und für zu hause schlichtweg genau das richtige)

```
emerge dnsmasq
```

dann den dns-dienst noch starten

```
/etc/init.d/dnsmasq start
```

et voila, soweit "sollte" das alles gewesen sein.

[EDIT]SnorreDev hat schon recht, howtos etc. gibts im netz

en masse, aber ich hatte heute meinen quasseltag.

verzeihung  :Wink: 

[/EDIT]

----------

## flammenflitzer

Ich benutze ein Kabelmodem. Die meist englischsprachigen Anleitungen nerven, wenn man geringe Englischkenntnisse hat. Ich habe mich schon Stundenweise durch Howtos und Anleitungen gekämpft. Ich nutze das Forum u.a., weil ich ab und zu die Hoffnung habe, daß irgend jemand ein ähnliches Problem auch schon hatte, sich dann durch Anleitungen gekämpft hat und nun einem anderen Dummen vielleicht eine Abkürzung zum Ziel zeigt.

MfG

----------

## SnorreDev

Is auch nicht boese gemeint mit den HowTo's nur gibts halt unter Linux X Moeglichkeiten, sowas zu bewerkstelligen. Es gibt auch fertige Scripte.

Und wenn dir jemand vorbetet, du must jetzt so schreiben und so schreiben, dann hat das fuer dich nicht viel Sinn, da du ja die Grundlagen damit nicht verstanden hast, und beim naechsten mal wieder vor dem selben Problem stehst.

----------

## flammenflitzer

War auch nicht so verstanden. Ich sitze stundenlang an dem Rechner und habe mir gerade eine Kritik von meiner Frau eingehandelt, weil sie nicht in's Internet kommt, wenn ich mit Gentoo unterwegs bin. Habe deshalb eine schnelle Lösung gesucht.

MfG

----------

## boris64

ist denn dein problem nun ein ex-problem?

----------

## SnorreDev

Falls es dir was hilft - hier ist der Script von meinem Server - allerdings ist der nicht mehr ganz aktuell. Der passende Service steht dazu in /etc/init.d/iptables

```
server root # cat iptable-construct

set -x

#SHORTCUTS

NAMESERVERS="193.189.244.197 193.189.244.205"

LAN1=192.168.0.0/20

LAN2=192.168.1.0/20

EXT=10.0.0.0/24

SELF=192.168.0.4

ME=212.202.7.217

IP_SNORRE=192.168.0.11

IP_BUNNY=192.168.0.10

EMULE_TCP_SNORRE=5010

EMULE_TCP_BUNNY=5000

#DROP ALL STUFF

iptables -F

iptables -X

iptables -Z

#ACCEPT LOOPBACK

iptables -A INPUT -i lo -j ACCEPT

iptables -A OUTPUT -o lo -j ACCEPT

#ACCEPT ALL INTERNAL STUFF

iptables -A INPUT -i eth1 -j ACCEPT

iptables -A OUTPUT -o eth1 -j ACCEPT

#NAT

iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE

#iptables -t nat -A POSTROUTING -o eth0 -s $LAN1 -d 0/0 -j MASQUERADE

#ALLOW SSH

iptables -t filter -A INPUT -i eth1 -m tcp -p TCP --dport 22 -j ACCEPT

#ALLOW CVS

iptables -t filter -A INPUT -i eth0 -m tcp -p TCP --dport 2401 -j ACCEPT

iptables -t filter -A INPUT -i eth1 -m tcp -p TCP --dport 2401 -j ACCEPT

iptables -t filter -A INPUT -i eth0 -m udp -p UDP --dport 2401 -j ACCEPT

iptables -t filter -A INPUT -i eth1 -m udp -p UDP --dport 2401 -j ACCEPT

#ALLOW FTP

iptables -t filter -A INPUT -i eth0 -m tcp -p TCP --dport 21 -j ACCEPT

iptables -t filter -A INPUT -i eth1 -m tcp -p TCP --dport 21 -j ACCEPT

iptables -t filter -A INPUT -i eth0 -m tcp -p TCP --dport 20 -j ACCEPT

iptables -t filter -A INPUT -i eth1 -m tcp -p TCP --dport 20 -j ACCEPT

iptables -t filter -A INPUT -i eth0 -m udp -p UDP --dport 21 -j ACCEPT

iptables -t filter -A INPUT -i eth1 -m udp -p UDP --dport 21 -j ACCEPT

#FORWARD EMULE

iptables -A INPUT -p tcp --dport 5000 -j ACCEPT

iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 5000 -j DNAT \

        --to-destination 10.0.0.2:5000

iptables -A FORWARD -i eth1 -p tcp --dport 5000 -j ACCEPT

#ALLOW ESTABLISHED OR RELATED STUFF

iptables -t filter -A INPUT -i eth1 -p TCP -m state --state \

        ESTABLISHED,RELATED -j ACCEPT

#DROP INCOMING

#iptables -t filter -A INPUT -i eth0 -m state --state NEW -j DROP

#IPFONIE

iptables -t nat -A PREROUTING -p udp --dport 80 -i ppp+ -j DNAT --to 192.168.0.11:80

iptables -t nat -A PREROUTING -p udp --dport 8080 -i ppp+ -j DNAT --to 192.168.0.11:8080

#MLDONKEY INTERFACE

iptables -t filter -A INPUT -i eth+ -m tcp -p TCP --dport 4080 -j ACCEPT

iptables -t filter -A INPUT -i eth1 -m tcp -p TCP --dport 22 -j ACCEPT

#ESEL BUNNY

iptables -t nat -A PREROUTING -p tcp --dport 5000 -i ppp+ -j DNAT --to 192.168.0.10:5000

#BT /ME

iptables -t nat -A PREROUTING -p tcp --dport 7000 -i ppp+ -j DNAT --to 192.168.0.11:7000

iptables -t nat -A PREROUTING -p tcp --dport 7001 -i ppp+ -j DNAT --to 

#DROP INCOMING

iptables -t filter -A INPUT -i eth0 -m state --state NEW -j DROP

iptables -n -L

sleep 1

echo 1 > /proc/sys/net/ipv4/ip_forward

```

----------

## flammenflitzer

Ich habe das Problem noch nicht gelöst. Ich habe mich erst einmal belesen.

http://www.linuxwiki.de/debian_2ddhcp?action

http://howto.linux-hardware-shop.de/dnsmasq.html

Nun bin ich dabei weiter zu recherchieren.

"...dnsmasq holt sich den/die konfigurierten Nameserver die er forwarden soll standardmäßig aus der Datei /etc/resolv.conf..."

Das ist klar. Da habe ich meinen DNS für meinen Internetzugang fest eingetragen.

"...Desweiteren liest er auf dem Rechner auf dem er läuft die Datei /etc/hosts und stellt deren Inhalt auch für DNS Abfragen in das Netzwerk..."

Dort habe ich den Hostnamen und die Adresse meines Rechners eingetragen.

"...und alle anderen Rechner mit Eintrag dieses Nameservers in der Datei /etc/resolv.conf automatisch auf dem neusten Stand sind was die lokalen Rechner angeht und auch die Internetadressen korrekt aufgelöst bekommen..." 

Der andere Rechner hat keine /etc/resolv.conf , da es ein Windows Rechner ist. Dort habe ich als Gateway und DNS die IP von eth0 eingetragen.

+++ eth0 Lan (Netzwerkkarte)

+++ eth1 Internet (USB-Kabelmodem)

DHCPD nutze ich nicht. Ich habe alle IP's fest vergeben.

Ich denke, das ich, um weiterzukommen die /etc/dnsmasq konfigurieren muß. Und wie das geht muß ich noch ein bißchen recherchieren.

Muß ich iptables konfigurieren? Ich wollte erst einmal ein Erfolgserlebnis und ohne Firewall nur die Internetverbindungsfreigabe zum laufen bringen.

MfG

----------

## flammenflitzer

http://www.linuxnetmag.com/de/issue7/m7dnsmasq1.html

"...Ändert sich nun die IP-Adresse eines Clients, oder kommt ein weiterer Client zum Netzwerk hinzu, reicht eine Änderung der /etc/hosts auf dem Masquerading-Server, und schon ist die IP-Adresse auch allen anderen Clients im Netz bekannt...."

Wenn ich das Richtig verstehe muß nur in der /etc/hosts auf meinem Rechner die IP des Client-Rechner eintragen?

MfG

----------

## theche

is generell ne gute idee tät ich sagen, geht aber nur solange statische ips verwendet werden

[edit]

nochmal richtig les: hab keine ahnung...

[/edit]

----------

## boris64

 *Quote:*   

> Ich denke, das ich, um weiterzukommen die /etc/dnsmasq konfigurieren muß. Und wie das geht muß ich noch ein bißchen recherchieren.

 

wenn du dnsmasq via "emerge dnsmasq" installiert hast, ist die .conf-datei

unter /etc/conf.d/dnsmasq zu finden. aber ob man die datei wirklich anpassen 

muss, ist mir unklar, weil ich hab den dienst installiert, gestartet und alle

clients hier im netz (192.168.0.0/24-255.255.255.0) kamen ins inet.

 *Quote:*   

> Muß ich iptables konfigurieren? Ich wollte erst einmal ein Erfolgserlebnis und ohne Firewall nur die Internetverbindungsfreigabe zum laufen bringen

 

für den fall, dass du rp-pppoe benutzt und die oben genannten einstellungen 

benutzt

```
2 - MASQUERADE: Appropriate for a machine acting as an Internet gateway

                for a LAN

>>> Choose a type of firewall (0-2):
```

sollte das nicht nötig sein (das erledigt das adslstart-script). allerdings

musst du iptables natürlich installiert haben (und die unterstüptzung im kernel

ist natürlich auch pflicht  :Wink: )

----------

## Rad

 *Quote:*   

> Wenn ich das Richtig verstehe muß nur in der /etc/hosts auf meinem Rechner die IP des Client-Rechner eintragen? 

 

Das wäre die Idee, aber ich seh' gerade nicht wo dir bei deinem Problem ein Nameserver im internen Netzwerk helfen sollte; son Teil ist nämlich nur dazu da, z.B. "meincomputer.athome.localdomain" nach 192.168.24.2 aufzulösen...

Frage: Ist WIRKLICH nur noch die DNS - Resolution noch ein Problem? So wie ich's verstanden hab' tut dnsmasq nämlich nur genau DNS - Einträge weiterleiten- eine Verbindung à la Windows ICS zum Internet kriegste damit nicht! ^^

Falls nein: Du musst entweder auf die eine oder andere Art etwas netfilter/iptables lernen oder eine simple "Fertiglösung für Routing" (weiss nimmehr wie die heisst, 's gab aber 'mal sowas im Portage - Tree) nehmen.

Ich würde eigentlich empfehlen "shorewall" zu benützen und in der Doc von dem den Abschnitt über IP-Masquerading "masq" zu lesen... ist IMO etwas intuitiver als "reine" iptables. =)[/quote]

----------

## SnorreDev

Jetzt mal eine glaube dumme Frage bei dnsmasq

Bisher hatte ich die Nameserver des Providers immer auf jedem Client eingetragen. Aber ich dachte mir - hey - ich cache das jetzt mal mit dnsmasq.

Nur motzt mein Server, dass er /etc/resolv.com und /etc/hosts nicht lesen kann^^

Dabei wirds doch /etc/init.d/dnsmasq als root ausgefuehrt. Die Permission von den Files ist auf 0644 also sollte es doch kein Problem darstellen oder?

```
erver root # ls -l /etc/hosts /etc/resolv.conf

-rw-r--r--  1 root root 843 Mar 29 05:21 /etc/hosts

-rw-r--r--  1 root root  54 Apr  3 00:11 /etc/resolv.conf

```

Die nette Antwort beim Start hier:

```
Apr 11 15:09:45 [dnsmasq] exiting on receipt of SIGTERM

Apr 11 15:09:46 [dnsmasq] started, version 2.6 cachesize 150

Apr 11 15:09:46 [dnsmasq] failed to load names from /etc/hosts: Permission denied

Apr 11 15:09:46 [dnsmasq] failed to access /etc/resolv.conf: Permission denied

```

----------

## boris64

 *Quote:*   

> Nur motzt mein Server, dass er /etc/resolv.com und /etc/hosts nicht lesen kann^^
> 
> Dabei wirds doch /etc/init.d/dnsmasq als root ausgefuehrt. Die Permission von den Files ist auf 0644 also sollte es doch kein Problem darstellen oder? 

 

er läuft bei mir als "nobody", nicht als root.

```
root@drbloed drbloed # top | grep dns

 6822 nobody    16   0  1684  624 1524 S  0.0  0.1   0:00.00 dnsmasq
```

----------

## SnorreDev

@Boris - stimmt - laeuft wirklich als nobody

Also nach einigem Rechtegefriemel usw. bin ich noch kein Stueck weiter mit dnsmasq.

Die Rechte fuer /etc/hosts und /etc/resolve.conf sind immer noch 644 somit eigentlich fuer jeden lesbar.

```
server root # ls -l /etc/hosts /etc/resolv.conf

-rw-r--r--  1 root root 843 Mar 29 05:21 /etc/hosts

-rw-r--r--  1 root root  54 Apr 11 20:07 /etc/resolv.conf
```

Der Server laeuft:

```

server root # ps aux|grep dns

nobody    5607  0.0  0.5  1608  704 ?        S    Apr11   0:00 /usr/sbin/dnsmasq -x /var/run/dnsmasq.pid
```

Aber immer noch der Fehler beim Starten

```

Apr 12 16:22:36 [dnsmasq] started, version 2.6 cachesize 150

Apr 12 16:22:36 [dnsmasq] failed to load names from /etc/hosts: Permission denied

Apr 12 16:22:36 [dnsmasq] failed to access /etc/resolv.conf: Permission denied
```

Habt ihr eine Idee, wie ich das beseitigen kann?

Ein DNS Cache nutzt ja leider nichts, wenn er sich keine Info's vom DNS Server holt, und die somit auch nicht versendet.

Per Commandline Interface bzw. Optionen in /etc/conf.d/dnsmasq kann ich /etc/hosts umgehen, und einfach auf der interface eth1 binden. Wenn ich ihm noch einen DNS Server dazu gebe, dann holt er sich aber keine Info's von dort. Allerdings waehre mir doch lieber, wenn er als Service ohne Fehlermeldungen laufen wuerde  :Wink: 

----------

## boris64

ich würde dir echt gerne helfen, nur gelingt es mir nicht,

das problem zu reproduzieren. meine /etc/resolve.conf

(link auf /etc/ppp/resolve.conf) und /etc/hosts haben die gleichen

rechte gesetzt wie bei dir.

```
drbloed cards # ls -l /etc/ppp/resolv.conf /etc/hosts

-rw-r--r--  1 root root 890 23. Jan 00:34 /etc/hosts

-rw-r--r--  1 root root  50 12. Apr 02:47 /etc/ppp/resolv.conf

```

selbst wenn ich dnsmasq manuell starte (komischerweise lässt er beim

manuellen start die rootrechte nicht fallen), sieht das ganze so aus.

```
drbloed cards # /usr/sbin/dnsmasq -d -x /var/run/dnsmasq.pid

dnsmasq: failed to drop root privs

dnsmasq: read /etc/hosts - 18 addresses

dnsmasq: reading /etc/resolv.conf

dnsmasq: using nameserver 194.25.2.129#53

dnsmasq: using nameserver 217.237.151.33#53

```

tja, ?!

wählst du dich auch per ppp/dsl ein?

----------

## SnorreDev

Die Einwahl erfolgt ueber einen eigenen ADSL Startscript, der im default runlevel gestartet wird. Der startet dann adsl-start.

```
#!/sbin/runscript

depend() {

        need net.eth0

}

start() {

        ebegin "Starting ADSL connection"

        /usr/sbin/adsl-start

        /usr/bin/startFW.sh

        eend $? Failed to start ADSL connection

}

stop() {

        ebegin "Stopping ADSL connection"

        /usr/sbin/adsl-stop

        eend $? Failed to stop ADSL connection

}
```

----------

