我有一个Ubuntu的Linux框,我想变成一个路由器。 它有2个网卡,位于i)电缆调制解调器(互联网)和ii)无线路由器(服务于内部networking)之间。 有了这个简单的设置,我已经能够得到一些距离,但似乎在下面跳动。
(the net) cable modem -> (eth3) ubuntu box (eth1) -> linksys wifi router
[确定] Ubuntu的DHCP客户端(使用eth3)可以连接到调制解调器和网上冲浪
[ok] ubuntu可以通过命令静态分配一个IP给内部网卡(eth1):
sudo ifconfig eth1 192.168.1.1 netmask 255.255.255.0 broadcast 192.168.1.255
[ok]可以安装并运行DHCP服务器。 客户端机器可以获取IP并ping ubuntu。
在此之后,事情开始出现错误:
[x]一段时间后,ubuntu eth3保持其IP地址,但不能再连接到networking。 重新启动(再次调用“dhclient”)使我重新联机。
[x] ubuntu eth1或者i)当客户端请求新的IP租约时丢失192.168.1.1 IP地址或者ii)分配192.168.1.100('/etc/dhcp3/dhcpd.conf'中networking范围的开始 – 见下文)。 我怎样才能保持这个值稳定?
在/ etc /默认/使用dhcp3-server
INTERFACES="eth1"
/etc/dhcp3/dhcpd.conf
ddns-update-style none; log-facility local7; subnet 192.168.1.0 netmask 255.255.255.0 { range 192.168.1.100 192.168.1.200; option domain-name-servers 64.71.255.198; option domain-name "frye.com"; option routers 192.168.1.1; option broadcast-address 192.168.0.255; default-lease-time 600; max-lease-time 7200; }
[x]我在将ubuntu的NAT数据包从客户端机器(eth1)传输到networking(eth3)时遇到了问题。 我试着用下面的命令设置表(我也尝试在命令中反转NIC)。 '/etc/sysctl.conf'(和对应的'/ proc / sys / net / ipv4 / ip_forward')的期望值为'1'。 从eth1 – > eth3转发数据包的正确咒语是什么?
sudo iptables --table nat --append POSTROUTING --out-interface eth3 -j MASQUERADE sudo iptables --append FORWARD --in-interface eth1 -j ACCEPT
我确定这两个点上都有一些configuration魔法。
谢谢你的帮助
蒂姆
一些随机提示:
不要直接使用ifconfig来configuration你的网卡。 相反,把configuration到/etc/network/interfaces ,例如:
auto lo iface lo inet loopback auto eth3 iface eth3 inet dhcp auto eth1 iface eth1 inet static address 192.168.1.1 netmask 255.255.255.0
您的/etc/dhcp3/dhcpd.conf似乎在broadcast-address有一个错字(应该是192.168.1.25.5)。
你的iptables MASQUERADE规则应该更具体。 它可能是匹配不应该NAT的数据包。 我会为内部networking添加一个源匹配,如下所示:
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth3 -j MASQUERADE
只要FORWARD链上的策略是ACCEPT(这是默认值),就不需要FORWARD链上的接受规则。