Jim*_*fer 3 server networking 11.10
我已经在翻新的机器上安装了 Ubuntu 11.10。我还用新的 NIC 卡更换了有缺陷的 NIC 卡,安装时识别了两个 NIC 卡。我还安装了鱿鱼作为代理服务器。当所有工作站都连接到路由器时,Squid 运行良好。然而 ... 。
当我将一个 NIC 连接到我的路由器(实时互联网连接可用),另一个 NIC 连接到我的交换机(没有任何互联网可用)时,我可以创建两个独立的网络,但我不知道如何让这两个 NIC 卡传输它们之间以及两个网络之间的数据。
我错过了什么?
@laurent 描述的脚本是不必要的,因为有一种规范的方式。您需要做的就是编辑/etc/sysctl.conf并取消注释(#在开头删除)这一行:
net.ipv4.ip_forward = 1
Run Code Online (Sandbox Code Playgroud)
然后它就已经在启动时应用了。
Ubuntu 默认禁用了 ip 转发,您需要启用它以通过您的机器路由数据包:
要启用,请以 root ( sudo su)身份输入终端:
echo 1 > /proc/sys/net/ipv4/ip_forward
Obs:不适用于 sudo
如果你想从这台机器路由互联网,你可能还需要配置 NAT。
第一个命令echo 1 ...不适用于 sudo。您必须使用sudo subefore更改为 root (因为 sudo 将以 root 身份运行 echo 1 但会尝试以您的用户身份重定向到该文件,这将不起作用)。无论如何,您总是可以检查是否有 1 和cat /proc/sys/net/ipv4/ip_forward.
Obs:这必须在每次启动时完成,以便您可以编写脚本并在其上使用 update-rc.d。
如果 eth0 是您的 Internet 连接 NIC,则 POSTROUTING 规则看起来不错。
我用于已建立和相关连接的 FORWARD 规则:
-A FORWARD -p tcp -m state -d your_network_ip.0/255.255.255.0 --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -p udp -m state -d your_network_ip.0/255.255.255.0 --state RELATED,ESTABLISHED -j ACCEPT
Run Code Online (Sandbox Code Playgroud)
#!/bin/sh
# turn ip_forward on/off
case "$1" in
'start')
echo 1 > /proc/sys/net/ipv4/ip_forward
;;
'stop')
echo 0 > /proc/sys/net/ipv4/ip_forward
;;
*)
echo "Usage: $0 { start | stop }"
;;
esac
exit 0
Run Code Online (Sandbox Code Playgroud)
您/etc/init.d使用您想要的名称(router例如)保存此脚本并使其可执行 ( sudo chmod +x /etc/init.d/router)。
要在每次重新启动时运行它,您需要使用 update-rc.d 建立启动链接:
sudo update-rc.d router defaults
Run Code Online (Sandbox Code Playgroud)
Obs:update-rc.d 消息没问题,没问题。您现在应该在 ip_forward 文件中始终为 1。
| 归档时间: |
|
| 查看次数: |
29452 次 |
| 最近记录: |