[lxc-users] Need help with static IP address -- Simplest use case.

Michael Johnson johnson at cognitech-ut.com
Fri Jun 9 21:13:52 UTC 2017


Hi All.

I'm utterly failing to configuring a simple static IP address for a
single container.

Here is the use case:
Host server running Gentoo, static IP address is: 192.168.0.35
Gentoo container with static IP address of 192.168.0.36

I'm needing some general instructions -- not Ubuntu specific.

I'm passing a kernel parameter so that old interface naming is used,
i.e., my host nic is called eth0.

1) How should the network be configured on the host? Is a bridge
required? Are 2 NICs required? Should the interface be configured as
eth0 or br0 or both? Multiple IP addresses for eth0? Multi addresses
assigned to br0? Should my bridge, if I need one, be called lxdbr0?

2) What configuration should be performed using the lxc command line?
That seems to be a convenient way to get the entries in iptables. I
assume those are needed. Do I need entries in the container's iptables?

3) How should the network be configured within the container? Should the
container interface be a bridge: br0, lxdbr0, or simply eth0? I've found
the only way to get a static IP address to show up in the output of 'lxc
list' is to configure it inside the container, i.e., by commenting out
dhcp and adding static IP entries for eth0 (container) IP address,
default route, and dns servers.

4) Is openvswitch required, is it a dependency? What about dhcp? Is dhcp
a requirement for using static IP addresses? Sounds like a silly
question but I've seen discussions that suggest dhcp may be a
requirement under all circumstances.

Here is an example of what I've tried:

Host:

ip -4 route show:
default via 192.168.0.1 dev eth0  metric 3
192.168.0.0/24 dev eth0  proto kernel  scope link  src 192.168.0.35


ip -4 addr show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN
group default qlen 1
    inet 127.0.0.1/8 brd 127.255.255.255 scope host lo
       valid_lft forever preferred_lft forever
3: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP
group default qlen 1000
    inet 192.168.0.35/24 brd 192.168.0.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet 192.168.0.36/24 brd 192.168.0.255 scope global secondary eth0
       valid_lft forever preferred_lft forever

(Note this time I have 2 ip addresses on the host's eth0. I've tried
with just one as well. I've also tried with br0 instead of eth0, and so on.)

lxc network list:
+------+----------+---------+---------+
| NAME |   TYPE   | MANAGED | USED BY |
+------+----------+---------+---------+
| eth0 | physical | NO      | 0       |
+------+----------+---------+---------+
| eth1 | physical | NO      | 0       |
+------+----------+---------+---------+

lxc network create lxdbr0 ipv4.address=192.168.0.36/24 ipv4.nat=true
ipv4.dhcp=false ipv4.firewall=false ipv4.routing=true ipv6.address=none

lxc network list
                            +--------+----------+---------+---------+
|  NAME  |   TYPE   | MANAGED | USED BY |
+--------+----------+---------+---------+
| eth0   | physical | NO      | 0       |
+--------+----------+---------+---------+
| eth1   | physical | NO      | 0       |
+--------+----------+---------+---------+
| lxdbr0 | bridge   | YES     | 0       |
+--------+----------+---------+---------+

lxc network attach lxdbr0 gentoo default eth0

lxc list
+--------+---------+---------------------+------+------------+-----------+
|  NAME  |  STATE  |        IPV4         | IPV6 |    TYPE    | SNAPSHOTS |
+--------+---------+---------------------+------+------------+-----------+
| gentoo | RUNNING | 192.168.0.36 (eth0) |      | PERSISTENT | 0         |
+--------+---------+---------------------+------+------------+-----------+

lxc exec gentoo /bin/bash

In the container:

ip -4 route show
default via 192.168.0.1 dev eth0  metric 12
192.168.0.0/24 dev eth0  proto kernel  scope link  src 192.168.0.36

ip -4 addr show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN
group default qlen 1
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
12: eth0 at if13: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue
state UP group default qlen 1000 link-netnsid 0
    inet 192.168.0.36/24 brd 192.168.0.255 scope global eth0
       valid_lft forever preferred_lft forever

ping 192.168.0.11
PING 192.168.0.11 (192.168.0.11) 56(84) bytes of data.
>From 192.168.0.36 icmp_seq=1 Destination Host Unreachable
>From 192.168.0.36 icmp_seq=2 Destination Host Unreachable
>From 192.168.0.36 icmp_seq=3 Destination Host Unreachable

So... the container is not on the network.

The iptables are different on host vs. container. Does this matter?

Host:
iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination
ACCEPT     tcp  --  anywhere             anywhere             tcp
dpt:domain /* generated for LXD network lxdbr0 */
ACCEPT     udp  --  anywhere             anywhere             udp
dpt:domain /* generated for LXD network lxdbr0 */
ACCEPT     udp  --  anywhere             anywhere             udp
dpt:bootps /* generated for LXD network lxdbr0 */

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination
ACCEPT     tcp  --  anywhere             anywhere             tcp
spt:domain /* generated for LXD network lxdbr0 */
ACCEPT     udp  --  anywhere             anywhere             udp
spt:domain /* generated for LXD network lxdbr0 */
ACCEPT     udp  --  anywhere             anywhere             udp
spt:bootps /* generated for LXD network lxdbr0 */

Container:
iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

Where do I go from here? I'm running out of ideas. Greatly appreciate
any directions you can send me.
-Mike


More information about the lxc-users mailing list