我已经这样做了超过 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-01和WS-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/default
为INTERFACES="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
没有UG
in很重要吗?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”也可以为您提供帮助。