diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,10 @@
 # Revision history for network-run
 
+## 0.3.0
+
+* Specifying IPv6Only
+  [#4](https://github.com/kazu-yamamoto/network-run/pull/4)
+
 ## 0.2.8
 
 * runTCPClient specifies AI_ADDRCONFIG.
diff --git a/Network/Run/Core.hs b/Network/Run/Core.hs
--- a/Network/Run/Core.hs
+++ b/Network/Run/Core.hs
@@ -10,6 +10,7 @@
 ) where
 
 import qualified Control.Exception as E
+import Control.Monad (when)
 import Network.Socket
 
 resolve
@@ -48,6 +49,9 @@
 openServerSocket :: AddrInfo -> IO Socket
 openServerSocket addr = E.bracketOnError (openSocket addr) close $ \sock -> do
     setSocketOption sock ReuseAddr 1
+#if !defined(openbsd_HOST_OS)
+    when (addrFamily addr == AF_INET6) $ setSocketOption sock IPv6Only 1
+#endif
     withFdSocket sock $ setCloseOnExecIfNeeded
     bind sock $ addrAddress addr
     return sock
diff --git a/network-run.cabal b/network-run.cabal
--- a/network-run.cabal
+++ b/network-run.cabal
@@ -1,5 +1,5 @@
 name:                network-run
-version:             0.2.8
+version:             0.3.0
 synopsis:            Simple network runner library
 description:         Simple functions to run network clients and servers.
 -- bug-reports:
