首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NetworkManager、OpenVPN和浮子

NetworkManager、OpenVPN和浮子
EN

Ask Ubuntu用户
提问于 2011-06-21 08:41:28
回答 1查看 994关注 0票数 1

我正在尝试使用OpenVPN连接到一个工作网络。不幸的是,工作网络落后于NAT,这意味着我必须使用float选项来使其工作。

显然,NetworkManager不支持浮点选项--在配置选项中似乎没有指定它的方法。

我不想失去NetworkManager,因为它提供了一种连接到随机无线网络的非常方便的方式;但是我必须使用OpenVPN。我尝试使用OpenVPN直接使用一个原始的OpenVPN配置文件,这正确地设置了连接,但现在它与NetworkManager进行了可怕的交互,所以像DNS和路由这样的事情都搞砸了。

有人知道如何让NetworkManager支持浮点选项吗?

EN

回答 1

Ask Ubuntu用户

发布于 2012-03-06 07:45:46

根据一个Ubuntu论坛线程,有一个补丁添加到ppa的网络管理器,但它不再提供。

但是,该页列出了可以尝试的下列代码。

代码语言:javascript
复制
--- network-manager-openvpn-0.7.1~20090213+bzr14.orig/properties/auth-helpers.c
+++ network-manager-openvpn-0.7.1~20090213+bzr14/properties/auth-helpers.c
@@ -718,6 +718,7 @@
 static const char *advanced_keys[] = {
    NM_OPENVPN_KEY_PORT,
    NM_OPENVPN_KEY_COMP_LZO,
+   NM_OPENVPN_KEY_FLOAT,
    NM_OPENVPN_KEY_TAP_DEV,
    NM_OPENVPN_KEY_PROTO_TCP,
    NM_OPENVPN_KEY_CIPHER,
@@ -1005,6 +1006,13 @@
        gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (widget), TRUE);
    }

+   value = g_hash_table_lookup (hash, NM_OPENVPN_KEY_FLOAT);
+   if (value && !strcmp (value, "yes")) {
+       widget = glade_xml_get_widget (xml, "float_checkbutton");
+       gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (widget), TRUE);
+   }
+
+
    value = g_hash_table_lookup (hash, NM_OPENVPN_KEY_PROTO_TCP);
    if (value && !strcmp (value, "yes")) {
        widget = glade_xml_get_widget (xml, "tcp_checkbutton");
@@ -1112,6 +1120,10 @@
    if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (widget)))
        g_hash_table_insert (hash, g_strdup (NM_OPENVPN_KEY_COMP_LZO), g_strdup ("yes"));

+   widget = glade_xml_get_widget (xml, "float_checkbutton");
+   if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (widget)))
+       g_hash_table_insert (hash, g_strdup (NM_OPENVPN_KEY_FLOAT), g_strdup ("yes"));
+
    widget = glade_xml_get_widget (xml, "tcp_checkbutton");
    if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (widget)))
        g_hash_table_insert (hash, g_strdup (NM_OPENVPN_KEY_PROTO_TCP), g_strdup ("yes"));
--- network-manager-openvpn-0.7.1~20090213+bzr14.orig/properties/nm-openvpn-dialog.glade
+++ network-manager-openvpn-0.7.1~20090213+bzr14/properties/nm-openvpn-dialog.glade
@@ -935,6 +935,20 @@
                     <property name="position">3</property>
                   </packing>
                 </child>
+                <child>
+                  <widget class="GtkCheckButton" id="float_checkbutton">
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <property name="label" translatable="no">Use the _Float option</property>
+                    <property name="use_underline">True</property>
+                    <property name="response_id">0</property>
+                    <property name="draw_indicator">True</property>
+                  </widget>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="position">3</property>
+                  </packing>
+                </child>
               </widget>
             </child>
             <child>
--- network-manager-openvpn-0.7.1~20090213+bzr14.orig/src/nm-openvpn-service.h
+++ network-manager-openvpn-0.7.1~20090213+bzr14/src/nm-openvpn-service.h
@@ -43,6 +43,7 @@
 #define NM_OPENVPN_KEY_CERT "cert"
 #define NM_OPENVPN_KEY_CIPHER "cipher"
 #define NM_OPENVPN_KEY_COMP_LZO "comp-lzo"
+#define NM_OPENVPN_KEY_FLOAT "float"
 #define NM_OPENVPN_KEY_CONNECTION_TYPE "connection-type"
 #define NM_OPENVPN_KEY_TAP_DEV "tap-dev"
 #define NM_OPENVPN_KEY_KEY "key"
--- network-manager-openvpn-0.7.1~20090213+bzr14.orig/src/nm-openvpn-service.c
+++ network-manager-openvpn-0.7.1~20090213+bzr14/src/nm-openvpn-service.c
@@ -88,6 +88,7 @@
    { NM_OPENVPN_KEY_CERT,                 G_TYPE_STRING, 0, 0, FALSE },
    { NM_OPENVPN_KEY_CIPHER,               G_TYPE_STRING, 0, 0, FALSE },
    { NM_OPENVPN_KEY_COMP_LZO,             G_TYPE_BOOLEAN, 0, 0, FALSE },
+   { NM_OPENVPN_KEY_FLOAT,                G_TYPE_BOOLEAN, 0, 0, FALSE },
    { NM_OPENVPN_KEY_CONNECTION_TYPE,      G_TYPE_STRING, 0, 0, FALSE },
    { NM_OPENVPN_KEY_TAP_DEV,              G_TYPE_BOOLEAN, 0, 0, FALSE },
    { NM_OPENVPN_KEY_KEY,                  G_TYPE_STRING, 0, 0, FALSE },
@@ -640,6 +641,10 @@
    if (tmp && !strcmp (tmp, "yes"))
        add_openvpn_arg (args, "--comp-lzo");

+   tmp = nm_setting_vpn_get_data_item (s_vpn, NM_OPENVPN_KEY_FLOAT);
+   if (tmp && !strcmp (tmp, "yes"))
+       add_openvpn_arg (args, "--float");
+
    add_openvpn_arg (args, "--nobind");

    /* Device, either tun or tap */

要将此修补程序应用于当前网络管理器-openvpn插件的源代码,如下所示:

代码语言:javascript
复制
mkdir ~/build-tmp
cd ~/build-tmp
apt-get source network-manager-openvpn
cd ./network-manager-openvpn*
wget http://onemyndseye.doesntexist.com/onemyndseye-ppa/patches/nm-advoptions-float.patch -O ./debian/patches/nm-advoptions-float.patch
echo "nm-advoptions-float.patch" >>./debian/patches/series
sudo apt-get build-dep network-mananger-openvpn
sudo apt-get install libglade2-dev devscripts build-essential
sudo dpkg-buildpackage

祝好运。

票数 2
EN
页面原文内容由Ask Ubuntu提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://askubuntu.com/questions/49808

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档