使用 2 个 NIC 设置互联网 VPN 和子网 DHCP 服务器不起作用

使用 2 个 NIC 设置互联网 VPN 和子网 DHCP 服务器不起作用

我的 VPN 连接到错误的 NIC 时出现问题,或者当存在两个 NIC 时它无法工作。

我的 VoIP 实体电话已被服务提供商阻止,因此我想使用运行 Ubuntu 15.04/MATE 的嵌入式系统,该系统具有两个以太网端口,以便在一个以太网端口上通过 VPN 访问互联网,在另一个以太网端口上为 VoIP 电话提供访问。

我有 eth0 连接到互联网,eth1 连接到 VoIP 电话。我已建立 DHCP 服务器,以在 eth1 上为 VoIP 电话提供服务,如下所示:

Contents of "/etc/dhcp/dhcpd.conf": 
ddns-update-style none;
option domain-name "xu4.org";
option domain-name-servers ns1.xu4.org, ns2.xu4.org;
# Set up our desired subnet:
subnet 192.168.2.0 netmask 255.255.255.0 {
        range 192.168.2.101 192.168.1.254;
        option subnet-mask 255.255.255.0;
        option broadcast-address 192.168.2.255;
        option routers 192.168.2.1;   
        option domain-name-servers 8.8.8.8;
}
default-lease-time 600;
max-lease-time 7200;
authoritative;

Contents of "/etc/network/interfaces": 
# The uplink to the internet
auto eth0
    iface eth0 inet dhcp

# Assign a static IP for this DHCP server through eth1:
auto eth1
    iface eth1 inet static
        address 192.168.2.100
        netmask 255.255.255.0
        broadcast 192.168.2.255
        # gateway 192.168.2.1                       <- removed
        up route add -host 255.255.255.255 eth1

Contents of "/etc/default/isc-dhcp-server": 
INTERFACES="eth1"

检查 DHCP 服务器是否在 eth1 上工作

$ more /var/lib/dhcp/dhcpd.leases
lease 192.168.2.101 {
    starts 4 2016/08/18 15:51:14;
    ends 4 2016/08/18 16:01:14;
    tstp 4 2016/08/18 16:01:14;
    cltt 4 2016/08/18 15:51:14;
    binding state active;
    next binding state free;
    rewind binding state free;
    hardware ethernet 7c:2f:80:9c:e0:cb;
    client-hostname "C530-IP";
}

因此看来 DHCP 正在工作,并为 VoIP 电话提供租约

然后我创建一个 VPN 连接,并使用桌面上的图标将其连接到 eth0

Network Icon->VPN Connections->Configure VPN->VPN->add
(setup gateway, username, password, use Point-to-point encryption, Name VPN1)
Network Icon->VPN Connections->Configure VPN->ethernet->eth0->Edit
(Automatically connect to VPN1 when using this connection, Automatic (DHCP))

现在,当系统启动时,默认上行连接显示为 eth1,而不是 eth0。尝试连接 VPN 失败。

网络地图如下:更新

$ route -n
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         0.0.0.0         0.0.0.0         U     50     0        0 ppp0
0.0.0.0         192.168.1.1     0.0.0.0         UG    100    0        0 eth0
173.255.160.5   192.168.1.1     255.255.255.255 UGH   0      0        0 eth0
173.255.160.129 0.0.0.0         255.255.255.255 UH    0      0        0 ppp0
173.255.160.136 0.0.0.0         255.255.255.255 UH    50     0        0 ppp0
192.168.1.0     0.0.0.0         255.255.255.0   U     100    0        0 eth0
192.168.2.0     0.0.0.0         255.255.255.0   U     0      0        0 eth1
255.255.255.255 0.0.0.0         255.255.255.255 UH    0      0        0 eth1

IP 地址如下:已更新

4: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:1e:06:30:3a:92 brd ff:ff:ff:ff:ff:ff
inet 192.168.1.194/24 brd 192.168.1.255 scope global dynamic eth0
   valid_lft 86365sec preferred_lft 86365sec
inet6 fe80::21e:6ff:fe30:3a92/64 scope link
   valid_lft forever preferred_lft forever
5: eth1: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast state DOWN group default qlen 1000
link/ether de:66:fe:fe:85:5b brd ff:ff:ff:ff:ff:ff
inet 192.168.2.1/24 brd 192.168.2.255 scope global eth1
   valid_lft forever preferred_lft forever
6: ppp0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1400 qdisc pfifo_fast state UNKNOWN group default qlen 3
link/ppp
inet 173.255.160.136 peer 173.255.160.129/32 scope global ppp0
   valid_lft forever preferred_lft forever

附加我在 /etc/sysctl.conf 中添加了以下行:net.ipv4.ip_forward=1 我还添加了以下 iptables 条目:

$ sudo iptables -t nat -I POSTROUTING 1 -o ppp0 -j MASQUERADE
$ sudo iptables -I FORWARD 1 -i ppp0 -o eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT
$ sudo iptables -I FORWARD 1 -i eth1 -o ppp0 -j ACCEPT

有问题吗?a. 有什么方法可以检查 eth0 流量是否确实通过 ppp0?我推测是因为 eth0 目的地是与 vpn 提供商相关的地址,所以情况确实如此?

b. Voip 拾取 IP 地址 192.168.2.101 和网络掩码,但网关设置为 0.0.0.0。此外,如果我尝试 ping voip,则没有响应。如何为 Voip 电话提供网关?

c. 如何检查 iptables 是否生效?

谢谢

答案1

重新阅读一下你的问题,192.168.2.1 是谁?如果你不希望你的流量通过那个方向,为什么要将他设置为 eth1 上的网关?看起来他不能让你上网。由于此网关设置为静态,因此它比你通过 DHCP 获得的 eth0 网关具有更高的优先级。

如果出于某种原因你需要它作为备份路径,请尝试增加 eth1 指标,这样它就会成为你的备份网关,你需要将其添加up ip route add default via 192.168.2.1 dev eth1 metric 150到你的 eth1 配置中/etc/network/interfaces

答案2

感谢 meccooll 的帮助。现在一切都正常了。在 dhcpd.conf 中,我重新添加了路由器行,还添加了域名服务器,因为我的手机正在寻找要连接的域名。感谢您的帮助。Lachlan

相关内容