FreeBSD quick installation guide



This is a small guide that I used for quickly installing FreeBSD for Internet gates. I will update it periodically, so any comments are welcome. I don’t claim that this is the best way, it’s just my way.


1. Boot from FreeBSD installation CD

2. From Country Selection choose the US keyboard layout

3. Begin a Custom Installation

4. Enter Partition menu, choose Use Entire Disk. After that, choose Install a standart MBR

5. Choose Auto defaults when creating the partitions

6. From Distributions choose Kern-Developer

7. Press Yes when asked to install the ports collection

8. Go to Custom menu and unselect:

dict
doc

 

9. Commit all changes and wait until install finishes

10. Install packages:

pkg_add -r sudo mc nano links wget bash

 

11. Perform small server tuning. Add to /etc/make.conf:

WITHOUT_X11=yes

 

12. Upgrade FreeBSD ports collection:

portsnap fetch extract

 

13. Install screen from ports and use it:

cd /usr/ports/sysutils/screen
make install clean
cd
wget sysadmin.md/stuff/.screenrc
screen

 

14. Copy current server kernel config:

cd /usr/src/sys/i386/conf
cp GENERIC SSC.GATE

 

15. Alter kernel build options in config file SSC.GATE:

cpu             I686_CPU
ident           SSCGATE
options         DUMMYNET			# traffic shaper
options         IPFIREWALL			# firewall
options         IPDIVERT			# needed for NAT
options         IPFIREWALL_VERBOSE		# logging
options         IPFIREWALL_VERBOSE_LIMIT=500	# limit logging
options         IPFIREWALL_DEFAULT_TO_ACCEPT	# default rule to accept
options         IPFIREWALL_FORWARD		# forward packets

 

16. Compile and install kernel:

config SSC.GATE
cd ../compile/SSC.GATE
make depend && make && make install

 

17. Add to /etc/rc.conf:

firewall_enable="YES"
firewall_type="open"
firewall_logging="YES"
natd_enable="YES"
natd_interface="rl0"

 

18. Reboot

19. Configure DNS caching server. Enable named. Add to /etc/rc.conf:

named_enable="YES"

 

20. Alter /etc/namedb/named.conf:

listen-on       { 127.0.0.1; 192.168.0.1;};

 

21. Start named:

/etc/rc.d/named restart

 

22. Check if named works:

dig @192.168.0.1 sysadmin.md

 

23. Install DHCP server:

cd /usr/ports/net/isc-dhcp3-server/
make install clean

 

24. Compile DHCP with following options:

DHCP_PARANOIA
DHCP_JAIL
OPENSSL_BASE

 

25. Configure DHCP server. Create the file /usr/local/etc/dhcpd.conf with following contents:

option domain-name "srv.local";
option domain-name-servers 192.168.0.1, 205.234.170.215, 205.234.170.217;

 

default-lease-time 720000;
min-lease-time 720000;
max-lease-time 720000;

 

authoritative;

 

ddns-update-style none;

 

subnet 192.168.0.0 netmask 255.255.255.0 {
range 192.168.0.2 192.168.0.254;
option routers 192.168.0.1;
}

 

26. Add to /etc/rc.conf:

dhcpd_enable="YES"
dhcpd_conf="/usr/local/etc/dhcpd.conf"
dhcpd_ifaces="xl1"
dhcpd_withuser="dhcpd"
dhcpd_withgroup="dhcpd"
dhcpd_chuser_enable="YES"
dhcpd_chroot_enable="YES"
dhcpd_devfs_enable="YES"
dhcpd_rootdir="/var/db/dhcpd"

 

27. Start DHCP server:

/usr/local/etc/rc.d/isc-dhcpd start

 

28. Configure firewall. Create a file /etc/fw and add the following rules to it:

#!/bin/sh

 

wanip="x.x.x.x"
wanif="xl0"
lannet="192.168.0.0/24"

 

ipfw disable firewall
ipfw -f flush
ipfw -f pipe flush
ipfw -f queue flush

 

#Perform NAT
ipfw add 1000 divert natd all from any to any via $wanif
ipfw enable firewall

 

# Shaping
/sbin/ipfw pipe 1 config bw 2048Kbit/s
/sbin/ipfw queue 1 config pipe 1 weight 50 mask dst-ip 0x00000000
/sbin/ipfw add queue 1 ip from any to 192.168.0.1/24

 

29. Make /etc/fw executable:

chmod 700 /etc/fw

 

30. After that add the following lines in /etc/rc.conf:

firewall_enable="YES"
firewall_script="/etc/fw"
natd_enable="YES"
natd_program="/sbin/natd -u -n xl0"

 

fsck_y_enable="YES"
sendmail_enable="NONE"

 

31. Reboot