# Gentoo box as network switch? [SOLVED]

## Kollin

Hello,

How can i turn my Gentoo box in to a network switch?

My network looks like this:

ISP------>eth0_mainPC_eth1------>eth0_secondPC

My ISP is letting IP addresses via dhcp.I just want to let my second pc to connect to the internet with a less hassle as possible.

No routing or mangle or whatever iptables are doing.

Is it possible? How can i do this?   :Question: 

Thank you!

----------

## lma1980

*** I am not an expert but ***

I would try to bridge both eth0 and eth1 network card on the main pc but this may lead to other trouble I guess. You may have to had the bridge support in the kernel or as a module.

----------

## Kollin

 *lma1980 wrote:*   

> *** I am not an expert but ***
> 
> I would try to bridge both eth0 and eth1 network card on the main pc but this may lead to other trouble I guess. You may have to had the bridge support in the kernel or as a module.

 

I`m running apache on the main pc.How bridging will affect the web server?

I remember (from my winXP days 5 years ago) that bridging left me without inernet when i tried it in winXP environment   :Confused: 

----------

## nativemad

Hi, 

yes, bridging is a way. (i would personally prefer iptables... although you could do quite similar stuff with ebtables!   :Wink:  ) 

You just need to take an ip on the new bridge device instead of the eth directly...  that shouldn't affect apache at all!

Cheers[/code]

----------

## Kollin

 *nativemad wrote:*   

> Hi, 
> 
> yes, bridging is a way. (i would personally prefer iptables... although you could do quite similar stuff with ebtables!   ) 
> 
> You just need to take an ip on the new bridge device instead of the eth directly...  that shouldn't affect apache at all!
> ...

 

Thank you! I'll try the bridge way   :Very Happy: 

----------

## gentoo_ram

 *Kollin wrote:*   

> Hello,
> 
> How can i turn my Gentoo box in to a network switch?
> 
> My network looks like this:
> ...

 

Just using a "switch" isn't going to solve the problem unless your ISP lets you DHCP more than one IP address at once.  And if that's the case, then just get a real ethernet switch, plug all of the devices into it, and be done with it.  They don't cost that much.

If you really want no hassle, then get a switch/router sold by Netgear/Cisco/whomever.  They have already done the work for you.

If you want Internet sharing hosted by the Gentoo box, then you'll have to configure it to do it.  And that means messing with iptables.  There's just no way around it.  There are apps out there that help set up the iptables and routing rules, but iptables is still being used.

----------

## Kollin

 *gentoo_ram wrote:*   

>  *Kollin wrote:*   Hello,
> 
> How can i turn my Gentoo box in to a network switch?
> 
> My network looks like this:
> ...

 

My ISP is giving up to 3 real IP addresses via dhcp   :Wink: 

PC related stuff in my home is getting out of control already, thats why i don`t want to buy ethernet switch (more cables, more hardware and more power consumption in the house)

----------

## 1clue

FWIW, it costs $30 to get a switch.  By the time you're done figuring out what to do and how to do it, you will have spent that much in time, assuming you're making $1 an hour.

I've done what you're talking about, anything from one box all the way out to a firewall/router for my business.  That was years ago and my knowledge is obsolete because we went over to Cisco years back.

Here's the honest truth:  If you don't have a really good reason to do it, doing what you're saying will be a pain in the rear until you scrap your setup and get a switch.

If you wanted to do this for academic reasons it would be an entirely different story.  But you said you just wanted the simplest, cheapest way to get it done and that's to go get a switch.  I guarantee you won't be sorry.

----------

## Kollin

Ok ! 

Thank you every one   :Wink: 

The bridge i set up and running fine   :Very Happy: 

I`ll paste here my configs for a backup (just in case)   :Cool: 

It`s just for personal use, but if you want to add something please replay to the thread   :Wink: 

Mind that brctl wants bridge as a kernel module!!! Compiled in kernel does not work !!! (Using zen-sources here)

/etc/conf.d/network:

