Tabela de Conteúdos
Networking kung-fu
7 Maio 2011, E.T. Porto Linux
by Nuno Dantas
Vou falar de:
- bridge
- bridge + VLAN
- Multilink trunk
- bridge+ VLAN + Multilink trunk
- ipvs
- stunnel
bridge
ethx ----- Brigde ---- vif1 :--- vif2 :--- vif3 :--- vif4 :--- vifN
bridge
brctl addbr nomedabridge
brctl addif ethX
brctl show
root@kvm0:~# brctl show bridge name bridge id STP enabled interfaces rede28eth0 8000.0015171954fc no eth0 vnet2
bridge
- interfaces config file:
auto rede28eth0 iface rede28eth0 inet manual bridge_ports eth0 bridge_fd 9 bridge_hello 2 bridge_maxage 12 bridge_stp off
bridge + VLAN
ethx --ethx.vlanX--- Brigde ---- vifX1 : :--- vifX2 : :--- vifX3 : :--- vifX4 : :--- vifXN : :-ethx.vlanY--- Brigde ---- vifY1 :--- vifY2 :--- vifY3 :--- vifY4 :--- vifYN
bridge + VLAN
vconfig add eth1 25
vconfig add eth1 97
root@kvm0:~# cat /proc/net/vlan/config VLAN Dev name | VLAN ID eth1.25 | 25 | eth1 eth1.97 | 97 | eth1
bridge + VLAN
- interfaces config file:
auto marcadores iface marcadores inet manual bridge_ports eth7.112 bridge_fd 9 bridge_hello 2 bridge_maxage 12 bridge_stp off pre-up vconfig add eth7 112 post-down vconfig rem eth7.112
multilink trunk (bonding)
ethA ---: + ethB ---:----bond0 + ethC ---:
multilink trunk (bonding)
- configuring bonding manually:
modprobe bonding mode=balance-alb miimon=100
ifenslave bond0 eth0
ifenslave bond0 eth1
multilink trunk (bonding)
- interfaces config file:
auto bond0 iface bond0 inet manual slaves eth2 eth3 bond_mode 802.3ad bond_xmit_hash_policy layer3+4 bond_lacp_rate fast bond_miimon 100 bond_downdelay 200 bond_updelay 200
multilink trunk (bonding)
root@kvm0:~# cat /proc/net/bonding/bond0 Bonding Mode: IEEE 802.3ad Dynamic link aggregation Transmit Hash Policy: layer3+4 (1) MII Status: up MII Polling Interval (ms): 100 Up Delay (ms): 200 Down Delay (ms): 200 802.3ad info LACP rate: fast Aggregator selection policy (ad_select): stable Active Aggregator Info: Aggregator ID: 2 Number of ports: 2 Actor Key: 17 Partner Key: 12289 Partner Mac Address: 5c:e2:86:19:7c:01
bridge + VLAN + multilink trunk
ethA ---: + ethB ---:---bond0--bond0.vlanX--- Brigde --- vif1 + : :-- vif2 ethC ---: : :-- vif3 : :-- vif4 : :-- vifN : :-bond0.vlanY--- Brigde --- vif1 :-- vif2 :-- vif3 :-- vif4 :-- vifN
bridge + VLAN + multilink trunk
- interfaces config file:
auto redegestao iface redegestao inet static bridge_ports bond0.97 bridge_fd 9 bridge_hello 2 bridge_maxage 12 bridge_stp off pre-up vconfig add bond0 97 post-down vconfig rem bond0.97
bridge + VLAN + multilink trunk + IP
- interfaces config file:
auto redegestao iface redegestao inet static bridge_ports bond0.97 bridge_fd 9 bridge_hello 2 bridge_maxage 12 bridge_stp off pre-up vconfig add bond0 97 post-down vconfig rem bond0.97 address 172.16.20.123 netmask 255.255.255.0 network 172.16.20.0 broadcast 172.16.20.255
ipvs
VIP:port ---- IPVS ---- Real Server 1 :--- Real Server 2 :--- Real Server N
ipvs :: scheduling-method
- rr - Round Robin
- wrr - Weighted Round Robin
- lc - Least-Connection
- wlc - Weighted Least-Connection
- lblc - Locality-Based Least-Connection
- lblcr - Locality-Based Least-Connection with Replication
- dh - Destination Hashing
- sh - Source Hashing
- sed - Shortest Expected Delay
- nq - Never Queue
ipvs
- configuring ipvs manually:
ipvsadm -A -t 193.136.28.130:143 ipvsadm -a -t 193.136.28.130:143 -r 172.16.20.179:143 -m ipvsadm -a -t 193.136.28.130:143 -r 172.16.20.180:143 -m ipvsadm -a -t 193.136.28.130:143 -r 172.16.20.181:143 -m
ipvs
- /etc/ldirectord.conf
# Virtual Service for IMAP virtual=193.136.28.130:143 real=172.16.20.179:143 masq real=172.16.20.180:143 masq real=172.16.20.181:143 masq service=imap scheduler=rr #persistent=600 protocol=tcp checktype=negotiate
- network address translation:
iptables -t nat -A POSTROUTING -o eth0 -s \ 172.16.20.179 -j SNAT --to-source 193.136.28.130
ipvs
IP Virtual Server version 1.2.1 (size=4096) Prot LocalAddress:Port Scheduler Flags -> RemoteAddress:Port Forward Weight ActiveConn InActConn TCP 193.136.28.130:25 rr -> 172.16.20.179:25 Masq 1 0 0 -> 172.16.20.180:25 Masq 1 0 0 -> 172.16.20.181:25 Masq 1 0 0 TCP 193.136.28.130:143 rr persistent 300 -> 172.16.20.179:143 Masq 1 1 0 -> 172.16.20.180:143 Masq 1 0 0 -> 172.16.20.181:143 Masq 1 0 0
stunnel
IP:PORT ---- Stunnel---- IP:PORT
193.136.28.130:993 ---- Stunnel---- 193.136.28.130:143
stunnel -p imap.pem -d 193.136.28.130:993 -r 193.136.28.130:143
stunnel
cert=/etc/ssl/certs/10279593.crt CAfile=/etc/ssl/certs/10279593.ca-bundle key=/etc/ssl/certs/imap.key sslVersion = all chroot = /var/lib/stunnel4/ setuid = stunnel4 setgid = stunnel4 pid = /imap.pid socket = l:TCP_NODELAY=1 socket = r:TCP_NODELAY=1 [imaps] accept = 193.136.28.130:993 connect = 193.136.28.130:143
big picture
ethA ethB ethC : : : -----+------ : :- vifX4 (RSN) bond0 :- vifX3 (RS2) : :- vifX2 (RS1) .-------:--bond0.vlanX-- Brigde -- vifX1----. : : : : : /-stunnel--VIP:port--IPVS--\: : :\-stunnel--VIP:port--IPVS--/ : : : :--------------------. : : :-bond0.vlanY--- Brigde -- vifY1 ---: :- vifY2 -- (VM2) :- vifY3 -- (VM2) :- vifY4 -- (VM2) :- vifYN -- (VMN)