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


16

我当前的系统设置是Ubuntu 14.04 Desktop 64 Bit,我正在使用公用IP通过路由器使用Internet

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

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

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

Answers:


15
  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.x.x.x 
    netmask  x.x.x.x 
    gateway x.x.x.x
    
    auto eth1
    iface eth1 inet static 
    address 192.168.0.1
    netmask x.x.x.x
    
  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接口)


按照建议进行了所有操作...但是,如果我编辑/ etc / network / interfaces并重新启动服务,它将自动连接到eth1,并且不会通过eth0连接到Internet。如果我使用GUI模式编辑connectio,它将使用eth0连接到Internet。现在的问题是我无法使用IP 192.168.0.5/nm.255.255.255.0/gw.192.168.0.1将客户端计算机连接到Internet。有什么建议吗?
Santi Varghese,2015年

3
我要添加的是,在更改行之后net.ipv4.ip forward=1,您要运行sudo sysctl -p /etc/sysctl.conf以使新值生效。
塞缪尔·李

2
在第5步的最后两行中,您仍然可以交换设备,并且没有提及默认安全性(即,转发应具有DROP策略)。
chreekat

3

@chreekat的评论是正确的,因为在@Anbu的答案的第5步中交换了以太网适配器,并且如图所示(截至2017年2月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

0

这就是我使用的,始终可以正常工作。各种教程的组合。在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"

保存更改。

我的SSH在端口49870上,因此我也允许ufw接受该端口上的连接:

sudo ufw allow 49870

步骤F-不要忘记启用ufw

sudo ufw enable

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.