```
# Assign static IP addresses and run custom scripts per interface.                                                                                             

# Seperate commands with ;                                                                                                                                     

# Prefix with ! to run a shell script.                                                                                                                         

# Use \$int to represent the interface                                                                                                                         

#ifconfig_eth0="192.168.0.10 netmask 255.255.255.0"                                                                                                            

                                                                                                                                                               

ifconfig_eth0="0.0.0.0"                                                                                                                                        

ifconfig_eth1="0.0.0.0"                                                                                                                                        

                                                                                                                                                               

#rc_need_br0="net.eth0"                                                                                                                                        

# You also have ifup_eth0 and ifdown_eth0 to run other commands when                                                                                           

# eth0 is started and stopped.                                                                                                                                 

# You should note that we don't stop the network at system shutdown by default.                                                                                

# If you really need this, then set shutdown_network=YES                                                                                                       

                                                                                                                                                               

# Lastly, the interfaces variable pulls in virtual interfaces that cannot                                                                                      

# be automatically detected.                                                                                                                                   

                                                                                                                                                               

interfaces="br0"                                                                                                                                               

                                                                                                                                                               

#ifconfig_br0="dhcp"                                                                                                                                           

# You can also use files instead of variables here if you like:                                                                                                

# /etc/ifconfig.eth0 is equivalent to ifconfig_eth0                                                                                                            

# /etc/ip.eth0 is equivalent to ifconfig_eth0                                                                                                                  

# /etc/ifup.eth0 is equivalent to ifup_eth0                                                                                                                    

# /etc/ifdown.eth0 is equivalent to ifdown_eth0                                                                                                                

# Any files found will automatically be put into the interfaces variable.                                                                                      

# You don't need to escape variables in files, so use $int instead of \$int.                                                                                   

                                                                                                                                                               

# If you require DHCP, you should install dhcpcd and it to the boot or                                                                                         

# default runlevel.                                                                                                                                            

                                                                                                                                                               

# NIS users can set the domain name here                                                                                                                       

#domainname="foobar"                                                                                                                                           

                                                                                                                                                               

# You can assign a default route                                                                                                                               

#defaultroute="gw 192.168.0.1"                                                                                                                                 

#defaultroute6="gw 2001:a:b:c"                                                                                                                                 

                                                                                                                                                               

# ifconfig under Linux is not that powerful and doesn't easily handle                                                                                          

# multiple addresses                                                                                                                                           

# On the other hand, ip (iproute2) is quite powerful and is also supported                                                                                     

#ip_eth0="192.168.0.10/24; 192.168.10.10/24"                                                                                                                   

                                                                                                                                                               

# You can also use ip to add the default route.                                                                                                                

#defaultiproute="via 192.168.0.1"                                                                                                                              

#defaultiproute6="via 2001:a:b:c"                                                                                                                              

                                                                                                                                                               

# ip doesn't handle MTU like ifconfig, but we can do it like so                                                                                                

#ifup_eth0="ip link set \$int mtu 1500"                                                                                                                        

                                                                                                                                                               

# Create a bonded interface                                                                                                                                    

#interfaces="bond0"                                                                                                                                            

#ifup_bond0="modprobe bonding; ifconfig \$int up; ifenslave \$int bge0"

#ifconfig_bond0="192.168.0.10 netmask 255.255.255.0"                                                                                                           

#ifdown_bond0="rmmod bonding"                                                                                                                                  

                                                                                                                                                               

# Create tap interface and a bridge interface.                                                                                                                 

# We add the tap to the bridge.                                                                                                                                

# An external program, like dhcpcd, will configure the IP on the bridge                                                                                        

#interfaces="br0"                                                                                                                                              

#ifconfig_br0="dhcp"                                                                                                                                           

#ifup_tun0="tunctl -t \$int"                                                                                                                                   

#ifdown_tun0="tunctl -d \$int"                                                                                                                                 

#ifup_br0="brctl addbr \$int; brctl addif \$int eth0; brctl addif \$int eth1"                                                                                  

#ifup_br0="brctl addbr br0; brctl addif br0 eth0; brctl addif br0 eth1"                                                                                        

#ifdown_br0="ifconfig \$int down; brctl delbr \$int"                                                                                                           

                                                                                                                                                               

ifup_br0="brctl addbr \$int; brctl addif \$int eth0; brctl addif \$int eth1"                                                                                   

ifdown_br0="ifconfig \$int down; brctl delbr \$int"                                                                                                            

rc_need_br0="net.eth0"                                                                                                                                         

                                                                                                                                                               

# Create VLAN                                                                                                                                                  

#interfaces="eth0_2 eth0_3 eth0_4"                                                                                                                             

#ifup_eth0="vconfig add \$int 2; vconfig add \$int 3; vconfig add \$int 4"                                                                                     

#ifconfig_eth0_2="192.168.2.10 netmask 255.255.255.0"                                                                                                          

#ifconfig_eth0_3="192.168.3.10 netmask 255.255.255.0"                                                                                                          

#ifconfig_eth0_4="192.168.4.10 netmask 255.255.255.0"                                                                                                          

#ifdown_eth0="vconfig rem \$int.2; vconfig rem \$int.3; vconfig rem \$int.4"                                                                                   

                                                                                                                                                               

# Normally you would use wpa_supplicant to configure wireless, but you can                                                                                     

# use iwconfig also                                                                                                                                            

#ifup_wlan0="iwconfig \$int key s:secretkey enc open essid foobar" 
```

