资源: __ __
PC A: Ubuntu 12.04 LTS,两块网卡,分别为eth0和eth1,使用eth0连接 互联网 __ __
PC B: Windows 7, 一块网卡,为eth0 __ __
目标: __ __
使得B通过A连接互联网(IPv4),即实现A为路由器的功能 __ __
步骤: __ __
PC A: __ __
(0)假设eth0已经配置好,PC可以通过eth0连接互联网 ,配置eth1为,如/etc/network/interface所示 __ __
auto lo __ __
iface lo inet loopback __ __
auto eth0 __ __
iface eth0 inet static __ __
address 172.16.10.65 __ __
gateway 172.16.10.254 __ __
netmask 255.255.0.0 __ __
auto eth1 __ __
iface eth1 inet static __ __
address 192.168.6.1 __ __
netmask 255.255.255.0 __ __
network 192.168.6.0 __ __
broadcast 192.168.6.255 __ __
当然,我是删除了network-manager, network-manager-gnome的才可以通过配置interface这个文件来设置网络的 __ __
你也可以通过network-manager来配置。DNS服务 器可以通过/etc/resolv.conf来配置: __ __
nameserver 168.95.1.1 #这是我的DNS服务器,你可以配置成你可以访问的,如8.8. 8.8 __ __
重启你的网络服务或者重启PC A,以上设置就可以生效。 __ __
(1)Linux系统自身就有IPv4包转发的功能,在/ etc/sysctl.conf进行配置, __ __
打开IPv4转发功能: __ __
net.ipv4.ip_forward=1 __ __
输入以下命令使得上面的设置生效(或者重启电脑): __ __
sudo sysctl -p __ __
(2)通过iptable实现IPv4包转发 __ __
sudo iptables -t nat -A POSTROUTING -s192.168.6.0/24 -o eth0 -j MASQUERADE __ __
可以通过iptables-save将iptables rule都保存到文件中,在通过iptables- restore读取rule到iptables中,
可以自己写一个脚本来实现iptables自动的载入rule, 或者找到iptables的配置文件来修改 __ __
PC B __ __
(0)将PC B的eth0与PC A的eth1用网线直接连接,配置PC B的eth0为: __ __
IP ADDRESS : 192.168.6.101 __ __
SUBNET MASK: 255.255.255.0 __ __
GATE WAY : 192.168.1.1i __ __
DNS Server : 168.95.1.1 __ __
这样PC B就可以通过PC A连接互联网了 __ __
增强配置: __ __
路由器都可以自动给PC分配IP,而不需要手动配置IP, 这是通过DHCP来实现的。如果也要实现相同的功能,那 __ __
就需要在PC A上搭建一个DHCP服务器。 __ __
(0)安装DHCP服务器 __ __
sudo apt-get install isc-dhcp-common isc-dhcp-server __ __
(1)配置DHCP __ __
(i)修改/etc/default/isc-dhcp- server __ __
INTERFACES=“eth1” __ __
(ii)修改/etc/dhcp/dhcpd.conf __ __
subnet 192.168.6.0 netmask 255.255.255.0 { __ __
range 192.168.6.100 192.168.6.200; __ __
option routers 192.168.6.1; __ __
option broadcast-address 192.168.6.255; __ __
option domain-name-servers 168.95.1.1; __ __
default-lease-time 600; __ __
max-lease-time 7200; __ __
} __ __
(2)PC B可以自动获取IP了,如果在PC A的eth1上接一个switch,接在switch上所有的P C都可以获取IP了