You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
106 lines
2.1 KiB
106 lines
2.1 KiB
title: How to enable IPv6 in applications |
|
--- |
|
pub_date: 2019-09-26 |
|
--- |
|
author: Team ungleich |
|
--- |
|
twitter_handle: ungleich |
|
--- |
|
abstract: |
|
New to IPv6? Wondering how to enable IPv6 in your favorite |
|
application? Then this blog entry is for you. |
|
--- |
|
body: |
|
|
|
In this blog article you'll find some hints on how to enable IPv6 for |
|
various applications. |
|
|
|
## nginx |
|
|
|
The web server nginx by default only listens to IPv4 if you use |
|
the standard `listen *:80;` directive. To enable IPv6, use |
|
`listen [::]:80;`. So for a dual stack server, your configuration |
|
could look as follows: |
|
|
|
|
|
``` |
|
server { |
|
listen *:80; |
|
listen [::]:80; |
|
|
|
... |
|
|
|
} |
|
|
|
``` |
|
|
|
## haproxy |
|
|
|
There are various interesting configuration options in HAProxy related |
|
to IPv6. Let's have a look at each of them! |
|
|
|
To enable IPv6 transport for the local logging, use `log [::1]` in the |
|
global section: |
|
|
|
``` |
|
global |
|
log [::1] local2 |
|
... |
|
|
|
``` |
|
|
|
If you want a frontend to listen to either IPv6 or IPv4 only, you can |
|
use the `ipv6@` prefix as follows: |
|
|
|
``` |
|
# IPv6 http frontend |
|
frontend httpipv6 |
|
bind ipv6@:80 |
|
mode http |
|
|
|
|
|
# IPv4 http frontend |
|
frontend httpipv4 |
|
bind ipv4@:80 |
|
mode http |
|
... |
|
|
|
``` |
|
|
|
If you want to connect to the backends only via a specific protocol, |
|
we can use the prefix syntax there as well: |
|
|
|
``` |
|
backend httpipv4 |
|
mode http |
|
use-server ungleich.ch if { hdr(host) -i ungleich.ch } |
|
server ungleich.ch ipv6@ungleich.ch |
|
... |
|
``` |
|
|
|
To proxy IPv6 requests to IPv4 only [twitter](https://twitter.com), you could |
|
use the following configuration: |
|
|
|
``` |
|
# ipv6 https |
|
frontend httpsipv6 |
|
bind ipv6@:443 |
|
mode tcp |
|
option tcplog |
|
tcp-request inspect-delay 5s |
|
tcp-request content accept if { req_ssl_hello_type 1 } |
|
default_backend httpsipv6 |
|
|
|
backend httpsipv6 |
|
mode tcp |
|
use-server twitter.com if { req_ssl_sni -i twitter.com } |
|
server twitter.com ipv4@twitter.com |
|
``` |
|
|
|
|
|
## Other applications |
|
|
|
If you know about other applications or want to enhance one of our |
|
configuration, we invite you to join the [IPv6 |
|
chat](https://IPv6.chat) or [write to us on |
|
Twitter](https://twitter.com/ungleich).
|
|
|