/etc/dhcpcd.conf

```
# A sample configuration for dhcpcd.                                                                                                                           

# See dhcpcd.conf(5) for details.                                                                                                                              

#nohook resolv.conf                                                                                                                                            

background                                                                                                                                                     

# Inform the DHCP server of our hostname for DDNS.                                                                                                             

hostname                                                                                                                                                       

# To share the DHCP lease across OSX and Windows a ClientID is needed.                                                                                         

# Enabling this may get a different lease than the kernel DHCP client.                                                                                         

# Some upstream DHCP servers may also require a ClientID, such as FRITZ!Box.                                                                                   

#clientid                                                                                                                                                      

allowinterfaces br0                                                                                                                                            

#denyinterfaces eth0                                                                                                                                           

#denyinterfaces eth1                                                                                                                                           

#interface eth0 static ip_address=0.0.0.0                                                                                                                      

#interface eth1 static ip_address=0.0.0.0                                                                                                                      

#static domain_name_servers=212.50.10.50                                                                                                                       

#static domain_name_servers=212.50.0.10                                                                                                                        

#static domain_name_servers=212.50.0.15                                                                                                                        

# A list of options to request from the DHCP server.                                                                                                           

option domain_name_servers, domain_name, domain_search, host_name                                                                                              

option classless_static_routes                                                                                                                                 

# Most distributions have NTP support.                                                                                                                         

option ntp_servers                                                                                                                                             

# Respect the network MTU.                                                                                                                                     

option interface_mtu                                                                                                                                           

# A ServerID is required by RFC2131.                                                                                                                           

require dhcp_server_identifier                                                                                                                                 

                                                                                                                                                               

# A hook script is provided to lookup the hostname if not set by the DHCP                                                                                      

# server, but it should not be run by default.                                                                                                                 

nohook lookup-hostname                                                                                                                                         

#nohook resolv.conf  
```

----------

## darkphader

 *1clue wrote:*   

> FWIW, it costs $30 to get a switch.  By the time you're done figuring out what to do and how to do it, you will have spent that much in time, assuming you're making $1 an hour.

 

Agreed :) And even though it's working when the Gentoo box is down they are all down (without reconfiguring the network cables). Just because you can do it doesn't mean you should. And if you don't want a cheap switch for a wee bit more ($88.99 Dell 2808) you can get a good web-managed 8 port gigabit switch with vlan support, etc.

----------

## 1clue

 *darkphader wrote:*   

>  *1clue wrote:*   FWIW, it costs $30 to get a switch.  By the time you're done figuring out what to do and how to do it, you will have spent that much in time, assuming you're making $1 an hour. 
> 
> Agreed  And even though it's working when the Gentoo box is down they are all down (without reconfiguring the network cables). Just because you can do it doesn't mean you should. And if you don't want a cheap switch for a wee bit more ($88.99 Dell 2808) you can get a good web-managed 8 port gigabit switch with vlan support, etc.

 

IMO there are only two reasons people try to do this:  They're either curious about networking, which is awesome, or they're trying to save a few bucks, which they may for a month or two but will quickly lose several times the price of even the best home switch just from needing to leave one machine running continually so the others have network access.  Not to mention the extra hoops you need to jump through.

The good thing for the rest of us is that it's easy to figure out who is who by the way they ask the questions.  I saw what the OP was asking, and figured the only possible solution he would accept is the cheapest one available.

No insult intended to the OP, it's just that what you're trying to do can't be done by an entire box nearly as well as it can by even the cheapest appliance.  A general purpose computer has latencies that a switch doesn't because it has built-to-purpose hardware, and there's a whole slough of other reasons why the regular PC can't be as fast, as reliable or as cheap to run.  And probably not as secure.

Thanks.

----------

