<div dir="ltr"><div><div>Hi,<br></div>Thanks the answers of all. This reply is also to the answer of Anrey Repin "<img class="gmail-ajz" id="gmail-:115" src="https://mail.google.com/mail/u/1/images/cleardot.gif" alt="">How
 about adding two NICs to the container:  one for private networking 
(via lxdbridge) and one for public networking (via macvlan)?".<br><br></div>I am not familar with ipv6, but, at least, I found a way to resovle the question, by the hint of Anry Repin, to create another NIC in the container. But not macvlan, the another is <span class="gmail-"> "host-shared bridge" described in my first post. So, the another NIC in the container linked to the host-shared bridge in host, this NIC in the container attaching a ipv6 address can be public accessiable.<br></span><div><div><div><div class="gmail_extra"><br></div><div class="gmail_extra">The macvlan didn't work for me.<br><br></div><div class="gmail_extra">And, just setup a ipv6 address in container without modifing other didn't work for me yet.<br><br></div><div class="gmail_extra">The only way the container ipv6 communicating with public is creating a bridge in host, container can link bridge, bridge can reach public internet.<br><br></div><div class="gmail_extra">And,if bridge is host-shared, then container can access public internet without further setup. <br><br>If bridge is "<span class="gmail-">independent bridge" described in my first post, then I must use ipv6 forward to communicate bridge with main NIC in host. This if my "NAT ipv6". I don't know if there is "NAT" concept in ipv6, but it works in this way, just like ipv4 nat.<br><br></span></div><div class="gmail_extra"><span class="gmail-">I decribe my 'NAT ipv6" more detail.<br><br></span></div><div class="gmail_extra"><span class="gmail-">For example:<br></span></div><div class="gmail_extra"><span class="gmail-">Main NIC in host: 8:8:8:8::1/64<br></span> "<span class="gmail-">independent bridge" br0 in host: 8:8:8:8:1:1:1:10/112<br></span></div><div class="gmail_extra"><span class="gmail-">NIC in container: 8:8:8:8:1:1:1:20/112<br>Set "net.ipv6.conf.all.forwarding=1" in /etc/sysctl.conf in host, then use ip6tables to forward packet:<br>ip6tables -t nat -A PREROUTING -i br0 -p tcp -m tcp --dport 2222 -j DNAT --to-destination 8:8:8:8:1:1:1:20<br>ip6tables -t nat -A POSTROUTING -s 8:8:8:8:1:1:1:0/112 ! -d 8:8:8:8:1:1:1:0/112 -j MASQUERADE<br><br></span></div><div class="gmail_extra"><span class="gmail-">In any way, the question is resolved, if there are not further needs, I won't spend time on the detail about ipv6 or something else. If anyone is interested in this question, you can try youself, my test platform is Vultr.com. <br><br></span></div><div class="gmail_extra"><span class="gmail-">Thanks again.<br></span></div><div class="gmail_extra"><span class="gmail-"><br></span></div><div class="gmail_extra"><div class="gmail_quote">On 2 June 2017 at 22:46, Andrey Repin <span dir="ltr"><<a href="mailto:anrdaemon@yandex.ru" target="_blank">anrdaemon@yandex.ru</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Greetings, littlebat!<br>
<span class="gmail-"><br>
> I have studied my question several days and searched many online resource,<br>
> but didn't resolve this. The detail is too long, I describe a brief version below:<br>
<br>
> I have a debian 9 host server installed lxc2 server, the host server has<br>
> only one pulic ipv4 address, suppose it is 8.8.8.8, and a public /64 subnet<br>
> ipv6 pool, suppose it is 8:8:8:8::/64, and the eth0 of host ipv6 is: 8:8:8:8::1/64.<br>
<br>
> My goal is building the lxc unprivileged container, with a private nat ipv4<br>
> address, suppose it is 10.1.0.10, so I use ip forward to access container<br>
> from internet using public ipv4 plus port (suppose 8.8.8.8:2222forward<br>
> to/from <a href="http://10.1.0.10:22" rel="noreferrer" target="_blank">10.1.0.10:22</a>). And, at same time, I want assign container a public<br>
> ipv6 address or ipv6 subnet( /112, can it be public accessed? ), so I can<br>
> access container from internet using public ipv6(suppose 8:8:8:8::10/64 port<br>
> 22 or 8:8:8:8::10/112 port 22 ? ). For simplifing question, suppose only<br>
> assign a public ipv6 (not a public ipv6 subnet) address to the container.<br>
<br>
> Util today, I can only setup both private nat ipv4(10.1.0.10) and private<br>
> nat ipv6(8:8:8:8::10/112)<br>
<br>
</span>There's no such thing as NAT in IPv6.<br>
<span class="gmail-"><br>
> for the container, open ipv4 and ipv6 forward in /etc/sysctl.conf, and using<br>
> iptables and ip6tables to forward public traffic to or from<br>
> container(<a href="http://8.8.8.8:2222" rel="noreferrer" target="_blank">8.8.8.8:2222</a><-><a href="http://10.1.0.10:22" rel="noreferrer" target="_blank">10.1.<wbr>0.10:22</a>,  8:8:8:8::1/64 port 2222 <-><br>
> 8:8:8::10/112 port 22). This is done by create a "2. independent bridge"(a<br>
> different bridge out of thin air and link your containers together<br>
> on this bridge, but use forwarding to get it out on the internet or to get<br>
> traffic into it. debian wiki: <a href="https://wiki.debian.org/LXC/SimpleBridge" rel="noreferrer" target="_blank">https://wiki.debian.org/LXC/<wbr>SimpleBridge</a>).<br>
> reference: LXC host featuring IPv6 connectivity<br>
> <a href="https://blog.cepharum.de/en/post/lxc-host-featuring-ipv6-connectivity.html" rel="noreferrer" target="_blank">https://blog.cepharum.de/en/<wbr>post/lxc-host-featuring-ipv6-<wbr>connectivity.html</a><br>
<br>
> And, I can create a "1. host-shared bridge"(a bridge out of your main<br>
> network interface which will hold both the host's IP and the container's IP<br>
> addresses. debian wiki: <a href="https://wiki.debian.org/LXC/SimpleBridge" rel="noreferrer" target="_blank">https://wiki.debian.org/LXC/<wbr>SimpleBridge</a>). Then, I<br>
> can assign a public ipv6 address to the container. But, I can't assign a<br>
> private nat ipv4 address to the container now. So, it is no way to public<br>
> access container using ipv4 address(because the sole public ipv4 address only avalable on host network card).<br>
<br>
> My question is:<br>
> 1, Can I setup a private nat ipv4 and a public ipv6 address at same time for a lxc2 container?<br>
<br>
</span>Yes.<br>
<span class="gmail-"><br>
> 2, How to do it?<br>
<br>
</span>Just route IPv6 addresses to container.<br>
I.e. dedicate an IPv6 subnet to the containers on your bridge and just assign<br>
IPv6 addresses in any way you could.<br>
<span class="gmail-"><br>
> any idea or online resource link is welcome.<br>
<br>
</span>What you must understand is that IPv6 and IPv4 is a two separate IP stacks.<br>
Setup of one does not interfere with another, not in any way depend on it,<br>
unless YOU make it so.<br>
<span class="gmail-HOEnZb"><font color="#888888"><br>
<br>
--<br>
With best regards,<br>
Andrey Repin<br>
Friday, June 2, 2017 17:42:08<br>
<br>
Sorry for my terrible english...<br>
</font></span><div class="gmail-HOEnZb"><div class="gmail-h5">______________________________<wbr>_________________<br>
lxc-users mailing list<br>
<a href="mailto:lxc-users@lists.linuxcontainers.org">lxc-users@lists.<wbr>linuxcontainers.org</a><br>
<a href="http://lists.linuxcontainers.org/listinfo/lxc-users" rel="noreferrer" target="_blank">http://lists.linuxcontainers.<wbr>org/listinfo/lxc-users</a></div></div></blockquote></div><br></div></div></div></div></div>