User Tools

Site Tools


network_namespaces

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Last revision Both sides next revision
network_namespaces [2018/08/19 12:53]
rpjday [Andrew Lunn]
network_namespaces [2018/08/19 16:23]
rpjday [Willy Tarreau]
Line 123: Line 123:
 the same without involving namespaces. It's a bit hackish but sometimes the same without involving namespaces. It's a bit hackish but sometimes
 convenient. I can dig if someone is interested. convenient. I can dig if someone is interested.
 +</​code>​
 +
 +===== Roman Mashak =====
 +
 +<​code>​
 +I used this in the past to test dual-port NIC over loopback cable, you
 +will need to ajust the script:
 +
 +#!/bin/bash -x
 +
 +ip="​sudo $HOME/​bin/​ip"​
 +eth1=192.168.2.100
 +eth2=192.168.2.101
 +
 +dev1=eth1
 +dev2=eth2
 +dev1mac=00:​1b:​21:​9b:​24:​b4
 +dev2mac=00:​1b:​21:​9b:​24:​b5
 +
 +# fake client interfaces and addresses
 +dev=dummy0
 +dev_mac=00:​00:​00:​00:​00:​11
 +
 +# max fake clients supported for simulation
 +maxusers=3
 +
 +## Create dummy device
 +## Accepted parameters:
 +##    $1 - devname
 +##    $2 - devmac
 +##    $3 - subnet (e.g. 10.10.10)
 +##    $4 - max number of IP addresses to create on interface
 +setup_dummy()
 +{
 +#   sudo sh -c "echo 1 > /​proc/​sys/​net/​ipv4/​ip_forward"​
 +   # Enable tc hardware offload
 +#   ​ethtool -K $SGW_DEV hw-tc-offload on
 +
 +   $ip link add $1 address $2 type dummy
 +   $ip link set $1 up
 +   for i in `seq 1 $4`;
 +   do
 +      $ip addr add $3.$i/32 dev $1
 +   done
 +}
 +
 +## Delete dummy device
 +## Accepted parameters:
 +##    $1 - devname
 +delete_dummy()
 +{
 +  $ip link del $1 type dummy
 +}
 +
 +setup_network()
 +{
 +  # Send traffic eth3 <-> eth4 over loopback cable, where both interfaces
 +  # eth3 and eth4 are in the same subnet.
 +  #
 +  # We assume that NetworkManager is not running and eth3/eth4 are configured
 +  # via /​etc/​network/​interfaces:​
 +  #
 +  # 192.168.1.100/​32 dev eth3
 +  # 192.168.1.101/​32 dev eth4
 +  #
 +  # Specify source IP address when sending the traffic:
 +  # ping -I 192.168.1.100 192.168.1.101
 +  #
 +  #
 +  $ip neigh add $eth2 lladdr $dev2mac nud permanent dev $dev1
 +  $ip neigh add $eth1 lladdr $dev1mac nud permanent dev $dev2
 +  $ip route add table main $eth1 dev $dev2
 +  $ip route add table main $eth2 dev $dev1
 +  $ip rule add from all lookup local pref 100
 +  $ip rule del pref 0
 +  $ip rule add from $eth2 to $eth1 iif $dev1 lookup local pref 1
 +  $ip rule add from $eth1 to $eth2 iif $dev2 lookup local pref 2
 +  $ip rule add from $eth2 to $eth1 lookup main pref 3
 +  $ip rule add from $eth1 to $eth2 lookup main pref 4
 +
 +#  $ip rule add from 10.10.10.0/​24 to $eth1 iif $dev1 lookup local pref 5
 +#  $ip rule add from 10.10.10.0/​24 to $eth2 iif $dev2 lookup local pref 6
 +#  $ip rule add from $eth1 to 10.10.10.0/​24 iif $dev2 lookup local pref 7
 +#  $ip rule add from $eth2 to 10.10.10.0/​24 iif $dev1 lookup local pref 8
 +}
 +
 +restore_network()
 +{
 +  # FIX: hangs connections
 +  $ip rule flush
 +  $ip rule add priority 32767 lookup default
 +}
 +
 +#​delete_dummy dummy0
 +#​delete_dummy dummy1
 +
 +#​setup_dummy dummy0 00:​00:​00:​00:​00:​11 10.10.10 3
 +#​setup_dummy dummy1 00:​00:​00:​00:​00:​22 20.20.20 3
 +setup_network
 </​code>​ </​code>​
network_namespaces.txt ยท Last modified: 2018/08/19 16:24 by rpjday