中科院云平台架构师,专注于数字化、智能化,技术方向:云、Linux内核、AI、MES/ERP/CRM/OA、物联网、传感器、大数据、ML、微服务。
分类: LINUX
2015-03-04 20:05:13
用Debian可以架设一个全能的网关,它可以承担NAT、mail、DHCP、DNS cache、HTTP proxy cache、CVS、NFS的工作以及提供面向家庭LAN系统的Samba services。有关这方面网络配置的讨论可参阅。
LAN按下面方法分段使用IP地址以避免Internet上的IP地址冲突。
Class A: 10.0.0.0 with mask 255.0.0.0 Class B: 172.16.0.0 - 172.31.0.0 with mask 255.255.0.0 Class C: 192.168.0.0 - 192.168.255.0 with mask 255.255.255.0
在Debian中/etc/network/interfaces文件用于IP设置。
举个例子,假如某台机器的eth0使用DHCP动态IP地址连接Internet,eth1连接LAN,则其/etc/network/interfaces的设置如下(适用于Woody及后继版本)
auto lo iface lo inet loopback auto eth0 iface eth0 inet dhcp auto eth1 iface eth1 inet static address 192.168.1.1 network 192.168.1.0 netmask 255.255.255.0 broadcast 192.168.1.255
修改了/etc/network/interfaces后,可执行下面的命令使其生效:
# /etc/init.d/networking restart
注意:在Woody及其后继版本中的/etc/network/interfaces文件不适用于Potato。(同样的差异会出现在Sarte和Woody之间。)
如果系统使用PCMCIA NIC,则在Potato系统中需要设置/etc/pcmcia/network.opts而不是interfaces,在Woody就不必了,系统已解决了这个问题。
想检查设置结果可查看下列命令输出:
# ifconfig # cat /proc/pci # cat /proc/interrupts # dmesg | more
有时,DSL(PPPoE)连接存在MTU问题,参阅。如果存在无法访问某些站点的问题,参阅。
典型的软件集合:
# apt-get install nfs samba dhcpd dhcp-client bind squid procmail fetchmail # apt-get install ssh cvs
检查下列文件:
/etc/init.d/dhcpd (edit to serve only LAN = eth1) /etc/host.allow (ALL: 192.168.0.0/16 127.0.0.0/8) for NFS /etc/exports (Need this for NFS) /etc/bind/db.192.168.1 (add) /etc/bind/db.lan (add) /etc/bind/named.conf (edit) /etc/resolv.conf (edit) /etc/hosts /etc/dhcpd.conf (edit for LAN = eth1) /etc/dhclient.conf (edit to force local DNS) /etc/samba/smb.conf /etc/exim/exim.conf /etc/mailname /etc/aliases /etc/squid.conf (add all LAN host IPs as allowed)
bind创建一个本地的cache DNS server并且changes DNS to localhost。检查/etc/resolv.conf:
nameserver 127.0.0.1 search lan.aokiconsulting.com
在Linux 2.4及其后继版本中加入了netfilter/iptables项目,作为一个防火墙子系统。参阅,那儿有许多有关其配置的讨论和解释。
Netfilter内建了5条链路来处理数据包,它们分别是:PREROUTING、INPUT、FORWARD、OUTPUT和POSTROUTING:
routing decision IN ------> PRE ---> ------> FORWARD -----> ----> POST -----> OUT interface ROUTING \ filter / ROUTING interface DNAT | tracking ^ SNAT REDIRECT | | MASQUERADE v | INPUT OUTPUT | filter ^ filter,DNAT v | \--> Local Process --/ user-space programs
数据包在每条内建的链路中传输时按如下过滤表中的规则进行处理。
Firewall rules have several targets:
--to-source ipaddr[-ipaddr][:port-port]
--to-ports port[-port]
--to-destination ipaddr[-ipaddr][:port-port]
--to-ports port[-port]
iptables的基本命令有:
iptables -N chain # create a chain iptables -A chain \ # add rule to chain -t table \ # use table (filter, nat, mangle) -p protocol \ # tcp, udp, icmp, or all, -s source-address[/mask] \ --sport port[:port] \ # source port if -p is tcp or udp -d destination-address[/mask] \ --dport port[:port] \ # dest. port if -p is tcp or udp -j target \ # what to do if match -i in-interface-name \ # for INPUT, FORWARD, PREROUTING -o out-interface-name # for FORWARD, OUTPUT, POSTROUTING
一个运用IP伪装(NAT)的网关可实现LAN内的机器通过共享一个单独的可访问外网的IP地址来访问Internet资源。
# apt-get install ipmasq
执行样例规则来加强ipmasq的保护机制。 参阅/usr/share/doc/ipmasq/examples/stronger/README。对于使用2.4版内核镜像的Debian,请确认加载了相应的模块。有关的必要设置参阅。
对于使用2.2版内核镜像的Debian,可按下面的方法编辑/etc/masq/rules中的Z92timeouts.rul文件,以保证可长时间连接远程站点(如发送大容量的email,等):
# tcp, tcp-fin, udp # 2hr, 10 sec, 160 sec - default # 1 day, 10 min, 10 min - longer example $IPCHAINS -M -S 86400 600 600
同样,如果是通过PCMCIA NIC访问网络,ipmasq需要从/etc/pcmcia/network.opts启动。参阅/usr/share/doc/ipmasq/ipmasq.txt.gz.
假设你将一台笔记本电脑重新配置成可连入其它的LAN环境,而你不想再重新配置用户邮件代理,即:想直接用原来的配置收发邮件。
使用iptables命令向网关机器中加入下面的规则,就可以实现重定向与网关机器的SMTP连接。
# iptables -t nat -A PREROUTING -s 192.168.1.0/24 -j REDIRECT \ -p tcp --dport smtp --to-port 25 # smtp=25, INPUT is open
想使用更完备的重定向规则集,建议安装ipmasq软件包,并在/etc/ipmasq/rules/目录中添加文件。
[FIXME] 路由策略(by Phil Brutsche ): 详情参阅。Traffic control (tc) 也很有趣。
Environment:
eth0: 192.168.1.2/24; gateway 192.168.1.1 eth1: 10.0.0.2/24; gateway 10.0.0.1 No masquerading on this machine.
Special magic:
[FIXME]
我没亲自做过。如何利用自动拔号特性使拔号连接保持高速?如果你知道请发补丁我:)