diff --git a/ChangeLog b/ChangeLog
index 05825bf79d..9cead6ee55 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+Wed Nov 11 11:58:38 2015  Shugo Maeda  <shugo@ruby-lang.org>
+
+	* lib/net/ftp.rb (initialize): Connections are in passive mode per
+	  default now.  The default mode can be changed by
+	  Net::FTP.default_passive=.
+	 
+	* lib/net/ftp.rb (default_passive=, default_passive): new methods.
+
 Wed Nov 11 09:03:12 2015  Nobuyoshi Nakada  <nobu@ruby-lang.org>
 
 	* sprintf.c (rb_str_format): respect default value of a hash.  no
diff --git a/NEWS b/NEWS
index 075c214860..d71b913142 100644
--- a/NEWS
+++ b/NEWS
@@ -196,6 +196,10 @@ with all sufficient information, see the ChangeLog file.
 * Net::Telnet
   * Net::Telnet is extracted to net-telnet gem. It's unmaintain code.
 
+* Net::FTP
+  * Connections are in passive mode per default now.  The default mode can
+    be changed by Net::FTP.default_passive=.
+
 * Rake
   * Rake is removed from stdlib.
 
diff --git a/lib/net/ftp.rb b/lib/net/ftp.rb
index 879206c7dd..26bca1a54a 100644
--- a/lib/net/ftp.rb
+++ b/lib/net/ftp.rb
@@ -80,12 +80,13 @@ module Net
     FTP_PORT = 21
     CRLF = "\r\n"
     DEFAULT_BLOCKSIZE = BufferedIO::BUFSIZE
+    @@default_passive = true
     # :startdoc:
 
     # When +true+, transfers are performed in binary mode.  Default: +true+.
     attr_reader :binary
 
-    # When +true+, the connection is in passive mode.  Default: +false+.
+    # When +true+, the connection is in passive mode.  Default: +true+.
     attr_accessor :passive
 
     # When +true+, all traffic to and from the server is written
@@ -124,6 +125,18 @@ module Net
     # The server's last response.
     attr_reader :last_response
 
+    # When +true+, connections are in passive mode per default.
+    # Default: +true+.
+    def self.default_passive=(value)
+      @@default_passive = value
+    end
+
+    # When +true+, connections are in passive mode per default.
+    # Default: +true+.
+    def self.default_passive
+      @@default_passive
+    end
+
     #
     # A synonym for <tt>FTP.new</tt>, but with a mandatory host parameter.
     #
@@ -151,7 +164,7 @@ module Net
     def initialize(host = nil, user = nil, passwd = nil, acct = nil)
       super()
       @binary = true
-      @passive = false
+      @passive = @@default_passive
       @debug_mode = false
       @resume = false
       @sock = NullSocket.new
diff --git a/lib/open-uri.rb b/lib/open-uri.rb
index c63e5292aa..9e4a5e24c1 100644
--- a/lib/open-uri.rb
+++ b/lib/open-uri.rb
@@ -773,7 +773,7 @@ module URI
       # The access sequence is defined by RFC 1738
       ftp = Net::FTP.new
       ftp.connect(self.hostname, self.port)
-      ftp.passive = true if !options[:ftp_active_mode]
+      ftp.passive = !options[:ftp_active_mode]
       # todo: extract user/passwd from .netrc.
       user = 'anonymous'
       passwd = nil
diff --git a/test/net/ftp/test_ftp.rb b/test/net/ftp/test_ftp.rb
index a8d34c62de..3af00e7da9 100644
--- a/test/net/ftp/test_ftp.rb
+++ b/test/net/ftp/test_ftp.rb
@@ -11,9 +11,12 @@ class FTPTest < Test::Unit::TestCase
 
   def setup
     @thread = nil
+    @default_passive = Net::FTP.default_passive
+    Net::FTP.default_passive = false
   end
 
   def teardown
+    Net::FTP.default_passive = @default_passive
     if @thread
       @thread.join
     end