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.2和 192.168.0.255 as static和/或DHCP。

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

Answers:


15
  1. 打开一个终端Ctrl+ Alt+T

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

    sudo vim /etc/network/interfaces
    
  3. 使用以下几行编辑文件:(添加netmask和gateway)

    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.