Ubuntu 14.04作为网关/路由器和防火墙

我目前的系统设置是Ubuntu 14.04 Desktop 64 Bit,我使用公共IP从路由器使用Internet

eth0 - WAN Public IP 182.xxx eth1 - LAN private IP 192.168.0.1 

现在我想使用我的系统作为Gateway将此连接分发到其他计算机,我的系统IP是192.168.0.1 ,网络上的其他计算机使用静态IP 192.168.0.2192.168.0.255作为static和/或DHCP

此外,我想在我的系统上设置防火墙,以便我可以监视和控制网络上其他系统的流量。

  1. 按Ctrl + Alt + T打开终端

  2. 输入以下命令编辑interfaces文件:

     sudo vim /etc/network/interfaces 
  3. 使用以下行编辑文件:(添加netmaskgateway

     auto lo iface lo inet loopback auto eth0 iface eth0 inet static address 182.xxx netmask xxxx gateway xxxx auto eth1 iface eth1 inet static address 192.168.0.1 netmask xxxx 
  4. 现在编辑/etc/sysctl.conf并取消注释:

     # net.ipv4.ip_forward=1 

    所以它写道:

     net.ipv4.ip_forward=1 

    并通过输入保存

    sudo sysctl -p /etc/sysctl.conf

  5. 要启用IP伪装,请在终端中输入以下命令集:

     sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE sudo iptables -A FORWARD -i eth1 -o eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT sudo iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT 

更新:修复奇怪的“–state”导致命令失败并修复nat MASQUERADE到eth0(wan界面)

@ chreekat的评论是正确的,在@Anbu的答案的第5步中交换了以太网适配器,如图所示(截至2017-02-21)创建了一个巨大的安全漏洞,允许公共网络上的任何人不受限制地访问私有网络。

步骤5的校正配置如下所示。

操作原理:(规则#2)当且仅当进入的公共数据包与主机建立的对话相关时,才接受从公共网络进入的数据包(eth0)转发到专用网络(eth1)。私人网络。 (规则#3)接受从专用网络(eth1)进入的所有数据包并将它们转发到公共网络(eth0)。

 sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE sudo iptables -A FORWARD -i eth0 -o eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT sudo iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT 

这是我用的,总是很好用。 各种教程的组合。 也在Ubuntu 16.04LTS上测试过。

步骤A–确保已安装ufw

 sudo apt-get install ufw 

步骤B – 配置网络接口

 sudo nano /etc/network/interfaces 

配置interfaces文件如下所示:

 # This file describes the network interfaces available on your system # and how to activate them. For more information, see interfaces(5). source /etc/network/interfaces.d/* # The loopback network interface auto lo iface lo inet loopback # The WAN primary network interface iface eth0 inet static address 182.xxx.xxx.xxx netmask xxx.xxx.xxx.xxx gateway xxx.xxx.xxx.xxx #LAN side interface auto eth1 iface eth1 inet static address 192.168.0.1 netmask 255.255.255.0 network 192.168.0.0 broadcast 192.168.0.255 address 192.168.0.1 

通过从nano或您喜欢的任何其他编辑器中选择CTRL-X来保存文件。

步骤C – 允许IP转发 。 设置转发。 编辑文件/etc/sysctl.conf

 sudo nano /etc/sysctl.conf 

删除此行# net.ipv4.ip_forward=1上的注释,使其成为net.ipv4.ip_forward=1保存更改并转到下一步。

步骤D – 伪装/转发规则

 sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE sudo iptables -A FORWARD -i eth0 -o eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT sudo iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT 

坚持iptables的变化

 sudo su sudo iptables-save > /etc/iptables.rules sudo nano /etc/network/if-pre-up.d/iptables 

输入此内容:

 #!/bin/sh iptables-restore < /etc/iptables.rules exit 0 

保存更改然后编辑/创建下一个iptables文件

 sudo nano /etc/network/if-post-down.d/iptables 

输入此内容:

 #!/bin/sh iptables-save -c > /etc/iptables.rules if [ -f /etc/iptables.rules ]; then iptables-restore < /etc/iptables.rules fi exit 0 

保存更改。 使两个文件都可执行

 sudo chmod +x /etc/network/if-post-down.d/iptables sudo chmod +x /etc/network/if-pre-up.d/iptables 

步骤E - 使用ufw配置完成

 sudo nano /etc/default/ufw 

更改参数转发策略以接受

 DEFAULT_FORWARD_POLICY="ACCEPT" 

保存更改。

我在端口49870上有SSH,所以我也允许ufw接受该端口上的连接:

 sudo ufw allow 49870 

步骤F - 不要忘记启用ufw

 sudo ufw enable 

在此阶段,只需重新启动系统即可。 然后所有LAN设备都可以将其用作主网关。 另外, ufw管理防火墙设置非常方便。