[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-users] Xen 3.4.2 networking help



Hi Again,

just a short step-by-step guide.

Am Dienstag, den 26.10.2010, 23:54 -0700 schrieb Alexander Zherdev:
> Pardon my long email below, I hope it will shed some light.
> 
> I've googled and tried various things but nothing seem to work. I have
> upgraded to 3.4.3 of Xen and the kernel had an update too.

so u had a lot of fun ;-)

> My brain is fried right now. The only thing that seems to work is
> bridged mode. In bridged mode, my DomU gets the DHCP from dnsmasq and
> it can then surf the web. But I can't get to it from outside. In route
> or nat mode, the DomU can't even get out. Below is a test in NAT mode
> of xend.

Dont use NAT - its just MASQUERADING! Communication from internet would
be only possible through portforwarding....

> Below I have a pretty verbose output of iptables, ip r, and ifconfig
> right after I boot the physical server, then after I start the DomU,
> and then after I apply the SNAT and DNAT settings (only ip r changes
> then).
> 
> I appreciate any help that you have.
> 
> -----------------------------
> 
> Kernel:  2.6.18-194.17.4.el5xen
> Xen: 3.4.3
> Source: www.gitco.de
> 
> /etc/xen/xend-config.sxp
>     (network-nat)
>     (vif-nat)

Please do the following.

- Disable default Firewall (only to get ur setup running)
# service iptables off


- Write down a ugly script, something like:

#!/bin/bash
# i used /27 since your public-net was /27 too
# 192.168.128.65 is dom0-IP
brctl addbr xen-privatelan
ip a a 192.168.128.65/27 dev xen-privatelan  
ifconfig xen-privatelan up
echo 1 > /proc/sys/net/ipv4/ip_forward

- and save it e.g. to 
/etc/xen/scripts/network-mynet

- make it executable
chmod +x /etc/xen/scripts/network-mynet


- change any kind of xen-networking-script to e.g.
...
(network-script network-mynet)
(vif-script vif-bridge)
.....



    ######## reboot ur dom0 #####################



After reboot setup your windows-box to use the bridge "xen-privatelan"

- change domU.cfg

...
vif = [ 'type=ioemu, bridge=xen-privatelan, mac=00:16:3e:00:01:02' ]
.....


- start ur domU
- setup nw-settings in domU (192.168.128.70/27 gw: 192.168.128.65)
                                                ^^^^  dom0-IP


- at this point u should be able to ping dom0 from ur domU!
  access to internet and from internet to domU should NOT work
  Otherwise triplecheck "brctl show", ip r s, and friends...

- Setup "1:1-NAT"

  iptables -t nat -A PREROUTING -d XXX.XXX.XXX.70 -j DNAT
--to-destination 192.168.128.70
  
  iptables -t nat -A POSTROUTING -s 192.168.128.70 -j SNAT --to-source
XXX.XXX.XXX.70

--> domU has internal IP 192.168.128.70 and is reachable via externalIP
XXX.XXX.XXX.70

--> domU should be able to ping the "internet"
--> domU should be available from "internet" trough XXX.XXX.XXX.70

Am i right? :-)

cu,

thomas

