将 Ubuntu 机器设置为路由器时出现问题

将 Ubuntu 机器设置为路由器时出现问题

我已经这样做了超过 24 小时,这是我到目前为止所得到的。

  • 我有一个运行版本 14.04.2.amd64 的 Ubuntu 服务器,名为SV-01
  • SV-01有两个 NIC。以太币1用于外部网络(先到路由器,然后到互联网)。以太币0用于内部网络(转到交换机,然后是我的计算机/设备)
  • 目前,我有一个 ubuntu 工作站,运行 14.04.2 LTS(如果我没记错的话,是 64 位),名为WS-01
  • 目前,我有一台 Windows 7 64 位工作站,名为WS-02
  • 我想WS-01WS-02动态获取他们的IPSV-01充当 DHCP 服务器
  • 使用本文SV-01:/etc/network/interfaces,我这样设置

    auto lo
    iface lo inet loopback
    
    #Internet NIC
    auto eth1
            iface eth1 inet static
            address 192.168.0.19
            netmask 255.255.255.0
            broadcast 192.168.0.255
            network 192.168.0.0
            gateway 192.168.0.1
    
    #Internal NIC
    auto eth0
            iface eth0 inet static
            address 192.168.66.254
            netmask 255.255.255.0
            broadcast 192.168.66.255
            network 192.168.0.0
    
  • 使用本文,我启用了IP转发和msqaurading

    #Script for setting up machine as a router
    #Downloaded from
    #https://help.ubuntu.com/community/Router
    
    echo -e "\n\nLoading simple rc.firewall-iptables version $FWVER..\n"
    DEPMOD=/sbin/depmod
    MODPROBE=/sbin/modprobe
    
    EXTIF="eth1"
    INTIF="eth0"
    #INTIF2="eth0"
    echo "   External Interface:  $EXTIF"
    echo "   Internal Interface:  $INTIF"
    
    #======================================================================
    #== No editing beyond this line is required for initial MASQ testing ==
    echo -en "   loading modules: "
    echo "  - Verifying that all kernel modules are ok"
    $DEPMOD -a
    echo "----------------------------------------------------------------------"
    echo -en "ip_tables, "
    $MODPROBE ip_tables
    echo -en "nf_conntrack, "
    $MODPROBE nf_conntrack
    echo -en "nf_conntrack_ftp, "
    $MODPROBE nf_conntrack_ftp
    echo -en "nf_conntrack_irc, "
    $MODPROBE nf_conntrack_irc
    echo -en "iptable_nat, "
    $MODPROBE iptable_nat
    echo -en "nf_nat_ftp, "
    $MODPROBE nf_nat_ftp
    echo "----------------------------------------------------------------------"
    echo -e "   Done loading modules.\n"
    echo "   Enabling forwarding.."
    echo "1" > /proc/sys/net/ipv4/ip_forward
    echo "   Enabling DynamicAddr.."
    echo "1" > /proc/sys/net/ipv4/ip_dynaddr
    echo "   Clearing any existing rules and setting default policy.."
    
    iptables-restore <<-EOF
    *nat
    -A POSTROUTING -o "$EXTIF" -j MASQUERADE
    COMMIT
    *filter
    :INPUT ACCEPT [0:0]
    :FORWARD DROP [0:0]
    :OUTPUT ACCEPT [0:0]
    -A FORWARD -i "$EXTIF" -o "$INTIF" -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
    -A FORWARD -i "$INTIF" -o "$EXTIF" -j ACCEPT
    -A FORWARD -j LOG
    COMMIT
    EOF
    
    echo -e "\nrc.firewall-iptables v$FWVER done.\n"
    
  • 使用这个网站,我设置SV-01:/etc/default/isc-dhcp-server/defaultINTERFACES="eth0"

  • 使用这个网站,我设置SV-01:/etc/dhcp/dhcpd.conf

    ddns-update-style none;
    
    option domain-name "example.org";
    option domain-name-servers ns1.example.org, ns2.example.org;
    
    default-lease-time 600;
    max-lease-time 7200;
    
    log-facility local7;
    
    host ws-01 {
            hardware ethernet a0:d3:c1:1f:6f:1e;
            fixed-address 192.168.66.1;
    
  • 最后,我有以下内容WS-01:/etc/network/interfaces

    auto lo
        iface lo inet loopback
    auto eth0
        iface eth0 inet dhcp
    

问题是如果我发出sudo ifdown eth0 && sudo ifup eth0命令WS-01,永远找不到 dhcp 服务器。sudo dhclient返回空白。cat /var/lib/dhcp/dhclient.eth0.leases显示 的 ISP 路由器 IP 192.168.0.1

有人请帮助我,因为我遇到了砖墙。

编辑

SV-01 的输出: route -n:

Destination   Gateway      Genmask        Flags  Metric  Ref  Use  Iface
0.0.0.0       192.168.0.1  0.0.0.0        UG     0       0    0    eth1
192.168.0.0   0.0.0.0      255.255.255.0  U      0       0    0    eth1
192.168.66.0  0.0.0.0      255.255.255.0  U      0       0    0    eth0

WS-01 的输出: route -n:

Destination   Gateway      Genmask        Flags  Metric  Ref  Use  Iface
192.168.66.0  0.0.0.0      255.255.255.0  U      0       0    0    eth0

没有UGin很重要吗?WS-01

答案1

我不知道这是否是为了增强您对 Linux 路由的了解,但如果不是,我建议使用 OpenWrt 来完成这项工作。

OpenWrt 已经具有接口管理、DHCP 服务器、防火墙、端口转发、IPv6 支持和其他服务,所有这些都可以通过 CLI 或 Web 界面获得。

OpenWrt 可以安装在便宜的机器、许多路由器(也许是你的!)和虚拟机上。使用虚拟机作为路由器设备也是将可能运行多个服务的主机与 Internet 隔离的好方法。

您可以使用 libvirt 虚拟化 OpenWrt 路由器,将 WAN 网卡直接映射到 VM 内,并将 LAN 卡桥接为 VM 中的另一张卡。

OpenWrt 的下载地址为https://downloads.openwrt.org/barrier_breaker/14.07/x86/kvm_guest/这个版本是从 libvirt 启动的。

除此之外,如果您的 DHCP 服务器没有像 Celada 在评论中所说的那样启动,您应该尝试使用“dhcpd -d -f -cf /etc/dhcp/dhcpd.conf”在前台启动 DHCP,以查看输出。

在另一个终端中使用“tail -f /var/log/syslog”也可以为您提供帮助。

相关内容