> Attempted the SNAT/DNAT configuration using this:
> 
> iptables -t nat -A PREROUTING -i eth0 -d XXX.XXX.XXX.70 -j DNAT
> --to-destination 192.168.122.150
> iptables -t nat -A POSTROUTING -o eth0 -s 192.168.122.150 -j SNAT
> --to-source XXX.XXX.XXX.70
> route add -host XXX.XXX.XXX.70 vif1.0
> arp -Ds XXX.XXX.XXX.70 vif1.0
> -> SIOCSARP: Invalid argument
>     
> Windows Configuration
>     DHCP
>     IP 192.168.122.150
>     MS 255.255.255.0
>     GW 192.168.122.1
>     
> CLEAN BOOT ------------------------------------
>     
> ifconfig
>     eth0      Link encap:Ethernet  HWaddr 00:25:90:1B:E6:7E
>               inet addr:XXX.XXX.XXX.67  Bcast:XXX.XXX.XXX.95
> Mask:255.255.255.224
>               inet6 addr: fe80::225:90ff:fe1b:e67e/64 Scope:Link
>               UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
> 
>     eth0:1    Link encap:Ethernet  HWaddr 00:25:90:1B:E6:7E
>               inet addr:XXX.XXX.XXX.70  Bcast:XXX.XXX.XXX.95
> Mask:255.255.255.224
>               UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
> 
>     lo        Link encap:Local Loopback
>               inet addr:127.0.0.1  Mask:255.0.0.0
>               inet6 addr: ::1/128 Scope:Host
>               UP LOOPBACK RUNNING  MTU:16436  Metric:1
> 
>     peth0     Link encap:Ethernet  HWaddr 00:25:90:1B:E6:7E
>               inet6 addr: fe80::225:90ff:fe1b:e67e/64 Scope:Link
>               UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
>               Memory:fafe0000-fb000000
> 
>     virbr0    Link encap:Ethernet  HWaddr 00:00:00:00:00:00
>               inet addr:192.168.122.1  Bcast:192.168.122.255
> Mask:255.255.255.0
>               inet6 addr: fe80::200:ff:fe00:0/64 Scope:Link
>               UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
> 
> 
> iptables -L
>     Chain INPUT (policy ACCEPT)
>     target     prot opt source               destination
>     ACCEPT     udp  --  anywhere             anywhere            udp
> dpt:domain
>     ACCEPT     tcp  --  anywhere             anywhere            tcp
> dpt:domain
>     ACCEPT     udp  --  anywhere             anywhere            udp
> dpt:bootps
>     ACCEPT     tcp  --  anywhere             anywhere            tcp
> dpt:bootps
> 
>     Chain FORWARD (policy ACCEPT)
>     target     prot opt source               destination
>     ACCEPT     all  --  anywhere             192.168.122.0/24    state
> RELATED,ESTABLISHED
>     ACCEPT     all  --  192.168.122.0/24     anywhere
>     ACCEPT     all  --  anywhere             anywhere
>     REJECT     all  --  anywhere             anywhere
> reject-with icmp-port-unreachable
>     REJECT     all  --  anywhere             anywhere
> reject-with icmp-port-unreachable
> 
>     Chain OUTPUT (policy ACCEPT)
>     target     prot opt source               destination
> 
> ip r
>     XXX.XXX.XXX.64/27 dev eth0  proto kernel  scope link  src
> XXX.XXX.XXX.67
>     192.168.122.0/24 dev virbr0  proto kernel  scope link  src
> 192.168.122.1
>     169.254.0.0/16 dev eth0  scope link
>     default via XXX.XXX.XXX.65 dev eth0
> 
> /etc/dnsmasq.conf
>     dhcp-range=192.168.122.10,192.168.122.250,255.255.255.0,12h
>     dhcp-host=00:16:3e:00:01:02,192.168.122.150
> 
> /vm/cfg/vm-000002/vm-000002.xen
>     import os, re
>     arch = os.uname()[4]
>     if re.search('64', arch):
>         arch_libdir = 'lib64'
>     else:
>         arch_libdir = 'lib'
> 
>     kernel = "/usr/lib/xen/boot/hvmloader"
>     builder='hvm'
>     memory = 8192
>     name = "vm-app-1a"
>     uuid = "C37B45AE-62E3-4034-BAD6-D0D3E127333E"
> 
>     vcpus = 2
>     pae = 1
>     acpi = 1
>     apic = 1
>     cpus = "2-7"
>     vif = [ 'type=ioemu, bridge=virbr0, mac=00:16:3e:00:01:02,
> ip=192.168.122.150' ]
> 
>     disk = [ 'phy:/dev/vg00/vm-000002-0,hda,w' ]
> 
>     on_poweroff = 'destroy'
>     on_reboot = 'restart'
>     on_crash = 'restart'
> 
>     device_model = '/usr/' + arch_libdir + '/xen/bin/qemu-dm'
>     boot = "c"
> 
>     sdl=0
>     vnc=1
>     vnclisten="XXX.XXX.XXX.67"
>     vncpasswd='vnc'
>     stdvga=0
>     serial='pty'
>     usbdevice='tablet'
> 
>     
> 
> AFTER VM CREATED ------------------------------------ 
> 
> 
> 
> 
> ifconfig
>     eth0      Link encap:Ethernet  HWaddr 00:25:90:1B:E6:7E
>               inet addr:XXX.XXX.XXX.67  Bcast:XXX.XXX.XXX.95
> Mask:255.255.255.224
>               inet6 addr: fe80::225:90ff:fe1b:e67e/64 Scope:Link
>               UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
> 
>     eth0:1    Link encap:Ethernet  HWaddr 00:25:90:1B:E6:7E
>               inet addr:XXX.XXX.XXX.70  Bcast:XXX.XXX.XXX.95
> Mask:255.255.255.224
>               UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
> 
>     lo        Link encap:Local Loopback
>               inet addr:127.0.0.1  Mask:255.0.0.0
>               inet6 addr: ::1/128 Scope:Host
>               UP LOOPBACK RUNNING  MTU:16436  Metric:1
> 
>     peth0     Link encap:Ethernet  HWaddr 00:25:90:1B:E6:7E
>               inet6 addr: fe80::225:90ff:fe1b:e67e/64 Scope:Link
>               UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
>               Memory:fafe0000-fb000000
> 
>     tap1.0    Link encap:Ethernet  HWaddr 2E:59:30:A2:97:17
>               inet6 addr: fe80::2c59:30ff:fea2:9717/64 Scope:Link
>               UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
> 
>     vif1.0    Link encap:Ethernet  HWaddr FE:FF:FF:FF:FF:FF
>               inet addr:192.168.122.21  Bcast:0.0.0.0
> Mask:255.255.255.255
>               UP BROADCAST MULTICAST  MTU:1500  Metric:1
> 
>     virbr0    Link encap:Ethernet  HWaddr 2E:59:30:A2:97:17
>               inet addr:192.168.122.1  Bcast:192.168.122.255
> Mask:255.255.255.0
>               inet6 addr: fe80::200:ff:fe00:0/64 Scope:Link
>               UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
> 
> iptables -L
>     Chain INPUT (policy ACCEPT)
>     target     prot opt source               destination
>     ACCEPT     udp  --  anywhere             anywhere            udp
> dpt:domain
>     ACCEPT     tcp  --  anywhere             anywhere            tcp
> dpt:domain
>     ACCEPT     udp  --  anywhere             anywhere            udp
> dpt:bootps
>     ACCEPT     tcp  --  anywhere             anywhere            tcp
> dpt:bootps
> 
>     Chain FORWARD (policy ACCEPT)
>     target     prot opt source               destination
>     ACCEPT     all  --  anywhere             anywhere            state
> RELATED,ESTABLISHED PHYSDEV match --physdev-out vif1.0
>     ACCEPT     udp  --  anywhere             anywhere
> PHYSDEV match --physdev-in vif1.0 udp spt:bootpc dpt:bootps
>     ACCEPT     all  --  anywhere             anywhere            state
> RELATED,ESTABLISHED PHYSDEV match --physdev-out vif1.0
>     ACCEPT     all  --  192.168.122.150      anywhere
> PHYSDEV match --physdev-in vif1.0
>     ACCEPT     all  --  anywhere             192.168.122.0/24    state
> RELATED,ESTABLISHED
>     ACCEPT     all  --  192.168.122.0/24     anywhere
>     ACCEPT     all  --  anywhere             anywhere
>     REJECT     all  --  anywhere             anywhere
> reject-with icmp-port-unreachable
>     REJECT     all  --  anywhere             anywhere
> reject-with icmp-port-unreachable
> 
>     Chain OUTPUT (policy ACCEPT)
>     target     prot opt source               destination
> 
> ip r
>     192.168.122.150 dev vif1.0  scope link  src 192.168.122.21
>     XXX.XXX.XXX.64/27 dev eth0  proto kernel  scope link  src
> XXX.XXX.XXX.67
>     192.168.122.0/24 dev virbr0  proto kernel  scope link  src
> 192.168.122.1
>     169.254.0.0/16 dev eth0  scope link
>     default via XXX.XXX.XXX.65 dev eth0
> 
>     
> AFTER SNAT/DNAT -----------------------------
>     
>     192.168.122.150 dev vif1.0  scope link  src 192.168.122.21
>     XXX.XXX.XXX.70 dev vif1.0  scope link
>     XXX.XXX.XXX.64/27 dev eth0  proto kernel  scope link  src
> XXX.XXX.XXX.67
>     192.168.122.0/24 dev virbr0  proto kernel  scope link  src
> 192.168.122.1
>     169.254.0.0/16 dev eth0  scope link
>     default via XXX.XXX.XXX.65 dev eth0
> 
> 
> 
>  
> Alexander Zherdev
> azherdev@xxxxxxxxx
> 
> 
> 
> 
> ______________________________________________________________________
> From: Thomas Halinka <lists@xxxxxxxxx>
> To: Alexander Zherdev <azherdev@xxxxxxxxx>
> Cc: xen-users@xxxxxxxxxxxxxxxxxxx
> Sent: Tue, October 26, 2010 9:59:06 AM
> Subject: Re: [Xen-users] Xen 3.4.2 networking help
> 
> Hi Alexander,
> 
> Am Dienstag, den 26.10.2010, 09:44 -0700 schrieb Alexander Zherdev:
> > (If this is a double post, I apologize, my email client crashed when
> I
> > first sent it)
> > 
> > I need some help to configure a secure network on my Xen server. I
> > have been looking online and it seems a I need a routed network. But
> I
> > am having a terrible time implementing it.
> > 
> > My setup:
> > 
> > Xen 3.4.2
> > CentOS 5.5 Dom0
> > 1 NIC (eth0)
> >  All guests will be HVM
> > 
> > What I want to do is something similar to a firewall and port
> > forwarding.
> > 
> > e.g.
> > 
> > DomU.1 has DHCP address of 10.0.0.50 (DHCP matches MAC to assign
> same
> > address and simplifies in creating templates)
> > DomU.2 has DHCP address of 10.0.0.60 (DHCP matches MAC to assign
> same
> > address and simplifies in creating templates)
> > etc.
> > 
> > Dom0 eht0 has public IP of 92.82.72.100 that forwards port 22 + 80 +
> > 443 to 10.0.0.50
> > Dom0 eht0 has public IP of 92.82.72.101 that forwards port 21 + 22 +
> > 80 + 443 to 10.0.0.60
> > etc.
> > 
> > Ideally, the main network card will have a bunch of public IPs that
> > will individually route to internal DomU systems that have private
> IP
> > addresses.
> 
> So the terms your are searching are SNAT and DNAT. i would't recommend
> pure Portforwarding, since it seems to much fiddling, which each
> individual port.
> 
> Use SNAT and DNAT in Dom0 and protect your domU by simple
> Port-Filter...
> 
> > 
> > I also need to prevent a DomU from: a) stealing other IPs 
> 
> this is simple:
> 
> vif = [ 'ip=10.0.0.50,mac=AA:BB:CC:DD:EE:FF' ]
> 
> > and b) communicating with other private systems unless Dom0 sais ok.
> 
> 1) Each domU has its own Bridge
> or
> 2) 10.0.0.50/32 and only ONE Route to your GW aka Dom0
> 
> > Right now, I do not need to have DomU on different physical servers
> > sharing same network - what open vswitch provides as I understand it
> -
> > that's phase 2. But of course if it provides what I need above
> easily,
> > then I'm for it.
> 
> No Need for openvSwitch - can be easily accomplished with simple
> Unix-Tools ;-)
> 
> > 
> > What do I need? I know how to accomplish most of it using real
> > hardware with firewalls, vlans, etc.
> 
> Just ask aunt google for help, e.g.
> http://www.adamsinfo.com/full-nat-dnat-and-snat-aka-11-nat-1-to-1-nat/
> 
> seems sufficient for your needs.
> 
> > 
> > I am fairly new to Xen so please, if possible, provide examples.
> >  
> > Alexander Zherdev
> > azherdev@xxxxxxxxx
> 
> hth,
> 
> 
> thomas
> 
> 
> > _______________________________________________
> > Xen-users mailing list
> > Xen-users@xxxxxxxxxxxxxxxxxxx
> > http://lists.xensource.com/xen-users
> 
> 
> 
> _______________________________________________
> Xen-users mailing list
> Xen-users@xxxxxxxxxxxxxxxxxxx
> http://lists.xensource.com/xen-users



_______________________________________________
Xen-users mailing list
Xen-users@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-users


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.